2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Winsock 2 DLL
4 * FILE: include/wsahelp.h
5 * PURPOSE: Header file for the WinSock 2 DLL
6 * and WinSock 2 Helper DLLs
16 #endif /* __cplusplus */
18 #define WSH_NOTIFY_BIND 0x00000001
19 #define WSH_NOTIFY_LISTEN 0x00000002
20 #define WSH_NOTIFY_CONNECT 0x00000004
21 #define WSH_NOTIFY_ACCEPT 0x00000008
22 #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010
23 #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020
24 #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040
25 #define WSH_NOTIFY_CLOSE 0x00000080
26 #define WSH_NOTIFY_CONNECT_ERROR 0x00000100
28 #define SOL_INTERNAL 0xFFFE
32 typedef enum _SOCKADDR_ADDRESS_INFO {
33 SockaddrAddressInfoNormal,
34 SockaddrAddressInfoWildcard,
35 SockaddrAddressInfoBroadcast,
36 SockaddrAddressInfoLoopback
37 } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;
39 typedef enum _SOCKADDR_ENDPOINT_INFO {
40 SockaddrEndpointInfoNormal,
41 SockaddrEndpointInfoWildcard,
42 SockaddrEndpointInfoReserved,
43 } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;
46 typedef struct _WINSOCK_MAPPING {
54 } WINSOCK_MAPPING, *PWINSOCK_MAPPING;
57 typedef struct _SOCKADDR_INFO {
58 SOCKADDR_ADDRESS_INFO AddressInfo;
59 SOCKADDR_ENDPOINT_INFO EndpointInfo;
60 } SOCKADDR_INFO, *PSOCKADDR_INFO;
66 IN LPSOCKADDR Address,
68 IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
69 OUT LPWSTR AddressString,
70 IN OUT LPDWORD AddressStringLength);
75 IN LPINT lpiProtocols OPTIONAL,
76 IN LPWSTR lpTransportKeyName,
77 IN OUT LPVOID lpProtocolBuffer,
78 IN OUT LPDWORD lpdwBufferLength);
82 WSHGetBroadcastSockaddr(
83 IN PVOID HelperDllSocketContext,
84 OUT PSOCKADDR Sockaddr,
85 OUT PINT SockaddrLength);
90 IN LPWSTR ProviderName,
91 OUT LPGUID ProviderGuid);
96 IN PSOCKADDR Sockaddr,
97 IN DWORD SockaddrLength,
98 OUT PSOCKADDR_INFO SockaddrInfo);
102 WSHGetSocketInformation(
103 IN PVOID HelperDllSocketContext,
104 IN SOCKET SocketHandle,
105 IN HANDLE TdiAddressObjectHandle,
106 IN HANDLE TdiConnectionObjectHandle,
109 OUT PCHAR OptionValue,
110 OUT INT OptionLength);
114 WSHGetWildcardSockaddr(
115 IN PVOID HelperDllSocketContext,
116 OUT PSOCKADDR Sockaddr,
117 OUT PINT SockaddrLength);
121 WSHGetWinsockMapping(
122 OUT PWINSOCK_MAPPING Mapping,
123 IN DWORD MappingLength);
127 WSHGetWSAProtocolInfo(
128 IN LPWSTR ProviderName,
129 OUT LPWSAPROTOCOL_INFOW *ProtocolInfo,
130 OUT LPDWORD ProtocolInfoEntries);
135 IN PVOID HelperDllSocketContext,
136 IN SOCKET SocketHandle,
137 IN HANDLE TdiAddressObjectHandle,
138 IN HANDLE TdiConnectionObjectHandle,
139 IN DWORD IoControlCode,
140 IN LPVOID InputBuffer,
141 IN DWORD InputBufferLength,
142 IN LPVOID OutputBuffer,
143 IN DWORD OutputBufferLength,
144 OUT LPDWORD NumberOfBytesReturned,
145 IN LPWSAOVERLAPPED Overlapped,
146 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine,
147 OUT LPBOOL NeedsCompletion);
152 IN PVOID HelperDllSocketContext,
153 IN SOCKET SocketHandle,
154 IN HANDLE TdiAddressObjectHandle,
155 IN HANDLE TdiConnectionObjectHandle,
156 IN PVOID LeafHelperDllSocketContext,
157 IN SOCKET LeafSocketHandle,
158 IN PSOCKADDR Sockaddr,
159 IN DWORD SockaddrLength,
160 IN LPWSABUF CallerData,
161 IN LPWSABUF CalleeData,
169 IN PVOID HelperDllSocketContext,
170 IN SOCKET SocketHandle,
171 IN HANDLE TdiAddressObjectHandle,
172 IN HANDLE TdiConnectionObjectHandle,
173 IN DWORD NotifyEvent);
178 IN OUT PINT AddressFamily,
179 IN OUT PINT SocketType,
180 IN OUT PINT Protocol,
181 OUT PUNICODE_STRING TransportDeviceName,
182 OUT PVOID HelperDllSocketContext,
183 OUT PDWORD NotificationEvents);
188 OUT PINT AddressFamily,
189 IN OUT PINT SocketType,
190 IN OUT PINT Protocol,
193 OUT PUNICODE_STRING TransportDeviceName,
194 OUT PVOID *HelperDllSocketContext,
195 OUT PDWORD NotificationEvents);
199 WSHSetSocketInformation(
200 IN PVOID HelperDllSocketContext,
201 IN SOCKET SocketHandle,
202 IN HANDLE TdiAddressObjectHandle,
203 IN HANDLE TdiConnectionObjectHandle,
206 IN PCHAR OptionValue,
207 IN INT OptionLength);
212 IN LPWSTR AddressString,
213 IN DWORD AddressFamily,
214 IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
215 OUT LPSOCKADDR Address,
216 IN OUT LPDWORD AddressStringLength);
220 typedef INT (WINAPI * PWSH_ADDRESS_TO_STRING)(
221 IN LPSOCKADDR Address,
222 IN INT AddressLength,
223 IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
224 OUT LPWSTR AddressString,
225 IN OUT LPDWORD AddressStringLength);
227 typedef INT (WINAPI * PWSH_ENUM_PROTOCOLS)(
228 IN LPINT lpiProtocols OPTIONAL,
229 IN LPWSTR lpTransportKeyName,
230 IN OUT LPVOID lpProtocolBuffer,
231 IN OUT LPDWORD lpdwBufferLength);
233 typedef INT (WINAPI * PWSH_GET_BROADCAST_SOCKADDR)(
234 IN PVOID HelperDllSocketContext,
235 OUT PSOCKADDR Sockaddr,
236 OUT PINT SockaddrLength);
238 typedef INT (WINAPI * PWSH_GET_PROVIDER_GUID)(
239 IN LPWSTR ProviderName,
240 OUT LPGUID ProviderGuid);
242 typedef INT (WINAPI * PWSH_GET_SOCKADDR_TYPE)(
243 IN PSOCKADDR Sockaddr,
244 IN DWORD SockaddrLength,
245 OUT PSOCKADDR_INFO SockaddrInfo);
247 typedef INT (WINAPI * PWSH_GET_SOCKET_INFORMATION)(
248 IN PVOID HelperDllSocketContext,
249 IN SOCKET SocketHandle,
250 IN HANDLE TdiAddressObjectHandle,
251 IN HANDLE TdiConnectionObjectHandle,
254 OUT PCHAR OptionValue,
255 OUT INT OptionLength);
257 typedef INT (WINAPI * PWSH_GET_WILDCARD_SOCKEADDR)(
258 IN PVOID HelperDllSocketContext,
259 OUT PSOCKADDR Sockaddr,
260 OUT PINT SockaddrLength);
262 typedef DWORD (WINAPI * PWSH_GET_WINSOCK_MAPPING)(
263 OUT PWINSOCK_MAPPING Mapping,
264 IN DWORD MappingLength);
266 typedef INT (WINAPI * PWSH_GET_WSAPROTOCOL_INFO)(
267 IN LPWSTR ProviderName,
268 OUT LPWSAPROTOCOL_INFOW *ProtocolInfo,
269 OUT LPDWORD ProtocolInfoEntries);
271 typedef INT (WINAPI * PWSH_IOCTL)(
272 IN PVOID HelperDllSocketContext,
273 IN SOCKET SocketHandle,
274 IN HANDLE TdiAddressObjectHandle,
275 IN HANDLE TdiConnectionObjectHandle,
276 IN DWORD IoControlCode,
277 IN LPVOID InputBuffer,
278 IN DWORD InputBufferLength,
279 IN LPVOID OutputBuffer,
280 IN DWORD OutputBufferLength,
281 OUT LPDWORD NumberOfBytesReturned,
282 IN LPWSAOVERLAPPED Overlapped,
283 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine,
284 OUT LPBOOL NeedsCompletion);
286 typedef INT (WINAPI * PWSH_JOIN_LEAF)(
287 IN PVOID HelperDllSocketContext,
288 IN SOCKET SocketHandle,
289 IN HANDLE TdiAddressObjectHandle,
290 IN HANDLE TdiConnectionObjectHandle,
291 IN PVOID LeafHelperDllSocketContext,
292 IN SOCKET LeafSocketHandle,
293 IN PSOCKADDR Sockaddr,
294 IN DWORD SockaddrLength,
295 IN LPWSABUF CallerData,
296 IN LPWSABUF CalleeData,
301 typedef INT (WINAPI * PWSH_NOTIFY)(
302 IN PVOID HelperDllSocketContext,
303 IN SOCKET SocketHandle,
304 IN HANDLE TdiAddressObjectHandle,
305 IN HANDLE TdiConnectionObjectHandle,
306 IN DWORD NotifyEvent);
308 typedef INT (WINAPI * PWSH_OPEN_SOCKET)(
309 IN OUT PINT AddressFamily,
310 IN OUT PINT SocketType,
311 IN OUT PINT Protocol,
312 OUT PUNICODE_STRING TransportDeviceName,
313 OUT PVOID HelperDllSocketContext,
314 OUT PDWORD NotificationEvents);
316 typedef INT (WINAPI * PWSH_OPEN_SOCKET2)(
317 OUT PINT AddressFamily,
318 IN OUT PINT SocketType,
319 IN OUT PINT Protocol,
322 OUT PUNICODE_STRING TransportDeviceName,
323 OUT PVOID *HelperDllSocketContext,
324 OUT PDWORD NotificationEvents);
326 typedef INT (WINAPI * PWSH_SET_SOCKET_INFORMATION)(
327 IN PVOID HelperDllSocketContext,
328 IN SOCKET SocketHandle,
329 IN HANDLE TdiAddressObjectHandle,
330 IN HANDLE TdiConnectionObjectHandle,
333 IN PCHAR OptionValue,
334 IN INT OptionLength);
336 typedef INT (WINAPI * PWSH_STRING_TO_ADDRESS)(
337 IN LPWSTR AddressString,
338 IN DWORD AddressFamily,
339 IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL,
340 OUT LPSOCKADDR Address,
341 IN OUT LPDWORD AddressStringLength);
345 #endif /* __cplusplus */
347 #endif /* __WSAHELP_H */