1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Definitions to be used with the WinSock service provider.
7 use ctypes
::{c_char, c_int, c_long, c_uint}
;
8 use shared
::basetsd
::{DWORD_PTR, PDWORD_PTR, ULONG_PTR}
;
9 use shared
::guiddef
::{GUID, LPGUID}
;
10 use shared
::minwindef
::{
11 BOOL
, DWORD
, INT
, LPARAM
, LPDWORD
, LPHANDLE
, LPINT
, LPVOID
, PBYTE
, UINT
, WORD
, WPARAM
,
13 use shared
::windef
::HWND
;
14 use shared
::ws2def
::{LPSOCKADDR, LPWSABUF, SOCKADDR}
;
15 use shared
::wtypesbase
::LPBLOB
;
16 use um
::winnt
::{HANDLE, LPCWSTR, LPWSTR, PVOID, WCHAR}
;
18 GROUP
, LPCONDITIONPROC
, LPQOS
, LPWSACOMPLETION
, LPWSANETWORKEVENTS
, LPWSAOVERLAPPED
,
19 LPWSAOVERLAPPED_COMPLETION_ROUTINE
, LPWSAPROTOCOL_INFOW
, LPWSAQUERYSET2W
, LPWSAQUERYSETW
,
20 LPWSASERVICECLASSINFOW
, SOCKET
, WSAESETSERVICEOP
, WSAEVENT
, fd_set
, timeval
,
22 #[cfg(target_pointer_width = "64")]
23 use um
::winsock2
::{LPWSANAMESPACE_INFOEXW, LPWSANAMESPACE_INFOW}
;
24 use vc
::vcruntime
::size_t
;
25 pub const WSPDESCRIPTION_LEN
: usize = 255;
26 pub const WSS_OPERATION_IN_PROGRESS
: ULONG_PTR
= 0x00000103;
27 STRUCT
!{struct WSPDATA
{
30 szDescription
: [WCHAR
; WSPDESCRIPTION_LEN
+ 1],
32 pub type LPWSPDATA
= *mut WSPDATA
;
33 STRUCT
!{struct WSATHREADID
{
37 pub type LPWSATHREADID
= *mut WSATHREADID
;
38 FN
!{stdcall
LPBLOCKINGCALLBACK(
41 FN
!{stdcall
LPWSAUSERAPC(
44 FN
!{stdcall
LPWSPACCEPT(
48 lpfnCondition
: LPCONDITIONPROC
,
49 dwCallbackData
: DWORD_PTR
,
52 FN
!{stdcall
LPWSPADDRESSTOSTRING(
53 lpsaAddress
: LPSOCKADDR
,
54 dwAddressLength
: DWORD
,
55 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
56 lpszAddressString
: LPWSTR
,
57 lpdwAddressStringLength
: LPDWORD
,
60 FN
!{stdcall
LPWSPASYNCSELECT(
67 FN
!{stdcall
LPWSPBIND(
73 FN
!{stdcall
LPWSPCANCELBLOCKINGCALL(
76 FN
!{stdcall
LPWSPCLEANUP(
79 FN
!{stdcall
LPWSPCLOSESOCKET(
83 FN
!{stdcall
LPWSPCONNECT(
87 lpCallerData
: LPWSABUF
,
88 lpCalleeData
: LPWSABUF
,
93 FN
!{stdcall
LPWSPDUPLICATESOCKET(
96 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
99 FN
!{stdcall
LPWSPENUMNETWORKEVENTS(
101 hEventObject
: WSAEVENT
,
102 lpNetworkEvents
: LPWSANETWORKEVENTS
,
105 FN
!{stdcall
LPWSPEVENTSELECT(
107 hEventObject
: WSAEVENT
,
108 lNetworkEvents
: c_long
,
111 FN
!{stdcall
LPWSPGETOVERLAPPEDRESULT(
113 lpOverlapped
: LPWSAOVERLAPPED
,
114 lpcbTransfer
: LPDWORD
,
119 FN
!{stdcall
LPWSPGETPEERNAME(
125 FN
!{stdcall
LPWSPGETSOCKNAME(
131 FN
!{stdcall
LPWSPGETSOCKOPT(
139 FN
!{stdcall
LPWSPGETQOSBYNAME(
145 FN
!{stdcall
LPWSPIOCTL(
147 dwIoControlCode
: DWORD
,
150 lpvOutBuffer
: LPVOID
,
152 lpcbBytesReturned
: LPDWORD
,
153 lpOverlapped
: LPWSAOVERLAPPED
,
154 lpCompletionRoutine
: LPWSAOVERLAPPED_COMPLETION_ROUTINE
,
155 lpThreadId
: LPWSATHREADID
,
158 FN
!{stdcall
LPWSPJOINLEAF(
162 lpCallerData
: LPWSABUF
,
163 lpCalleeData
: LPWSABUF
,
169 FN
!{stdcall
LPWSPLISTEN(
174 FN
!{stdcall
LPWSPRECV(
177 dwBufferCount
: DWORD
,
178 lpNumberOfBytesRecvd
: LPDWORD
,
180 lpOverlapped
: LPWSAOVERLAPPED
,
181 lpCompletionRoutine
: LPWSAOVERLAPPED_COMPLETION_ROUTINE
,
182 lpThreadId
: LPWSATHREADID
,
185 FN
!{stdcall
LPWSPRECVDISCONNECT(
187 lpInboundDisconnectData
: LPWSABUF
,
190 FN
!{stdcall
LPWSPRECVFROM(
193 dwBufferCount
: DWORD
,
194 lpNumberOfBytesRecvd
: LPDWORD
,
196 lpFrom
: *mut SOCKADDR
,
198 lpOverlapped
: LPWSAOVERLAPPED
,
199 lpCompletionRoutine
: LPWSAOVERLAPPED_COMPLETION_ROUTINE
,
200 lpThreadId
: LPWSATHREADID
,
203 FN
!{stdcall
LPWSPSELECT(
205 readfds
: *mut fd_set
,
206 writefds
: *mut fd_set
,
207 exceptfds
: *mut fd_set
,
208 timeout
: *const timeval
,
211 FN
!{stdcall
LPWSPSEND(
214 dwBufferCount
: DWORD
,
215 lpNumberOfBytesSent
: LPDWORD
,
217 lpOverlapped
: LPWSAOVERLAPPED
,
218 lpCompletionRoutine
: LPWSAOVERLAPPED_COMPLETION_ROUTINE
,
219 lpThreadId
: LPWSATHREADID
,
222 FN
!{stdcall
LPWSPSENDDISCONNECT(
224 lpOutboundDisconnectData
: LPWSABUF
,
227 FN
!{stdcall
LPWSPSENDTO(
230 dwBufferCount
: DWORD
,
231 lpNumberOfBytesSent
: LPDWORD
,
233 lpTo
: *const SOCKADDR
,
235 lpOverlapped
: LPWSAOVERLAPPED
,
236 lpCompletionRoutine
: LPWSAOVERLAPPED_COMPLETION_ROUTINE
,
237 lpThreadId
: LPWSATHREADID
,
240 FN
!{stdcall
LPWSPSETSOCKOPT(
244 optval
: *const c_char
,
248 FN
!{stdcall
LPWSPSHUTDOWN(
253 FN
!{stdcall
LPWSPSOCKET(
257 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
262 FN
!{stdcall
LPWSPSTRINGTOADDRESS(
263 AddressString
: LPWSTR
,
265 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
266 lpAddress
: LPSOCKADDR
,
267 lpAddressLength
: LPINT
,
270 STRUCT
!{struct WSPPROC_TABLE
{
271 lpWSPAccept
: LPWSPACCEPT
,
272 lpWSPAddressToString
: LPWSPADDRESSTOSTRING
,
273 lpWSPAsyncSelect
: LPWSPASYNCSELECT
,
274 lpWSPBind
: LPWSPBIND
,
275 lpWSPCancelBlockingCall
: LPWSPCANCELBLOCKINGCALL
,
276 lpWSPCleanup
: LPWSPCLEANUP
,
277 lpWSPCloseSocket
: LPWSPCLOSESOCKET
,
278 lpWSPConnect
: LPWSPCONNECT
,
279 lpWSPDuplicateSocket
: LPWSPDUPLICATESOCKET
,
280 lpWSPEnumNetworkEvents
: LPWSPENUMNETWORKEVENTS
,
281 lpWSPEventSelect
: LPWSPEVENTSELECT
,
282 lpWSPGetOverlappedResult
: LPWSPGETOVERLAPPEDRESULT
,
283 lpWSPGetPeerName
: LPWSPGETPEERNAME
,
284 lpWSPGetSockName
: LPWSPGETSOCKNAME
,
285 lpWSPGetSockOpt
: LPWSPGETSOCKOPT
,
286 lpWSPGetQOSByName
: LPWSPGETQOSBYNAME
,
287 lpWSPIoctl
: LPWSPIOCTL
,
288 lpWSPJoinLeaf
: LPWSPJOINLEAF
,
289 lpWSPListen
: LPWSPLISTEN
,
290 lpWSPRecv
: LPWSPRECV
,
291 lpWSPRecvDisconnect
: LPWSPRECVDISCONNECT
,
292 lpWSPRecvFrom
: LPWSPRECVFROM
,
293 lpWSPSelect
: LPWSPSELECT
,
294 lpWSPSend
: LPWSPSEND
,
295 lpWSPSendDisconnect
: LPWSPSENDDISCONNECT
,
296 lpWSPSendTo
: LPWSPSENDTO
,
297 lpWSPSetSockOpt
: LPWSPSETSOCKOPT
,
298 lpWSPShutdown
: LPWSPSHUTDOWN
,
299 lpWSPSocket
: LPWSPSOCKET
,
300 lpWSPStringToAddress
: LPWSPSTRINGTOADDRESS
,
302 pub type LPWSPPROC_TABLE
= *mut WSPPROC_TABLE
;
303 FN
!{stdcall
LPWPUCLOSEEVENT(
307 FN
!{stdcall
LPWPUCLOSESOCKETHANDLE(
311 FN
!{stdcall
LPWPUCREATEEVENT(
314 FN
!{stdcall
LPWPUCREATESOCKETHANDLE(
315 dwCatalogEntryId
: DWORD
,
316 dwContext
: DWORD_PTR
,
319 FN
!{stdcall
LPWPUFDISSET(
323 FN
!{stdcall
LPWPUGETPROVIDERPATH(
324 lpProviderId
: LPGUID
,
325 lpszProviderDllPath
: *mut WCHAR
,
326 lpProviderDllPathLen
: LPINT
,
329 FN
!{stdcall
LPWPUMODIFYIFSHANDLE(
330 dwCatalogEntryId
: DWORD
,
331 ProposedHandle
: SOCKET
,
334 FN
!{stdcall
LPWPUPOSTMESSAGE(
340 FN
!{stdcall
LPWPUQUERYBLOCKINGCALLBACK(
341 dwCatalogEntryId
: DWORD
,
342 lplpfnCallback
: *mut LPBLOCKINGCALLBACK
,
343 lpdwContext
: PDWORD_PTR
,
346 FN
!{stdcall
LPWPUQUERYSOCKETHANDLECONTEXT(
348 lpContext
: PDWORD_PTR
,
351 FN
!{stdcall
LPWPUQUEUEAPC(
352 lpThreadId
: LPWSATHREADID
,
353 lpfnUserApc
: LPWSAUSERAPC
,
354 dwContext
: DWORD_PTR
,
357 FN
!{stdcall
LPWPURESETEVENT(
361 FN
!{stdcall
LPWPUSETEVENT(
365 FN
!{stdcall
LPWPUOPENCURRENTTHREAD(
366 lpThreadId
: LPWSATHREADID
,
369 FN
!{stdcall
LPWPUCLOSETHREAD(
370 lpThreadId
: LPWSATHREADID
,
373 FN
!{stdcall
LPWPUCOMPLETEOVERLAPPEDREQUEST(
375 lpOverlapped
: LPWSAOVERLAPPED
,
377 cbTransferred
: DWORD
,
380 STRUCT
!{struct WSPUPCALLTABLE
{
381 lpWPUCloseEvent
: LPWPUCLOSEEVENT
,
382 lpWPUCloseSocketHandle
: LPWPUCLOSESOCKETHANDLE
,
383 lpWPUCreateEvent
: LPWPUCREATEEVENT
,
384 lpWPUCreateSocketHandle
: LPWPUCREATESOCKETHANDLE
,
385 lpWPUFDIsSet
: LPWPUFDISSET
,
386 lpWPUGetProviderPath
: LPWPUGETPROVIDERPATH
,
387 lpWPUModifyIFSHandle
: LPWPUMODIFYIFSHANDLE
,
388 lpWPUPostMessage
: LPWPUPOSTMESSAGE
,
389 lpWPUQueryBlockingCallback
: LPWPUQUERYBLOCKINGCALLBACK
,
390 lpWPUQuerySocketHandleContext
: LPWPUQUERYSOCKETHANDLECONTEXT
,
391 lpWPUQueueApc
: LPWPUQUEUEAPC
,
392 lpWPUResetEvent
: LPWPURESETEVENT
,
393 lpWPUSetEvent
: LPWPUSETEVENT
,
394 lpWPUOpenCurrentThread
: LPWPUOPENCURRENTTHREAD
,
395 lpWPUCloseThread
: LPWPUCLOSETHREAD
,
397 pub type LPWSPUPCALLTABLE
= *mut WSPUPCALLTABLE
;
400 wVersionRequested
: WORD
,
401 lpWSPData
: LPWSPDATA
,
402 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
403 UpcallTable
: WSPUPCALLTABLE
,
404 lpProcTable
: LPWSPPROC_TABLE
,
407 FN
!{stdcall
LPWSPSTARTUP(
408 wVersionRequested
: WORD
,
409 lpWSPData
: LPWSPDATA
,
410 lpProtocolInfo
: LPWSAPROTOCOL_INFOW
,
411 UpcallTable
: WSPUPCALLTABLE
,
412 lpProcTable
: LPWSPPROC_TABLE
,
415 pub fn WSCEnumProtocols(
417 lpProtocolBuffer
: LPWSAPROTOCOL_INFOW
,
418 lpdwBufferLength
: LPDWORD
,
422 FN
!{stdcall
LPWSCENUMPROTOCOLS(
424 lpProtocolBuffer
: LPWSAPROTOCOL_INFOW
,
425 lpdwBufferLength
: LPDWORD
,
429 #[cfg(target_pointer_width = "64")]
430 pub fn WSCEnumProtocols32(
432 lpProtocolBuffer
: LPWSAPROTOCOL_INFOW
,
433 lpdwBufferLength
: LPDWORD
,
436 pub fn WSCDeinstallProvider(
437 lpProviderId
: LPGUID
,
441 FN
!{stdcall
LPWSCDEINSTALLPROVIDER(
442 lpProviderId
: LPGUID
,
446 #[cfg(target_pointer_width = "64")]
447 pub fn WSCDeinstallProvider32(
448 lpProviderId
: LPGUID
,
451 pub fn WSCInstallProvider(
452 lpProviderId
: LPGUID
,
453 lpszProviderDllPath
: *const WCHAR
,
454 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
455 dwNumberOfEntries
: DWORD
,
459 FN
!{stdcall
LPWSCINSTALLPROVIDER(
460 lpProviderId
: LPGUID
,
461 lpszProviderDllPath
: *const WCHAR
,
462 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
463 dwNumberOfEntries
: DWORD
,
467 #[cfg(target_pointer_width = "64")]
468 pub fn WSCInstallProvider64_32(
469 lpProviderId
: LPGUID
,
470 lpszProviderDllPath
: *const WCHAR
,
471 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
472 dwNumberOfEntries
: DWORD
,
475 pub fn WSCGetProviderPath(
476 lpProviderId
: LPGUID
,
477 lpszProviderDllPath
: *mut WCHAR
,
478 lpProviderDllPathLen
: LPINT
,
482 FN
!{stdcall
LPWSCGETPROVIDERPATH(
483 lpProviderId
: LPGUID
,
484 lpszProviderDllPath
: *mut WCHAR
,
485 lpProviderDllPathLen
: LPINT
,
489 #[cfg(target_pointer_width = "64")]
490 pub fn WSCGetProviderPath32(
491 lpProviderId
: LPGUID
,
492 lpszProviderDllPath
: *mut WCHAR
,
493 lpProviderDllPathLen
: LPINT
,
496 pub fn WSCUpdateProvider(
497 lpProviderId
: LPGUID
,
498 lpszProviderDllPath
: *const WCHAR
,
499 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
500 dwNumberOfEntries
: DWORD
,
504 FN
!{stdcall
LPWSCUPDATEPROVIDER(
505 lpProviderId
: LPGUID
,
506 lpszProviderDllPath
: *const WCHAR
,
507 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
508 dwNumberOfEntries
: DWORD
,
511 #[cfg(target_pointer_width = "64")]
513 pub fn WSCUpdateProvider32(
514 lpProviderId
: LPGUID
,
515 lpszProviderDllPath
: *const WCHAR
,
516 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
517 dwNumberOfEntries
: DWORD
,
521 pub const LSP_SYSTEM
: DWORD
= 0x80000000;
522 pub const LSP_INSPECTOR
: DWORD
= 0x00000001;
523 pub const LSP_REDIRECTOR
: DWORD
= 0x00000002;
524 pub const LSP_PROXY
: DWORD
= 0x00000004;
525 pub const LSP_FIREWALL
: DWORD
= 0x00000008;
526 pub const LSP_INBOUND_MODIFY
: DWORD
= 0x00000010;
527 pub const LSP_OUTBOUND_MODIFY
: DWORD
= 0x00000020;
528 pub const LSP_CRYPTO_COMPRESS
: DWORD
= 0x00000040;
529 pub const LSP_LOCAL_CACHE
: DWORD
= 0x00000080;
530 ENUM
!{enum WSC_PROVIDER_INFO_TYPE
{
531 ProviderInfoLspCategories
,
534 STRUCT
!{struct WSC_PROVIDER_AUDIT_INFO
{
539 pub fn WSCSetProviderInfo(
540 lpProviderId
: LPGUID
,
541 InfoType
: WSC_PROVIDER_INFO_TYPE
,
547 pub fn WSCGetProviderInfo(
548 lpProviderId
: LPGUID
,
549 InfoType
: WSC_PROVIDER_INFO_TYPE
,
551 InfoSize
: *mut size_t
,
555 #[cfg(target_pointer_width = "64")]
556 pub fn WSCSetProviderInfo32(
557 lpProviderId
: LPGUID
,
558 InfoType
: WSC_PROVIDER_INFO_TYPE
,
564 #[cfg(target_pointer_width = "64")]
565 pub fn WSCGetProviderInfo32(
566 lpProviderId
: LPGUID
,
567 InfoType
: WSC_PROVIDER_INFO_TYPE
,
569 InfoSize
: *mut size_t
,
573 pub fn WSCSetApplicationCategory(
578 PermittedLspCategories
: DWORD
,
579 pPrevPermLspCat
: *mut DWORD
,
582 pub fn WSCGetApplicationCategory(
587 pPermittedLspCategories
: *mut DWORD
,
590 pub fn WPUCloseEvent(
594 pub fn WPUCloseSocketHandle(
598 pub fn WPUCreateEvent(
601 pub fn WPUCreateSocketHandle(
602 dwCatalogEntryId
: DWORD
,
603 dwContext
: DWORD_PTR
,
610 pub fn WPUGetProviderPath(
611 lpProviderId
: LPGUID
,
612 lpszProviderDllPath
: *mut WCHAR
,
613 lpProviderDllPathLen
: LPINT
,
616 pub fn WPUModifyIFSHandle(
617 dwCatalogEntryId
: DWORD
,
618 ProposedHandle
: SOCKET
,
621 pub fn WPUPostMessage(
627 pub fn WPUQueryBlockingCallback(
628 dwCatalogEntryId
: DWORD
,
629 lplpfnCallback
: *mut LPBLOCKINGCALLBACK
,
630 lpdwContext
: PDWORD_PTR
,
633 pub fn WPUQuerySocketHandleContext(
635 lpContext
: PDWORD_PTR
,
639 lpThreadId
: LPWSATHREADID
,
640 lpfnUserApc
: LPWSAUSERAPC
,
641 dwContext
: DWORD_PTR
,
644 pub fn WPUResetEvent(
652 pub fn WPUCompleteOverlappedRequest(
654 lpOverlapped
: LPWSAOVERLAPPED
,
656 cbTransferred
: DWORD
,
659 pub fn WPUOpenCurrentThread(
660 lpThreadId
: LPWSATHREADID
,
663 pub fn WPUCloseThread(
664 lpThreadId
: LPWSATHREADID
,
667 #[cfg(target_pointer_width = "64")]
668 pub fn WSCEnumNameSpaceProviders32(
669 lpdwBufferLength
: LPDWORD
,
670 lpnspBuffer
: LPWSANAMESPACE_INFOW
,
672 #[cfg(target_pointer_width = "64")]
673 pub fn WSCEnumNameSpaceProvidersEx32(
674 lpdwBufferLength
: LPDWORD
,
675 lpnspBuffer
: LPWSANAMESPACE_INFOEXW
,
677 pub fn WSCInstallNameSpace(
678 lpszIdentifier
: LPWSTR
,
679 lpszPathName
: LPWSTR
,
682 lpProviderId
: LPGUID
,
685 FN
!{stdcall
LPWSCINSTALLNAMESPACE(
686 lpszIdentifier
: LPWSTR
,
687 lpszPathName
: LPWSTR
,
690 lpProviderId
: LPGUID
,
693 #[cfg(target_pointer_width = "64")]
694 pub fn WSCInstallNameSpace32(
695 lpszIdentifier
: LPWSTR
,
696 lpszPathName
: LPWSTR
,
699 lpProviderId
: LPGUID
,
701 pub fn WSCUnInstallNameSpace(
702 lpProviderId
: LPGUID
,
705 FN
!{stdcall
LPWSCUNINSTALLNAMESPACE(
706 lpProviderId
: LPGUID
,
709 pub fn WSCInstallNameSpaceEx(
710 lpszIdentifier
: LPWSTR
,
711 lpszPathName
: LPWSTR
,
714 lpProviderId
: LPGUID
,
715 lpProviderSpecific
: LPBLOB
,
717 #[cfg(target_pointer_width = "64")]
718 pub fn WSCInstallNameSpaceEx32(
719 lpszIdentifier
: LPWSTR
,
720 lpszPathName
: LPWSTR
,
723 lpProviderId
: LPGUID
,
724 lpProviderSpecific
: LPBLOB
,
726 #[cfg(target_pointer_width = "64")]
727 pub fn WSCUnInstallNameSpace32(
728 lpProviderId
: LPGUID
,
730 pub fn WSCEnableNSProvider(
731 lpProviderId
: LPGUID
,
735 FN
!{stdcall
LPWSCENABLENSPROVIDER(
736 lpProviderId
: LPGUID
,
740 #[cfg(target_pointer_width = "64")]
741 pub fn WSCEnableNSProvider32(
742 lpProviderId
: LPGUID
,
745 #[cfg(target_pointer_width = "64")]
746 pub fn WSCInstallProviderAndChains64_32(
747 lpProviderId
: LPGUID
,
748 lpszProviderDllPath
: LPWSTR
,
749 lpszProviderDllPath32
: LPWSTR
,
751 dwServiceFlags
: DWORD
,
752 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
753 dwNumberOfEntries
: DWORD
,
754 lpdwCatalogEntryId
: LPDWORD
,
757 #[cfg(target_pointer_width = "32")]
758 pub fn WSCInstallProviderAndChains(
759 lpProviderId
: LPGUID
,
760 lpszProviderDllPath
: LPWSTR
,
762 dwServiceFlags
: DWORD
,
763 lpProtocolInfoList
: LPWSAPROTOCOL_INFOW
,
764 dwNumberOfEntries
: DWORD
,
765 lpdwCatalogEntryId
: LPDWORD
,
769 FN
!{stdcall
LPNSPCLEANUP(
770 lpProviderId
: LPGUID
,
772 FN
!{stdcall
LPNSPLOOKUPSERVICEBEGIN(
773 lpProviderId
: LPGUID
,
774 lpqsRestrictions
: LPWSAQUERYSETW
,
775 lpServiceClassInfo
: LPWSASERVICECLASSINFOW
,
776 dwControlFlags
: DWORD
,
779 FN
!{stdcall
LPNSPLOOKUPSERVICENEXT(
781 dwControlFlags
: DWORD
,
782 lpdwBufferLength
: LPDWORD
,
783 lpqsResults
: LPWSAQUERYSETW
,
785 FN
!{stdcall
LPNSPIOCTL(
787 dwControlCode
: DWORD
,
790 lpvOutBuffer
: LPVOID
,
792 lpcbBytesReturned
: LPDWORD
,
793 lpCompletion
: LPWSACOMPLETION
,
794 lpThreadId
: LPWSATHREADID
,
796 FN
!{stdcall
LPNSPLOOKUPSERVICEEND(
799 FN
!{stdcall
LPNSPSETSERVICE(
800 lpProviderId
: LPGUID
,
801 lpServiceClassInfo
: LPWSASERVICECLASSINFOW
,
802 lpqsRegInfo
: LPWSAQUERYSETW
,
803 essOperation
: WSAESETSERVICEOP
,
804 dwControlFlags
: DWORD
,
806 FN
!{stdcall
LPNSPINSTALLSERVICECLASS(
807 lpProviderId
: LPGUID
,
808 lpServiceClassInfo
: LPWSASERVICECLASSINFOW
,
810 FN
!{stdcall
LPNSPREMOVESERVICECLASS(
811 lpProviderId
: LPGUID
,
812 lpServiceClassId
: LPGUID
,
814 FN
!{stdcall
LPNSPGETSERVICECLASSINFO(
815 lpProviderId
: LPGUID
,
816 lpdwBufSize
: LPDWORD
,
817 lpServiceClassInfo
: LPWSASERVICECLASSINFOW
,
819 STRUCT
!{struct NSP_ROUTINE
{
821 dwMajorVersion
: DWORD
,
822 dwMinorVersion
: DWORD
,
823 NSPCleanup
: LPNSPCLEANUP
,
824 NSPLookupServiceBegin
: LPNSPLOOKUPSERVICEBEGIN
,
825 NSPLookupServiceNext
: LPNSPLOOKUPSERVICENEXT
,
826 NSPLookupServiceEnd
: LPNSPLOOKUPSERVICEEND
,
827 NSPSetService
: LPNSPSETSERVICE
,
828 NSPInstallServiceClass
: LPNSPINSTALLSERVICECLASS
,
829 NSPRemoveServiceClass
: LPNSPREMOVESERVICECLASS
,
830 NSPGetServiceClassInfo
: LPNSPGETSERVICECLASSINFO
,
831 NSPIoctl
: LPNSPIOCTL
,
833 pub type LPNSP_ROUTINE
= *mut NSP_ROUTINE
;
836 lpProviderId
: LPGUID
,
837 lpnspRoutines
: LPNSP_ROUTINE
,
840 FN
!{stdcall
LPNSPSTARTUP(
841 lpProviderId
: LPGUID
,
842 lpnspRoutines
: LPNSP_ROUTINE
,
844 FN
!{stdcall
LPNSPV2STARTUP(
845 lpProviderId
: LPGUID
,
846 ppvClientSessionArg
: *mut LPVOID
,
848 FN
!{stdcall
LPNSPV2CLEANUP(
849 lpProviderId
: LPGUID
,
850 pvClientSessionArg
: LPVOID
,
852 FN
!{stdcall
LPNSPV2LOOKUPSERVICEBEGIN(
853 lpProviderId
: LPGUID
,
854 lpqsRestrictions
: LPWSAQUERYSET2W
,
855 dwControlFlags
: DWORD
,
856 lpvClientSessionArg
: LPVOID
,
859 FN
!{stdcall
LPNSPV2LOOKUPSERVICENEXTEX(
862 dwControlFlags
: DWORD
,
863 lpdwBufferLength
: LPDWORD
,
864 lpqsResults
: LPWSAQUERYSET2W
,
866 FN
!{stdcall
LPNSPV2LOOKUPSERVICEEND(
869 FN
!{stdcall
LPNSPV2SETSERVICEEX(
871 lpProviderId
: LPGUID
,
872 lpqsRegInfo
: LPWSAQUERYSET2W
,
873 essOperation
: WSAESETSERVICEOP
,
874 dwControlFlags
: DWORD
,
875 lpvClientSessionArg
: LPVOID
,
877 FN
!{stdcall
LPNSPV2CLIENTSESSIONRUNDOWN(
878 lpProviderId
: LPGUID
,
879 pvClientSessionArg
: LPVOID
,
881 STRUCT
!{struct NSPV2_ROUTINE
{
883 dwMajorVersion
: DWORD
,
884 dwMinorVersion
: DWORD
,
885 NSPv2Startup
: LPNSPV2STARTUP
,
886 NSPv2Cleanup
: LPNSPV2CLEANUP
,
887 NSPv2LookupServiceBegin
: LPNSPV2LOOKUPSERVICEBEGIN
,
888 NSPv2LookupServiceNextEx
: LPNSPV2LOOKUPSERVICENEXTEX
,
889 NSPv2LookupServiceEnd
: LPNSPV2LOOKUPSERVICEEND
,
890 NSPv2SetServiceEx
: LPNSPV2SETSERVICEEX
,
891 NSPv2ClientSessionRundown
: LPNSPV2CLIENTSESSIONRUNDOWN
,
893 pub type PNSPV2_ROUTINE
= *mut NSPV2_ROUTINE
;
894 pub type LPNSPV2_ROUTINE
= *mut NSPV2_ROUTINE
;
895 pub type PCNSPV2_ROUTINE
= *const NSPV2_ROUTINE
;
896 pub type LPCNSPV2_ROUTINE
= *const NSPV2_ROUTINE
;
898 pub fn WSAAdvertiseProvider(
899 puuidProviderId
: *const GUID
,
900 pNSPv2Routine
: *const LPCNSPV2_ROUTINE
,
902 pub fn WSAUnadvertiseProvider(
903 puuidProviderId
: *const GUID
,
905 pub fn WSAProviderCompleteAsyncCall(