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 */