1 // Copyright © 2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, ULONG};
8 use um::minwinbase::{LPOVERLAPPED, LPSECURITY_ATTRIBUTES};
9 use um::winnt::{HANDLE, LPCWSTR, LPWSTR, PHANDLE};
10 extern "system" {
CreatePipe( hReadPipe: PHANDLE, hWritePipe: PHANDLE, lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD, ) -> BOOL11     pub fn CreatePipe(
12         hReadPipe: PHANDLE,
13         hWritePipe: PHANDLE,
14         lpPipeAttributes: LPSECURITY_ATTRIBUTES,
15         nSize: DWORD,
16     ) -> BOOL;
ConnectNamedPipe( hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED, ) -> BOOL17     pub fn ConnectNamedPipe(
18         hNamedPipe: HANDLE,
19         lpOverlapped: LPOVERLAPPED,
20     ) -> BOOL;
DisconnectNamedPipe( hNamedPipe: HANDLE, ) -> BOOL21     pub fn DisconnectNamedPipe(
22         hNamedPipe: HANDLE,
23     ) -> BOOL;
SetNamedPipeHandleState( hNamedPipe: HANDLE, lpMode: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, ) -> BOOL24     pub fn SetNamedPipeHandleState(
25         hNamedPipe: HANDLE,
26         lpMode: LPDWORD,
27         lpMaxCollectionCount: LPDWORD,
28         lpCollectDataTimeout: LPDWORD,
29     ) -> BOOL;
PeekNamedPipe( hNamedPipe: HANDLE, lpBuffer: LPVOID, nBufferSize: DWORD, lpBytesRead: LPDWORD, lpTotalBytesAvail: LPDWORD, lpBytesLeftThisMessage: LPDWORD, ) -> BOOL30     pub fn PeekNamedPipe(
31         hNamedPipe: HANDLE,
32         lpBuffer: LPVOID,
33         nBufferSize: DWORD,
34         lpBytesRead: LPDWORD,
35         lpTotalBytesAvail: LPDWORD,
36         lpBytesLeftThisMessage: LPDWORD,
37     ) -> BOOL;
TransactNamedPipe( hNamedPipe: HANDLE, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, lpOverlapped: LPOVERLAPPED, ) -> BOOL38     pub fn TransactNamedPipe(
39         hNamedPipe: HANDLE,
40         lpInBuffer: LPVOID,
41         nInBufferSize: DWORD,
42         lpOutBuffer: LPVOID,
43         nOutBufferSize: DWORD,
44         lpBytesRead: LPDWORD,
45         lpOverlapped: LPOVERLAPPED,
46     ) -> BOOL;
CreateNamedPipeW( lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, ) -> HANDLE47     pub fn CreateNamedPipeW(
48         lpName: LPCWSTR,
49         dwOpenMode: DWORD,
50         dwPipeMode: DWORD,
51         nMaxInstances: DWORD,
52         nOutBufferSize: DWORD,
53         nInBufferSize: DWORD,
54         nDefaultTimeOut: DWORD,
55         lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
56     ) -> HANDLE;
WaitNamedPipeW( lpNamedPipeName: LPCWSTR, nTimeOut: DWORD, ) -> BOOL57     pub fn WaitNamedPipeW(
58         lpNamedPipeName: LPCWSTR,
59         nTimeOut: DWORD,
60     ) -> BOOL;
GetNamedPipeClientComputerNameW( Pipe: HANDLE, ClientComputerName: LPWSTR, ClientComputerNameLength: ULONG, ) -> BOOL61     pub fn GetNamedPipeClientComputerNameW(
62         Pipe: HANDLE,
63         ClientComputerName: LPWSTR,
64         ClientComputerNameLength: ULONG,
65     ) -> BOOL;
ImpersonateNamedPipeClient( hNamedPipe: HANDLE, ) -> BOOL66     pub fn ImpersonateNamedPipeClient(
67         hNamedPipe: HANDLE,
68     ) -> BOOL;
GetNamedPipeInfo( hNamedPipe: HANDLE, lpFlags: LPDWORD, lpOutBufferSize: LPDWORD, lpInBufferSize: LPDWORD, lpMaxInstances: LPDWORD, ) -> BOOL69     pub fn GetNamedPipeInfo(
70         hNamedPipe: HANDLE,
71         lpFlags: LPDWORD,
72         lpOutBufferSize: LPDWORD,
73         lpInBufferSize: LPDWORD,
74         lpMaxInstances: LPDWORD,
75     ) -> BOOL;
GetNamedPipeHandleStateW( hNamedPipe: HANDLE, lpState: LPDWORD, lpCurInstances: LPDWORD, lpMaxCollectionCount: LPDWORD, lpCollectDataTimeout: LPDWORD, lpUserName: LPWSTR, nMaxUserNameSize: DWORD, ) -> BOOL76     pub fn GetNamedPipeHandleStateW(
77         hNamedPipe: HANDLE,
78         lpState: LPDWORD,
79         lpCurInstances: LPDWORD,
80         lpMaxCollectionCount: LPDWORD,
81         lpCollectDataTimeout: LPDWORD,
82         lpUserName: LPWSTR,
83         nMaxUserNameSize: DWORD,
84     ) -> BOOL;
CallNamedPipeW( lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID, nInBufferSize: DWORD, lpOutBuffer: LPVOID, nOutBufferSize: DWORD, lpBytesRead: LPDWORD, nTimeOut: DWORD, ) -> BOOL85     pub fn CallNamedPipeW(
86         lpNamedPipeName: LPCWSTR,
87         lpInBuffer: LPVOID,
88         nInBufferSize: DWORD,
89         lpOutBuffer: LPVOID,
90         nOutBufferSize: DWORD,
91         lpBytesRead: LPDWORD,
92         nTimeOut: DWORD,
93     ) -> BOOL;
94 }
95