4 * Winsock 2 Service Provider interface.
7 * THIS SOFTWARE IS NOT COPYRIGHTED
9 * This source code is offered for use in the public domain. You may
10 * use, modify or distribute it freely.
12 * This code is distributed in the hope that it will be useful but
13 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
14 * DISCLAIMED. This includes but is not limited to warranties of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
34 #define WSPDESCRIPTION_LEN 255
36 #define WSS_OPERATION_IN_PROGRESS 0x00000103L
40 typedef struct WSPData
{
43 WCHAR szDescription
[WSPDESCRIPTION_LEN
+1];
44 } WSPDATA
, FAR
*LPWSPDATA
;
46 typedef struct _WSATHREADID
{
49 } WSATHREADID
, FAR
*LPWSATHREADID
;
51 /* Service provider procedure table */
52 typedef struct _WSPPROC_TABLE
{
53 LPWSPACCEPT lpWSPAccept
;
54 LPWSPADDRESSTOSTRING lpWSPAddressToString
;
55 LPWSPASYNCSELECT lpWSPAsyncSelect
;
57 LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall
;
58 LPWSPCLEANUP lpWSPCleanup
;
59 LPWSPCLOSESOCKET lpWSPCloseSocket
;
60 LPWSPCONNECT lpWSPConnect
;
61 LPWSPDUPLICATESOCKET lpWSPDuplicateSocket
;
62 LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents
;
63 LPWSPEVENTSELECT lpWSPEventSelect
;
64 LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult
;
65 LPWSPGETPEERNAME lpWSPGetPeerName
;
66 LPWSPGETSOCKNAME lpWSPGetSockName
;
67 LPWSPGETSOCKOPT lpWSPGetSockOpt
;
68 LPWSPGETQOSBYNAME lpWSPGetQOSByName
;
69 LPWSPIOCTL lpWSPIoctl
;
70 LPWSPJOINLEAF lpWSPJoinLeaf
;
71 LPWSPLISTEN lpWSPListen
;
73 LPWSPRECVDISCONNECT lpWSPRecvDisconnect
;
74 LPWSPRECVFROM lpWSPRecvFrom
;
75 LPWSPSELECT lpWSPSelect
;
77 LPWSPSENDDISCONNECT lpWSPSendDisconnect
;
78 LPWSPSENDTO lpWSPSendTo
;
79 LPWSPSETSOCKOPT lpWSPSetSockOpt
;
80 LPWSPSHUTDOWN lpWSPShutdown
;
81 LPWSPSOCKET lpWSPSocket
;
82 LPWSPSTRINGTOADDRESS lpWSPStringToAddress
;
83 } WSPPROC_TABLE
, FAR
* LPWSPPROC_TABLE
;
85 /* Service Provider upcall table */
86 typedef struct _WSPUPCALLTABLE
{
87 LPWPUCLOSEEVENT lpWPUCloseEvent
;
88 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle
;
89 LPWPUCREATEEVENT lpWPUCreateEvent
;
90 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle
;
91 LPWPUFDISSET lpWPUFDIsSet
;
92 LPWPUGETPROVIDERPATH lpWPUGetProviderPath
;
93 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle
;
94 LPWPUPOSTMESSAGE lpWPUPostMessage
;
95 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback
;
96 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext
;
97 LPWPUQUEUEAPC lpWPUQueueApc
;
98 LPWPURESETEVENT lpWPUResetEvent
;
99 LPWPUSETEVENT lpWPUSetEvent
;
100 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread
;
101 LPWPUCLOSETHREAD lpWPUCloseThread
;
102 } WSPUPCALLTABLE
, FAR
* LPWSPUPCALLTABLE
;
104 #if(_WIN32_WINNT >= 0x0600)
106 #define LSP_SYSTEM 0x80000000
107 #define LSP_INSPECTOR 0x00000001
108 #define LSP_REDIRECTOR 0x00000002
109 #define LSP_PROXY 0x00000004
110 #define LSP_FIREWALL 0x00000008
111 #define LSP_INBOUND_MODIFY 0x00000010
112 #define LSP_OUTBOUND_MODIFY 0x00000020
113 #define LSP_CRYPTO_COMPRESS 0x00000040
114 #define LSP_LOCAL_CACHE 0x00000080
116 typedef enum _WSC_PROVIDER_INFO_TYPE
{
117 ProviderInfoLspCategories
,
119 } WSC_PROVIDER_INFO_TYPE
;
121 typedef struct _WSC_PROVIDER_AUDIT_INFO
{
124 } WSC_PROVIDER_AUDIT_INFO
;
126 #endif /* (_WIN32_WINNT >= 0x0600) */
128 typedef struct _NSP_ROUTINE
{
130 DWORD dwMajorVersion
;
131 DWORD dwMinorVersion
;
132 LPNSPCLEANUP NSPCleanup
;
133 LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin
;
134 LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext
;
135 LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd
;
136 LPNSPSETSERVICE NSPSetService
;
137 LPNSPINSTALLSERVICECLASS NSPInstallServiceClass
;
138 LPNSPREMOVESERVICECLASS NSPRemoveServiceClass
;
139 LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo
;
141 } NSP_ROUTINE
, *PNSP_ROUTINE
, FAR
* LPNSP_ROUTINE
;
143 typedef struct _NSPV2_ROUTINE
{
145 DWORD dwMajorVersion
;
146 DWORD dwMinorVersion
;
147 LPNSPV2STARTUP NSPv2Startup
;
148 LPNSPV2CLEANUP NSPv2Cleanup
;
149 LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin
;
150 LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx
;
151 LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd
;
152 LPNSPV2SETSERVICEEX NSPv2SetServiceEx
;
153 LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown
;
154 } NSPV2_ROUTINE
, *PNSPV2_ROUTINE
, *LPNSPV2_ROUTINE
;
155 typedef const NSPV2_ROUTINE
*PCNSPV2_ROUTINE
, *LPCNSPV2_ROUTINE
;
158 (CALLBACK FAR
*LPBLOCKINGCALLBACK
)(
159 DWORD_PTR dwContext
);
162 (CALLBACK FAR
*LPWSAUSERAPC
)(
163 DWORD_PTR dwContext
);
166 (WSPAPI
*LPWSPACCEPT
)(
168 OUT
struct sockaddr FAR
*addr OPTIONAL
,
169 IN OUT LPINT addrlen OPTIONAL
,
170 IN LPCONDITIONPROC lpfnCondition OPTIONAL
,
171 IN DWORD_PTR dwCallbackData OPTIONAL
,
175 (WSPAPI
*LPWSPADDRESSTOSTRING
)(
176 IN LPSOCKADDR lpsaAddress
,
177 IN DWORD dwAddressLength
,
178 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
179 OUT LPWSTR lpszAddressString
,
180 IN OUT LPDWORD lpdwAddressStringLength
,
184 (WSPAPI
*LPWSPASYNCSELECT
)(
187 IN
unsigned int wMsg
,
194 IN
const struct sockaddr FAR
*name
,
199 (WSPAPI
*LPWSPCANCELBLOCKINGCALL
)(
203 (WSPAPI
*LPWSPCLEANUP
)(
207 (WSPAPI
*LPWSPCLOSESOCKET
)(
212 (WSPAPI
*LPWSPCONNECT
)(
214 IN
const struct sockaddr FAR
*name
,
216 IN LPWSABUF lpCallerData OPTIONAL
,
217 OUT LPWSABUF lpCalleeData OPTIONAL
,
218 IN LPQOS lpSQOS OPTIONAL
,
219 IN LPQOS lpGQOS OPTIONAL
,
223 (WSPAPI
*LPWSPDUPLICATESOCKET
)(
225 IN DWORD dwProcessId
,
226 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
,
230 (WSPAPI
*LPWSPENUMNETWORKEVENTS
)(
232 IN WSAEVENT hEventObject
,
233 OUT LPWSANETWORKEVENTS lpNetworkEvents
,
237 (WSPAPI
*LPWSPEVENTSELECT
)(
239 IN WSAEVENT hEventObject
,
240 IN
long lNetworkEvents
,
244 (WSPAPI
*LPWSPGETOVERLAPPEDRESULT
)(
246 IN LPWSAOVERLAPPED lpOverlapped
,
247 OUT LPDWORD lpcbTransfer
,
249 OUT LPDWORD lpdwFlags
,
253 (WSPAPI
*LPWSPGETPEERNAME
)(
255 OUT
struct sockaddr FAR
*name
,
256 IN OUT LPINT namelen
,
260 (WSPAPI
*LPWSPGETSOCKNAME
)(
262 OUT
struct sockaddr FAR
*name
,
263 IN OUT LPINT namelen
,
267 (WSPAPI
*LPWSPGETSOCKOPT
)(
271 OUT
char FAR
*optval
,
276 (WSPAPI
*LPWSPGETQOSBYNAME
)(
278 IN LPWSABUF lpQOSName
,
283 (WSPAPI
*LPWSPIOCTL
)(
285 IN DWORD dwIoControlCode
,
286 IN LPVOID lpvInBuffer OPTIONAL
,
288 OUT LPVOID lpvOutBuffer OPTIONAL
,
289 IN DWORD cbOutBuffer
,
290 OUT LPDWORD lpcbBytesReturned
,
291 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
292 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
293 IN LPWSATHREADID lpThreadId OPTIONAL
,
297 (WSPAPI
*LPWSPJOINLEAF
)(
299 IN
const struct sockaddr FAR
*name
,
301 IN LPWSABUF lpCallerData OPTIONAL
,
302 OUT LPWSABUF lpCalleeData OPTIONAL
,
303 IN LPQOS lpSQOS OPTIONAL
,
304 IN LPQOS lpGQOS OPTIONAL
,
309 (WSPAPI
*LPWSPLISTEN
)(
317 IN LPWSABUF lpBuffers
,
318 IN DWORD dwBufferCount
,
319 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
320 IN OUT LPDWORD lpFlags
,
321 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
322 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
323 IN LPWSATHREADID lpThreadId OPTIONAL
,
327 (WSPAPI
*LPWSPRECVDISCONNECT
)(
329 IN LPWSABUF lpInboundDisconnectData OPTIONAL
,
333 (WSPAPI
*LPWSPRECVFROM
)(
335 IN LPWSABUF lpBuffers
,
336 IN DWORD dwBufferCount
,
337 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
338 IN OUT LPDWORD lpFlags
,
339 OUT
struct sockaddr FAR
*lpFrom OPTIONAL
,
340 IN OUT LPINT lpFromlen OPTIONAL
,
341 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
342 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
343 IN LPWSATHREADID lpThreadId OPTIONAL
,
347 (WSPAPI
*LPWSPSELECT
)(
349 IN OUT fd_set FAR
*readfds OPTIONAL
,
350 IN OUT fd_set FAR
*writefds OPTIONAL
,
351 IN OUT fd_set FAR
*exceptfds OPTIONAL
,
352 IN
const struct timeval FAR
*timeout OPTIONAL
,
358 IN LPWSABUF lpBuffers
,
359 IN DWORD dwBufferCount
,
360 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
362 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
363 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
364 IN LPWSATHREADID lpThreadId OPTIONAL
,
368 (WSPAPI
*LPWSPSENDDISCONNECT
)(
370 IN LPWSABUF lpOutboundDisconnectData OPTIONAL
,
374 (WSPAPI
*LPWSPSENDTO
)(
376 IN LPWSABUF lpBuffers
,
377 IN DWORD dwBufferCount
,
378 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
380 IN
const struct sockaddr FAR
*lpTo OPTIONAL
,
382 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
383 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
384 IN LPWSATHREADID lpThreadId OPTIONAL
,
388 (WSPAPI
*LPWSPSETSOCKOPT
)(
392 IN
const char FAR
*optval OPTIONAL
,
397 (WSPAPI
*LPWSPSHUTDOWN
)(
403 (WSPAPI
*LPWSPSOCKET
)(
407 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
413 (WSPAPI
*LPWSPSTRINGTOADDRESS
)(
414 IN LPWSTR AddressString
,
415 IN INT AddressFamily
,
416 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
417 OUT LPSOCKADDR lpAddress
,
418 IN OUT LPINT lpAddressLength
,
422 (WSPAPI
*LPWPUCLOSEEVENT
)(
427 (WSPAPI
*LPWPUCLOSESOCKETHANDLE
)(
432 (WSPAPI
*LPWPUCREATEEVENT
)(
436 (WSPAPI
*LPWPUCREATESOCKETHANDLE
)(
437 IN DWORD dwCatalogEntryId
,
438 IN DWORD_PTR dwContext
,
442 (WSPAPI
*LPWPUFDISSET
)(
444 IN fd_set FAR
*fdset
);
447 (WSPAPI
*LPWPUGETPROVIDERPATH
)(
448 IN LPGUID lpProviderId
,
449 OUT WCHAR FAR
*lpszProviderDllPath
,
450 IN OUT LPINT lpProviderDllPathLen
,
454 (WSPAPI
*LPWPUMODIFYIFSHANDLE
)(
455 IN DWORD dwCatalogEntryId
,
456 IN SOCKET ProposedHandle
,
460 (WSPAPI
*LPWPUPOSTMESSAGE
)(
467 (WSPAPI
*LPWPUQUERYBLOCKINGCALLBACK
)(
468 IN DWORD dwCatalogEntryId
,
469 OUT LPBLOCKINGCALLBACK FAR
*lplpfnCallback
,
470 OUT PDWORD_PTR lpdwContext
,
474 (WSPAPI
*LPWPUQUERYSOCKETHANDLECONTEXT
)(
476 OUT PDWORD_PTR lpContext
,
480 (WSPAPI
*LPWPUQUEUEAPC
)(
481 IN LPWSATHREADID lpThreadId
,
482 IN LPWSAUSERAPC lpfnUserApc
,
483 IN DWORD_PTR dwContext
,
487 (WSPAPI
*LPWPURESETEVENT
)(
492 (WSPAPI
*LPWPUSETEVENT
)(
497 (WSPAPI
*LPWPUOPENCURRENTTHREAD
)(
498 OUT LPWSATHREADID lpThreadId
,
502 (WSPAPI
*LPWPUCLOSETHREAD
)(
503 IN LPWSATHREADID lpThreadId
,
507 (WSPAPI
*LPWPUCOMPLETEOVERLAPPEDREQUEST
)(
509 IN OUT LPWSAOVERLAPPED lpOverlapped
,
511 IN DWORD cbTransferred
,
515 (WSPAPI
*LPWSPSTARTUP
)(
516 IN WORD wVersionRequested
,
517 IN LPWSPDATA lpWSPData
,
518 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
519 IN WSPUPCALLTABLE UpcallTable
,
520 OUT LPWSPPROC_TABLE lpProcTable
);
523 (WSPAPI
*LPWSCENUMPROTOCOLS
)(
524 IN LPINT lpiProtocols OPTIONAL
,
525 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL
,
526 IN OUT LPDWORD lpdwBufferLength
,
530 (WSPAPI
*LPWSCDEINSTALLPROVIDER
)(
531 IN LPGUID lpProviderId
,
535 (WSPAPI
*LPWSCINSTALLPROVIDER
)(
536 IN LPGUID lpProviderId
,
537 IN
const WCHAR FAR
*lpszProviderDllPath
,
538 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
539 IN DWORD dwNumberOfEntries
,
543 (WSPAPI
*LPWSCGETPROVIDERPATH
)(
544 IN LPGUID lpProviderId
,
545 OUT WCHAR FAR
*lpszProviderDllPath
,
546 IN OUT LPINT lpProviderDllPathLen
,
550 (WSPAPI
*LPWSCINSTALLNAMESPACE
)(
551 IN LPWSTR lpszIdentifier
,
552 IN LPWSTR lpszPathName
,
553 IN DWORD dwNameSpace
,
555 IN LPGUID lpProviderId
);
558 (WSPAPI
*LPWSCUNINSTALLNAMESPACE
)(
559 IN LPGUID lpProviderId
);
562 (WSPAPI
*LPWSCENABLENSPROVIDER
)(
563 IN LPGUID lpProviderId
,
567 (WSAAPI
*LPNSPCLEANUP
)(
568 IN LPGUID lpProviderId
);
571 (WSAAPI
*LPNSPLOOKUPSERVICEBEGIN
)(
572 IN LPGUID lpProviderId
,
573 IN LPWSAQUERYSETW lpqsRestrictions
,
574 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
,
575 IN DWORD dwControlFlags
,
576 OUT LPHANDLE lphLookup
);
579 (WSAAPI
*LPNSPLOOKUPSERVICENEXT
)(
581 IN DWORD dwControlFlags
,
582 IN OUT LPDWORD lpdwBufferLength
,
583 OUT LPWSAQUERYSETW lpqsResults
);
585 #if(_WIN32_WINNT >= 0x0501)
587 (WSAAPI
*LPNSPIOCTL
)(
589 IN DWORD dwControlCode
,
590 IN LPVOID lpvInBuffer
,
592 OUT LPVOID lpvOutBuffer
,
593 IN DWORD cbOutBuffer
,
594 OUT LPDWORD lpcbBytesReturned
,
595 IN LPWSACOMPLETION lpCompletion OPTIONAL
,
596 IN LPWSATHREADID lpThreadId
);
600 (WSAAPI
*LPNSPLOOKUPSERVICEEND
)(
604 (WSAAPI
*LPNSPSETSERVICE
)(
605 IN LPGUID lpProviderId
,
606 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
,
607 IN LPWSAQUERYSETW lpqsRegInfo
,
608 IN WSAESETSERVICEOP essOperation
,
609 IN DWORD dwControlFlags
);
612 (WSAAPI
*LPNSPINSTALLSERVICECLASS
)(
613 IN LPGUID lpProviderId
,
614 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
617 (WSAAPI
*LPNSPREMOVESERVICECLASS
)(
618 IN LPGUID lpProviderId
,
619 IN LPGUID lpServiceClassId
);
622 (WSAAPI
*LPNSPGETSERVICECLASSINFO
)(
623 IN LPGUID lpProviderId
,
624 IN LPDWORD lpdwBufSize
,
625 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
628 (WSAAPI
*LPNSPSTARTUP
)(
629 IN LPGUID lpProviderId
,
630 IN OUT LPNSP_ROUTINE lpnspRoutines
);
633 (WSAAPI
*LPNSPV2STARTUP
)(
634 IN LPGUID lpProviderId
,
635 OUT LPVOID
*ppvClientSessionArg
);
638 (WSAAPI
*LPNSPV2CLEANUP
)(
639 IN LPGUID lpProviderId
,
640 IN LPVOID pvClientSessionArg
);
643 (WSAAPI
*LPNSPV2LOOKUPSERVICEBEGIN
)(
644 IN LPGUID lpProviderId
,
645 IN LPWSAQUERYSET2W lpqsRestrictions
,
646 IN DWORD dwControlFlags
,
647 IN LPVOID lpvClientSessionArg
,
648 OUT LPHANDLE lphLookup
);
651 (WSAAPI
*LPNSPV2LOOKUPSERVICENEXTEX
)(
652 IN HANDLE hAsyncCall
,
654 IN DWORD dwControlFlags
,
655 IN LPDWORD lpdwBufferLength
,
656 OUT LPWSAQUERYSET2W lpqsResults
);
659 (WSAAPI
*LPNSPV2LOOKUPSERVICEEND
)(
663 (WSAAPI
*LPNSPV2SETSERVICEEX
)(
664 IN HANDLE hAsyncCall
,
665 IN LPGUID lpProviderId
,
666 IN LPWSAQUERYSET2W lpqsRegInfo
,
667 IN WSAESETSERVICEOP essOperation
,
668 IN DWORD dwControlFlags
,
669 IN LPVOID lpvClientSessionArg
);
672 (WSAAPI
*LPNSPV2CLIENTSESSIONRUNDOWN
)(
673 IN LPGUID lpProviderId
,
674 IN LPVOID pvClientSessionArg
);
679 IN WORD wVersionRequested
,
680 IN LPWSPDATA lpWSPData
,
681 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
682 IN WSPUPCALLTABLE UpcallTable
,
683 OUT LPWSPPROC_TABLE lpProcTable
);
688 IN LPINT lpiProtocols OPTIONAL
,
689 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL
,
690 IN OUT LPDWORD lpdwBufferLength
,
693 #if defined(_WIN32_WINNT >= 0x0501)
697 WPUOpenCurrentThread(
698 OUT LPWSATHREADID lpThreadId
,
704 IN LPWSATHREADID lpThreadId
,
707 #define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
708 #define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
713 IN LPGUID lpProviderId
,
714 IN
const WCHAR FAR
*lpszProviderDllPath
,
715 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
716 IN DWORD dwNumberOfEntries
,
720 (WSPAPI
*LPWSCUPDATEPROVIDER
)(
721 IN LPGUID lpProviderId
,
722 IN
const WCHAR FAR
*lpszProviderDllPath
,
723 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
724 IN DWORD dwNumberOfEntries
,
732 IN LPINT lpiProtocols OPTIONAL
,
733 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
734 IN OUT LPDWORD lpdwBufferLength
,
739 WSCDeinstallProvider32(
740 IN LPGUID lpProviderId
,
745 WSCInstallProvider64_32(
746 IN LPGUID lpProviderId
,
747 IN
const WCHAR FAR
*lpszProviderDllPath
,
748 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
749 IN DWORD dwNumberOfEntries
,
754 WSCGetProviderPath32(
755 IN LPGUID lpProviderId
,
756 OUT WCHAR FAR
*lpszProviderDllPath
,
757 IN OUT LPINT lpProviderDllPathLen
,
763 IN LPGUID lpProviderId
,
764 IN
const WCHAR FAR
*lpszProviderDllPath
,
765 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
766 IN DWORD dwNumberOfEntries
,
771 WSCEnumNameSpaceProviders32(
772 IN OUT LPDWORD lpdwBufferLength
,
773 OUT LPWSANAMESPACE_INFOW lpnspBuffer
);
777 WSCInstallNameSpace32(
778 IN LPWSTR lpszIdentifier
,
779 IN LPWSTR lpszPathName
,
780 IN DWORD dwNameSpace
,
782 IN LPGUID lpProviderId
);
786 WSCUnInstallNameSpace32(
787 IN LPGUID lpProviderId
);
791 WSCEnableNSProvider32(
792 IN LPGUID lpProviderId
,
795 #endif /* defined(_WIN64) */
797 #endif /* defined(_WIN32_WINNT >= 0x0501) */
801 WSCDeinstallProvider(
802 IN LPGUID lpProviderId
,
808 IN LPGUID lpProviderId
,
809 IN
const WCHAR FAR
*lpszProviderDllPath
,
810 IN
const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
811 IN DWORD dwNumberOfEntries
,
817 IN LPGUID lpProviderId
,
818 OUT WCHAR FAR
*lpszProviderDllPath
,
819 IN OUT LPINT lpProviderDllPathLen
,
822 #if (_WIN32_WINNT < 0x0600)
826 WSCInstallQOSTemplate(
827 IN
const LPGUID Guid
,
832 (WSPAPI
*LPWSCINSTALLQOSTEMPLATE
)(
833 IN
const LPGUID Guid
,
839 WSCRemoveQOSTemplate(
840 IN
const LPGUID Guid
,
841 IN LPWSABUF QosName
);
844 (WSPAPI
*LPWSCREMOVEQOSTEMPLATE
)(
845 IN
const LPGUID Guid
,
846 IN LPWSABUF QosName
);
848 #endif /* (_WIN32_WINNT < 0x0600) */
850 #if(_WIN32_WINNT >= 0x0600)
855 IN LPGUID lpProviderId
,
856 IN WSC_PROVIDER_INFO_TYPE InfoType
,
865 IN LPGUID lpProviderId
,
866 IN WSC_PROVIDER_INFO_TYPE InfoType
,
874 WSCSetApplicationCategory(
877 IN LPCWSTR Extra OPTIONAL
,
878 IN DWORD ExtraLength
,
879 IN DWORD PermittedLspCategories
,
880 OUT DWORD
*pPrevPermLspCat OPTIONAL
,
885 WSCGetApplicationCategory(
888 IN LPCWSTR Extra OPTIONAL
,
889 IN DWORD ExtraLength
,
890 OUT DWORD
*pPermittedLspCategories
,
893 #define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
894 #define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
898 WSCInstallNameSpaceEx(
899 IN LPWSTR lpszIdentifier
,
900 IN LPWSTR lpszPathName
,
901 IN DWORD dwNameSpace
,
903 IN LPGUID lpProviderId
,
904 IN LPBLOB lpProviderSpecific
);
908 WSAAdvertiseProvider(
909 IN
const GUID
*puuidProviderId
,
910 IN
const LPCNSPV2_ROUTINE pNSPv2Routine
);
914 WSAUnadvertiseProvider(
915 IN
const GUID
*puuidProviderId
);
919 WSAProviderCompleteAsyncCall(
920 IN HANDLE hAsyncCall
,
927 WSCSetProviderInfo32(
928 IN LPGUID lpProviderId
,
929 IN WSC_PROVIDER_INFO_TYPE InfoType
,
937 WSCGetProviderInfo32(
938 IN LPGUID lpProviderId
,
939 IN WSC_PROVIDER_INFO_TYPE InfoType
,
941 IN OUT
size_t *InfoSize
,
947 WSCEnumNameSpaceProvidersEx32(
948 IN OUT LPDWORD lpdwBufferLength
,
949 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer
);
953 WSCInstallNameSpaceEx32(
954 IN LPWSTR lpszIdentifier
,
955 IN LPWSTR lpszPathName
,
956 IN DWORD dwNameSpace
,
958 IN LPGUID lpProviderId
,
959 IN LPBLOB lpProviderSpecific
);
961 #endif /* (_WIN64) */
966 WSCInstallProviderAndChains64_32(
970 WSCInstallProviderAndChains(
972 IN LPGUID lpProviderId
,
973 IN
const LPWSTR lpszProviderDllPath
,
975 IN
const LPWSTR lpszProviderDllPath32
,
977 IN
const LPWSTR lpszLspName
,
978 IN DWORD dwServiceFlags
,
979 IN OUT LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
980 IN DWORD dwNumberOfEntries
,
981 OUT LPDWORD lpdwCatalogEntryId OPTIONAL
,
984 #endif /* (_WIN32_WINNT >= 0x0600) */
994 WPUCloseSocketHandle(
1005 WPUCreateSocketHandle(
1006 IN DWORD dwCatalogEntryId
,
1007 IN DWORD_PTR dwContext
,
1014 IN fd_set FAR
*fdset
);
1019 IN LPGUID lpProviderId
,
1020 OUT WCHAR FAR
*lpszProviderDllPath
,
1021 IN OUT LPINT lpProviderDllPathLen
,
1027 IN DWORD dwCatalogEntryId
,
1028 IN SOCKET ProposedHandle
,
1041 WPUQueryBlockingCallback(
1042 IN DWORD dwCatalogEntryId
,
1043 OUT LPBLOCKINGCALLBACK FAR
*lplpfnCallback
,
1044 OUT PDWORD_PTR lpdwContext
,
1049 WPUQuerySocketHandleContext(
1051 OUT PDWORD_PTR lpContext
,
1057 IN LPWSATHREADID lpThreadId
,
1058 IN LPWSAUSERAPC lpfnUserApc
,
1059 IN DWORD_PTR dwContext
,
1076 WPUCompleteOverlappedRequest(
1078 IN OUT LPWSAOVERLAPPED lpOverlapped
,
1080 IN DWORD cbTransferred
,
1085 WSCInstallNameSpace(
1086 IN LPWSTR lpszIdentifier
,
1087 IN LPWSTR lpszPathName
,
1088 IN DWORD dwNameSpace
,
1090 IN LPGUID lpProviderId
);
1094 WSCUnInstallNameSpace(
1095 IN LPGUID lpProviderId
);
1099 WSCEnableNSProvider(
1100 IN LPGUID lpProviderId
,
1106 IN LPGUID lpProviderId
,
1107 IN OUT LPNSP_ROUTINE lpnspRoutines
);
1109 #if !defined(_WIN64)
1110 #include <poppack.h>