FreeRDP
Loading...
Searching...
No Matches
include/winpr/pipe.h
1
20#ifndef WINPR_PIPE_H
21#define WINPR_PIPE_H
22
23#include <winpr/file.h>
24#include <winpr/winpr.h>
25#include <winpr/error.h>
26#include <winpr/handle.h>
27#include <winpr/wtypes.h>
28
29#ifndef _WIN32
30
31#define PIPE_UNLIMITED_INSTANCES 0xFF
32
33#define PIPE_ACCESS_INBOUND 0x00000001
34#define PIPE_ACCESS_OUTBOUND 0x00000002
35#define PIPE_ACCESS_DUPLEX 0x00000003
36
37#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000
38#define FILE_FLAG_WRITE_THROUGH 0x80000000
39#define FILE_FLAG_OVERLAPPED 0x40000000
40
41#define PIPE_CLIENT_END 0x00000000
42#define PIPE_SERVER_END 0x00000001
43
44#define PIPE_TYPE_BYTE 0x00000000
45#define PIPE_TYPE_MESSAGE 0x00000004
46
47#define PIPE_READMODE_BYTE 0x00000000
48#define PIPE_READMODE_MESSAGE 0x00000002
49
50#define PIPE_WAIT 0x00000000
51#define PIPE_NOWAIT 0x00000001
52
53#define PIPE_ACCEPT_REMOTE_CLIENTS 0x00000000
54#define PIPE_REJECT_REMOTE_CLIENTS 0x00000008
55
56#define NMPWAIT_USE_DEFAULT_WAIT 0x00000000
57#define NMPWAIT_NOWAIT 0x00000001
58#define NMPWAIT_WAIT_FOREVER 0xFFFFFFFF
59
60#ifdef __cplusplus
61extern "C"
62{
63#endif
64
69 WINPR_ATTR_NODISCARD
70 WINPR_API BOOL CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe,
71 LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize);
72
77 WINPR_ATTR_MALLOC(CloseHandle, 1)
78 WINPR_API HANDLE CreateNamedPipeA(LPCSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode,
79 DWORD nMaxInstances, DWORD nOutBufferSize,
80 DWORD nInBufferSize, DWORD nDefaultTimeOut,
81 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
82
83 WINPR_ATTR_MALLOC(CloseHandle, 1)
84 WINPR_API HANDLE CreateNamedPipeW(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode,
85 DWORD nMaxInstances, DWORD nOutBufferSize,
86 DWORD nInBufferSize, DWORD nDefaultTimeOut,
87 LPSECURITY_ATTRIBUTES lpSecurityAttributes);
88
89 WINPR_ATTR_NODISCARD
90 WINPR_API BOOL ConnectNamedPipe(HANDLE hNamedPipe, LPOVERLAPPED lpOverlapped);
91
92 WINPR_ATTR_NODISCARD
93 WINPR_API BOOL DisconnectNamedPipe(HANDLE hNamedPipe);
94
95 WINPR_ATTR_NODISCARD
96 WINPR_API BOOL PeekNamedPipe(HANDLE hNamedPipe, LPVOID lpBuffer, DWORD nBufferSize,
97 LPDWORD lpBytesRead, LPDWORD lpTotalBytesAvail,
98 LPDWORD lpBytesLeftThisMessage);
99
100 WINPR_ATTR_NODISCARD
101 WINPR_API BOOL TransactNamedPipe(HANDLE hNamedPipe, LPVOID lpInBuffer, DWORD nInBufferSize,
102 LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead,
103 LPOVERLAPPED lpOverlapped);
104
105 WINPR_ATTR_NODISCARD
106 WINPR_API BOOL WaitNamedPipeA(LPCSTR lpNamedPipeName, DWORD nTimeOut);
107
108 WINPR_ATTR_NODISCARD
109 WINPR_API BOOL WaitNamedPipeW(LPCWSTR lpNamedPipeName, DWORD nTimeOut);
110
111 WINPR_ATTR_NODISCARD
112 WINPR_API BOOL SetNamedPipeHandleState(HANDLE hNamedPipe, LPDWORD lpMode,
113 LPDWORD lpMaxCollectionCount,
114 LPDWORD lpCollectDataTimeout);
115
116 WINPR_ATTR_NODISCARD
117 WINPR_API BOOL ImpersonateNamedPipeClient(HANDLE hNamedPipe);
118
119 WINPR_ATTR_NODISCARD
120 WINPR_API BOOL GetNamedPipeClientComputerNameA(HANDLE Pipe, LPCSTR ClientComputerName,
121 ULONG ClientComputerNameLength);
122
123 WINPR_ATTR_NODISCARD
124 WINPR_API BOOL GetNamedPipeClientComputerNameW(HANDLE Pipe, LPCWSTR ClientComputerName,
125 ULONG ClientComputerNameLength);
126
127#ifdef UNICODE
128#define CreateNamedPipe CreateNamedPipeW
129#define WaitNamedPipe WaitNamedPipeW
130#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameW
131#else
132#define CreateNamedPipe CreateNamedPipeA
133#define WaitNamedPipe WaitNamedPipeA
134#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameA
135#endif
136
137#ifdef __cplusplus
138}
139#endif
140
141#endif
142
143#endif /* WINPR_PIPE_H */