2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Winsock 2 DLL
4 * FILE: include/ws2spi.h
5 * PURPOSE: Header file for the WinSock 2 DLL
6 * and WinSock 2 Service Providers
16 #endif /* __cplusplus */
21 #define WSPDESCRIPTION_LEN 255
23 typedef struct WSPData
{
26 WCHAR szDescription
[WSPDESCRIPTION_LEN
+ 1];
27 } WSPDATA
, FAR
* LPWSPDATA
;
30 typedef struct _WSATHREADID
{
33 } WSATHREADID
, FAR
* LPWSATHREADID
;
36 typedef BOOL (CALLBACK FAR
* LPBLOCKINGCALLBACK
)(
39 typedef VOID (CALLBACK FAR
* LPWSAUSERAPC
)(
43 /* Prototypes for service provider procedure table */
45 typedef SOCKET (WSPAPI
* LPWSPACCEPT
)(
49 IN LPCONDITIONPROC lpfnCondition
,
50 IN DWORD dwCallbackData
,
53 typedef INT (WSPAPI
* LPWSPADDRESSTOSTRING
)(
54 IN LPSOCKADDR lpsaAddress
,
55 IN DWORD dwAddressLength
,
56 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
57 OUT LPWSTR lpszAddressString
,
58 IN OUT LPDWORD lpdwAddressStringLength
,
61 typedef INT (WSPAPI
* LPWSPASYNCSELECT
)(
68 typedef INT (WSPAPI
* LPWSPBIND
)(
70 IN CONST LPSOCKADDR name
,
74 typedef INT (WSPAPI
* LPWSPCANCELBLOCKINGCALL
)(
77 typedef INT (WSPAPI
* LPWSPCLEANUP
)(
80 typedef INT (WSPAPI
* LPWSPCLOSESOCKET
)(
84 typedef INT (WSPAPI
* LPWSPCONNECT
)(
86 IN CONST LPSOCKADDR name
,
88 IN LPWSABUF lpCallerData
,
89 OUT LPWSABUF lpCalleeData
,
94 typedef INT (WSPAPI
* LPWSPDUPLICATESOCKET
)(
97 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
,
100 typedef INT (WSPAPI
* LPWSPENUMNETWORKEVENTS
)(
102 IN WSAEVENT hEventObject
,
103 OUT LPWSANETWORKEVENTS lpNetworkEvents
,
106 typedef INT (WSPAPI
* LPWSPEVENTSELECT
)(
108 IN WSAEVENT hEventObject
,
109 IN LONG lNetworkEvents
,
112 typedef BOOL (WSPAPI
* LPWSPGETOVERLAPPEDRESULT
)(
114 IN LPWSAOVERLAPPED lpOverlapped
,
115 OUT LPDWORD lpcbTransfer
,
117 OUT LPDWORD lpdwFlags
,
120 typedef INT (WSPAPI
* LPWSPGETPEERNAME
)(
123 IN OUT LPINT namelen
,
126 typedef BOOL (WSPAPI
* LPWSPGETQOSBYNAME
)(
128 IN OUT LPWSABUF lpQOSName
,
132 typedef INT (WSPAPI
* LPWSPGETSOCKNAME
)(
135 IN OUT LPINT namelen
,
138 typedef INT (WSPAPI
* LPWSPGETSOCKOPT
)(
142 OUT CHAR FAR
* optval
,
146 typedef INT (WSPAPI
* LPWSPIOCTL
)(
148 IN DWORD dwIoControlCode
,
149 IN LPVOID lpvInBuffer
,
151 OUT LPVOID lpvOutBuffer
,
152 IN DWORD cbOutBuffer
,
153 OUT LPDWORD lpcbBytesReturned
,
154 IN LPWSAOVERLAPPED lpOverlapped
,
155 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
156 IN LPWSATHREADID lpThreadId
,
159 typedef SOCKET (WSPAPI
* LPWSPJOINLEAF
)(
161 IN CONST LPSOCKADDR name
,
163 IN LPWSABUF lpCallerData
,
164 OUT LPWSABUF lpCalleeData
,
170 typedef INT (WSPAPI
* LPWSPLISTEN
)(
175 typedef INT (WSPAPI
* LPWSPRECV
)(
177 IN OUT LPWSABUF lpBuffers
,
178 IN DWORD dwBufferCount
,
179 OUT LPDWORD lpNumberOfBytesRecvd
,
180 IN OUT LPDWORD lpFlags
,
181 IN LPWSAOVERLAPPED lpOverlapped
,
182 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
183 IN LPWSATHREADID lpThreadId
,
186 typedef INT (WSPAPI
* LPWSPRECVDISCONNECT
)(
188 OUT LPWSABUF lpInboundDisconnectData
,
191 typedef INT (WSPAPI
* LPWSPRECVFROM
)(
193 IN OUT LPWSABUF lpBuffers
,
194 IN DWORD dwBufferCount
,
195 OUT LPDWORD lpNumberOfBytesRecvd
,
196 IN OUT LPDWORD lpFlags
,
197 OUT LPSOCKADDR lpFrom
,
198 IN OUT LPINT lpFromlen
,
199 IN LPWSAOVERLAPPED lpOverlapped
,
200 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
201 IN LPWSATHREADID lpThreadId
,
204 typedef INT (WSPAPI
* LPWSPSELECT
)(
206 IN OUT LPFD_SET readfds
,
207 IN OUT LPFD_SET writefds
,
208 IN OUT LPFD_SET exceptfds
,
209 IN CONST LPTIMEVAL timeout
,
212 typedef INT (WSPAPI
* LPWSPSEND
)(
214 IN LPWSABUF lpBuffers
,
215 IN DWORD dwBufferCount
,
216 OUT LPDWORD lpNumberOfBytesSent
,
218 IN LPWSAOVERLAPPED lpOverlapped
,
219 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
220 IN LPWSATHREADID lpThreadId
,
223 typedef INT (WSPAPI
* LPWSPSENDDISCONNECT
)(
225 IN LPWSABUF lpOutboundDisconnectData
,
228 typedef INT (WSPAPI
* LPWSPSENDTO
)(
230 IN LPWSABUF lpBuffers
,
231 IN DWORD dwBufferCount
,
232 OUT LPDWORD lpNumberOfBytesSent
,
234 IN CONST LPSOCKADDR lpTo
,
236 IN LPWSAOVERLAPPED lpOverlapped
,
237 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
238 IN LPWSATHREADID lpThreadId
,
241 typedef INT (WSPAPI
* LPWSPSETSOCKOPT
)(
245 IN CONST CHAR FAR
* optval
,
249 typedef INT (WSPAPI
* LPWSPSHUTDOWN
)(
254 typedef SOCKET (WSPAPI
* LPWSPSOCKET
)(
258 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
263 typedef INT (WSPAPI
* LPWSPSTRINGTOADDRESS
)(
264 IN LPWSTR AddressString
,
265 IN INT AddressFamily
,
266 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
267 OUT LPSOCKADDR lpAddress
,
268 IN OUT LPINT lpAddressLength
,
272 /* Service provider procedure table */
273 typedef struct _WSPPROC_TABLE
{
274 LPWSPACCEPT lpWSPAccept
;
275 LPWSPADDRESSTOSTRING lpWSPAddressToString
;
276 LPWSPASYNCSELECT lpWSPAsyncSelect
;
278 LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall
;
279 LPWSPCLEANUP lpWSPCleanup
;
280 LPWSPCLOSESOCKET lpWSPCloseSocket
;
281 LPWSPCONNECT lpWSPConnect
;
282 LPWSPDUPLICATESOCKET lpWSPDuplicateSocket
;
283 LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents
;
284 LPWSPEVENTSELECT lpWSPEventSelect
;
285 LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult
;
286 LPWSPGETPEERNAME lpWSPGetPeerName
;
287 LPWSPGETSOCKNAME lpWSPGetSockName
;
288 LPWSPGETSOCKOPT lpWSPGetSockOpt
;
289 LPWSPGETQOSBYNAME lpWSPGetQOSByName
;
290 LPWSPIOCTL lpWSPIoctl
;
291 LPWSPJOINLEAF lpWSPJoinLeaf
;
292 LPWSPLISTEN lpWSPListen
;
294 LPWSPRECVDISCONNECT lpWSPRecvDisconnect
;
295 LPWSPRECVFROM lpWSPRecvFrom
;
296 LPWSPSELECT lpWSPSelect
;
298 LPWSPSENDDISCONNECT lpWSPSendDisconnect
;
299 LPWSPSENDTO lpWSPSendTo
;
300 LPWSPSETSOCKOPT lpWSPSetSockOpt
;
301 LPWSPSHUTDOWN lpWSPShutdown
;
302 LPWSPSOCKET lpWSPSocket
;
303 LPWSPSTRINGTOADDRESS lpWSPStringToAddress
;
304 } WSPPROC_TABLE
, FAR
* LPWSPPROC_TABLE
;
307 /* Prototypes for service provider upcall procedure table */
309 typedef BOOL (WSPAPI
* LPWPUCLOSEEVENT
)(
313 typedef INT (WSPAPI
* LPWPUCLOSESOCKETHANDLE
)(
317 typedef INT (WSPAPI
* LPWPUCLOSETHREAD
)(
318 IN LPWSATHREADID lpThreadId
,
321 typedef WSAEVENT (WSPAPI
* LPWPUCREATEEVENT
)(
324 typedef SOCKET (WSPAPI
* LPWPUCREATESOCKETHANDLE
)(
325 IN DWORD dwCatalogEntryId
,
329 typedef SOCKET (WSPAPI
* LPWPUFDISSET
)(
333 typedef INT (WSPAPI
* LPWPUGETPROVIDERPATH
)(
334 IN LPGUID lpProviderId
,
335 OUT LPWSTR lpszProviderDllPath
,
336 IN OUT LPINT lpProviderDllPathLen
,
339 typedef SOCKET (WSPAPI
* LPWPUMODIFYIFSHANDLE
)(
340 IN DWORD dwCatalogEntryId
,
341 IN SOCKET ProposedHandle
,
344 typedef INT (WSPAPI
* LPWPUOPENCURRENTTHREAD
)(
345 OUT LPWSATHREADID lpThreadId
,
348 typedef BOOL (WSPAPI
* LPWPUPOSTMESSAGE
)(
354 typedef INT (WSPAPI
* LPWPUQUERYBLOCKINGCALLBACK
)(
355 IN DWORD dwCatalogEntryId
,
356 OUT LPBLOCKINGCALLBACK FAR
* lplpfnCallback
,
357 OUT LPDWORD lpdwContext
,
360 typedef INT (WSPAPI
* LPWPUQUERYSOCKETHANDLECONTEXT
)(
362 OUT LPDWORD lpContext
,
365 typedef INT (WSPAPI
* LPWPUQUEUEAPC
)(
366 IN LPWSATHREADID lpThreadId
,
367 IN LPWSAUSERAPC lpfnUserApc
,
371 typedef BOOL (WSPAPI
* LPWPURESETEVENT
)(
375 typedef BOOL (WSPAPI
* LPWPUSETEVENT
)(
380 /* Available only directly from the DLL */
382 typedef INT (WSPAPI
* LPWPUCOMPLETEOVERLAPPEDREQUEST
)(
384 LPWSAOVERLAPPED lpOverlapped
,
390 /* Service Provider upcall table */
392 typedef struct _WSPUPCALLTABLE
{
393 LPWPUCLOSEEVENT lpWPUCloseEvent
;
394 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle
;
395 LPWPUCREATEEVENT lpWPUCreateEvent
;
396 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle
;
397 LPWPUFDISSET lpWPUFDIsSet
;
398 LPWPUGETPROVIDERPATH lpWPUGetProviderPath
;
399 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle
;
400 LPWPUPOSTMESSAGE lpWPUPostMessage
;
401 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback
;
402 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext
;
403 LPWPUQUEUEAPC lpWPUQueueApc
;
404 LPWPURESETEVENT lpWPUResetEvent
;
405 LPWPUSETEVENT lpWPUSetEvent
;
406 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread
;
407 LPWPUCLOSETHREAD lpWPUCloseThread
;
408 } WSPUPCALLTABLE
, FAR
* LPWSPUPCALLTABLE
;
411 typedef INT (WSPAPI
* LPWSPSTARTUP
)(
412 IN WORD wVersionRequested
,
413 OUT LPWSPDATA lpWSPData
,
414 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
415 IN WSPUPCALLTABLE UpcallTable
,
416 OUT LPWSPPROC_TABLE lpProcTable
);
419 /* Prototypes for service provider namespace procedure table */
421 typedef INT (WSPAPI
* LPNSPCLEANUP
)(
422 IN LPGUID lpProviderId
);
424 typedef INT (WSPAPI
* LPNSPGETSERVICECLASSINFO
)(
425 IN LPGUID lpProviderId
,
426 IN OUT LPDWORD lpdwBufSize
,
427 IN OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
);
429 typedef INT (WSPAPI
* LPNSPINSTALLSERVICECLASS
)(
430 IN LPGUID lpProviderId
,
431 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
433 typedef INT (WSPAPI
* LPNSPLOOKUPSERVICEBEGIN
)(
434 IN LPGUID lpProviderId
,
435 IN LPWSAQUERYSETW lpqsRestrictions
,
436 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
,
437 IN DWORD dwControlFlags
,
438 OUT LPHANDLE lphLookup
);
440 typedef INT (WSPAPI
* LPNSPLOOKUPSERVICEEND
)(
443 typedef INT (WSPAPI
* LPNSPLOOKUPSERVICENEXT
)(
445 IN DWORD dwControlFlags
,
446 IN OUT LPDWORD lpdwBufferLength
,
447 OUT LPWSAQUERYSETW lpqsResults
);
449 typedef INT (WSPAPI
* LPNSPREMOVESERVICECLASS
)(
450 IN LPGUID lpProviderId
,
451 IN LPGUID lpServiceClassId
);
453 typedef INT (WSPAPI
* LPNSPSETSERVICE
)(
454 IN LPGUID lpProviderId
,
455 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
,
456 IN LPWSAQUERYSETW lpqsRegInfo
,
457 IN WSAESETSERVICEOP essOperation
,
458 IN DWORD dwControlFlags
);
461 typedef struct _NSP_ROUTINE
{
463 DWORD dwMajorVersion
;
464 DWORD dwMinorVersion
;
465 LPNSPCLEANUP NSPCleanup
;
466 LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin
;
467 LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext
;
468 LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd
;
469 LPNSPSETSERVICE NSPSetService
;
470 LPNSPINSTALLSERVICECLASS NSPInstallServiceClass
;
471 LPNSPREMOVESERVICECLASS NSPRemoveServiceClass
;
472 LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo
;
473 } NSP_ROUTINE
, *PNSP_ROUTINE
, *LPNSP_ROUTINE
;
479 IN LPGUID lpProviderId
,
480 OUT LPNSP_ROUTINE lpNspRoutines
);
483 /* WinSock 2 DLL function prototypes */
487 WPUCompleteOverlappedRequest(
489 IN LPWSAOVERLAPPED lpOverlapped
,
491 IN DWORD cbTransferred
,
497 IN WORD wVersionRequested
,
498 OUT LPWSPDATA lpWSPData
,
499 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
500 IN WSPUPCALLTABLE UpcallTable
,
501 OUT LPWSPPROC_TABLE lpProcTable
);
505 WSCDeinstallProvider(
506 IN LPGUID lpProviderId
,
512 IN LPINT lpiProtocols
,
513 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
514 IN OUT LPDWORD lpdwBufferLength
,
520 IN LPGUID lpProviderId
,
521 OUT LPWSTR lpszProviderDllPath
,
522 IN OUT LPINT lpProviderDllPathLen
,
528 IN CONST LPGUID lpProviderId
,
529 IN CONST LPWSTR lpszProviderDllPath
,
530 IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
531 IN DWORD dwNumberOfEntries
,
537 IN LPGUID lpProviderId
,
543 IN LPWSTR lpszIdentifier
,
544 IN LPWSTR lpszPathName
,
545 IN DWORD dwNameSpace
,
547 IN LPGUID lpProviderId
);
551 WSCUnInstallNameSpace(
552 IN LPGUID lpProviderId
);
556 WSCWriteProviderOrder(
557 IN LPDWORD lpwdCatalogEntryId
,
558 IN DWORD dwNumberOfEntries
);
562 #endif /* __cplusplus */
564 #endif /* __WS2SPI_H */