| 1 | /** | 
 
 
 
 
 | 2 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 3 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 | 5 | */ | 
 
 
 
 
 | 6 | #ifndef _WINSOCK2SPI_ | 
 
 
 
 
 | 7 | #define _WINSOCK2SPI_ | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #ifndef _WIN64 | 
 
 
 
 
 | 10 | #include <pshpack4.h> | 
 
 
 
 
 | 11 | #endif | 
 
 
 
 
 | 12 |  | 
 
 
 
 
 | 13 | #include <winsock2.h> | 
 
 
 
 
 | 14 |  | 
 
 
 
 
 | 15 | #define WSPDESCRIPTION_LEN 255 | 
 
 
 
 
 | 16 |  | 
 
 
 
 
 | 17 | #define WSS_OPERATION_IN_PROGRESS __MSABI_LONG(0x00000103) | 
 
 
 
 
 | 18 |  | 
 
 
 
 
 | 19 | typedef struct WSPData { | 
 
 
 
 
 | 20 | WORD wVersion; | 
 
 
 
 
 | 21 | WORD wHighVersion; | 
 
 
 
 
 | 22 | WCHAR szDescription[WSPDESCRIPTION_LEN+1]; | 
 
 
 
 
 | 23 | } WSPDATA,*LPWSPDATA; | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | typedef struct _WSATHREADID { | 
 
 
 
 
 | 26 | HANDLE ThreadHandle; | 
 
 
 
 
 | 27 | DWORD_PTR Reserved; | 
 
 
 
 
 | 28 | } WSATHREADID,*LPWSATHREADID; | 
 
 
 
 
 | 29 |  | 
 
 
 
 
 | 30 | #define WSPAPI WSAAPI | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | #ifdef __cplusplus | 
 
 
 
 
 | 33 | extern "C" { | 
 
 
 
 
 | 34 | #endif | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | typedef WINBOOL (CALLBACK *LPBLOCKINGCALLBACK)(DWORD_PTR dwContext); | 
 
 
 
 
 | 37 | typedef VOID (CALLBACK *LPWSAUSERAPC)(DWORD_PTR dwContext); | 
 
 
 
 
 | 38 | typedef SOCKET (WSPAPI *LPWSPACCEPT)(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData,LPINT lpErrno); | 
 
 
 
 
 | 39 | typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength,LPINT lpErrno); | 
 
 
 
 
 | 40 | typedef int (WSPAPI *LPWSPASYNCSELECT)(SOCKET s,HWND hWnd,unsigned int wMsg,__LONG32 lEvent,LPINT lpErrno); | 
 
 
 
 
 | 41 | typedef int (WSPAPI *LPWSPBIND)(SOCKET s,const struct sockaddr *name,int namelen,LPINT lpErrno); | 
 
 
 
 
 | 42 | typedef int (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT lpErrno); | 
 
 
 
 
 | 43 | typedef int (WSPAPI *LPWSPCLEANUP)(LPINT lpErrno); | 
 
 
 
 
 | 44 | typedef int (WSPAPI *LPWSPCLOSESOCKET)(SOCKET s,LPINT lpErrno); | 
 
 
 
 
 | 45 | typedef int (WSPAPI *LPWSPCONNECT)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,LPINT lpErrno); | 
 
 
 
 
 | 46 | typedef int (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPINT lpErrno); | 
 
 
 
 
 | 47 | typedef int (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents,LPINT lpErrno); | 
 
 
 
 
 | 48 | typedef int (WSPAPI *LPWSPEVENTSELECT)(SOCKET s,WSAEVENT hEventObject,__LONG32 lNetworkEvents,LPINT lpErrno); | 
 
 
 
 
 | 49 | typedef WINBOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags,LPINT lpErrno); | 
 
 
 
 
 | 50 | typedef int (WSPAPI *LPWSPGETPEERNAME)(SOCKET s,struct sockaddr *name,LPINT namelen,LPINT lpErrno); | 
 
 
 
 
 | 51 | typedef int (WSPAPI *LPWSPGETSOCKNAME)(SOCKET s,struct sockaddr *name,LPINT namelen,LPINT lpErrno); | 
 
 
 
 
 | 52 | typedef int (WSPAPI *LPWSPGETSOCKOPT)(SOCKET s,int level,int optname,char *optval,LPINT optlen,LPINT lpErrno); | 
 
 
 
 
 | 53 | typedef WINBOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS,LPINT lpErrno); | 
 
 
 
 
 | 54 | typedef int (WSPAPI *LPWSPIOCTL)(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 55 | typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags,LPINT lpErrno); | 
 
 
 
 
 | 56 | typedef int (WSPAPI *LPWSPLISTEN)(SOCKET s,int backlog,LPINT lpErrno); | 
 
 
 
 
 | 57 | typedef int (WSPAPI *LPWSPRECV)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 58 | typedef int (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET s,LPWSABUF lpInboundDisconnectData,LPINT lpErrno); | 
 
 
 
 
 | 59 | typedef int (WSPAPI *LPWSPRECVFROM)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 60 | typedef int (WSPAPI *LPWSPSELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout,LPINT lpErrno); | 
 
 
 
 
 | 61 | typedef int (WSPAPI *LPWSPSEND)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 62 | typedef int (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET s,LPWSABUF lpOutboundDisconnectData,LPINT lpErrno); | 
 
 
 
 
 | 63 | typedef int (WSPAPI *LPWSPSENDTO)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 64 | typedef int (WSPAPI *LPWSPSETSOCKOPT)(SOCKET s,int level,int optname,const char *optval,int optlen,LPINT lpErrno); | 
 
 
 
 
 | 65 | typedef int (WSPAPI *LPWSPSHUTDOWN)(SOCKET s,int how,LPINT lpErrno); | 
 
 
 
 
 | 66 | typedef SOCKET (WSPAPI *LPWSPSOCKET)(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags,LPINT lpErrno); | 
 
 
 
 
 | 67 | typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength,LPINT lpErrno); | 
 
 
 
 
 | 68 |  | 
 
 
 
 
 | 69 | typedef struct _WSPPROC_TABLE { | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | LPWSPACCEPT lpWSPAccept; | 
 
 
 
 
 | 72 | LPWSPADDRESSTOSTRING lpWSPAddressToString; | 
 
 
 
 
 | 73 | LPWSPASYNCSELECT lpWSPAsyncSelect; | 
 
 
 
 
 | 74 | LPWSPBIND lpWSPBind; | 
 
 
 
 
 | 75 | LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall; | 
 
 
 
 
 | 76 | LPWSPCLEANUP lpWSPCleanup; | 
 
 
 
 
 | 77 | LPWSPCLOSESOCKET lpWSPCloseSocket; | 
 
 
 
 
 | 78 | LPWSPCONNECT lpWSPConnect; | 
 
 
 
 
 | 79 | LPWSPDUPLICATESOCKET lpWSPDuplicateSocket; | 
 
 
 
 
 | 80 | LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents; | 
 
 
 
 
 | 81 | LPWSPEVENTSELECT lpWSPEventSelect; | 
 
 
 
 
 | 82 | LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult; | 
 
 
 
 
 | 83 | LPWSPGETPEERNAME lpWSPGetPeerName; | 
 
 
 
 
 | 84 | LPWSPGETSOCKNAME lpWSPGetSockName; | 
 
 
 
 
 | 85 | LPWSPGETSOCKOPT lpWSPGetSockOpt; | 
 
 
 
 
 | 86 | LPWSPGETQOSBYNAME lpWSPGetQOSByName; | 
 
 
 
 
 | 87 | LPWSPIOCTL lpWSPIoctl; | 
 
 
 
 
 | 88 | LPWSPJOINLEAF lpWSPJoinLeaf; | 
 
 
 
 
 | 89 | LPWSPLISTEN lpWSPListen; | 
 
 
 
 
 | 90 | LPWSPRECV lpWSPRecv; | 
 
 
 
 
 | 91 | LPWSPRECVDISCONNECT lpWSPRecvDisconnect; | 
 
 
 
 
 | 92 | LPWSPRECVFROM lpWSPRecvFrom; | 
 
 
 
 
 | 93 | LPWSPSELECT lpWSPSelect; | 
 
 
 
 
 | 94 | LPWSPSEND lpWSPSend; | 
 
 
 
 
 | 95 | LPWSPSENDDISCONNECT lpWSPSendDisconnect; | 
 
 
 
 
 | 96 | LPWSPSENDTO lpWSPSendTo; | 
 
 
 
 
 | 97 | LPWSPSETSOCKOPT lpWSPSetSockOpt; | 
 
 
 
 
 | 98 | LPWSPSHUTDOWN lpWSPShutdown; | 
 
 
 
 
 | 99 | LPWSPSOCKET lpWSPSocket; | 
 
 
 
 
 | 100 | LPWSPSTRINGTOADDRESS lpWSPStringToAddress; | 
 
 
 
 
 | 101 | } WSPPROC_TABLE,*LPWSPPROC_TABLE; | 
 
 
 
 
 | 102 |  | 
 
 
 
 
 | 103 | typedef WINBOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 104 | typedef int (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET s,LPINT lpErrno); | 
 
 
 
 
 | 105 | typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT lpErrno); | 
 
 
 
 
 | 106 | typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD dwCatalogEntryId,DWORD_PTR dwContext,LPINT lpErrno); | 
 
 
 
 
 | 107 | typedef int (WSPAPI *LPWPUFDISSET)(SOCKET s,fd_set *fdset); | 
 
 
 
 
 | 108 | typedef int (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID lpProviderId,WCHAR *lpszProviderDllPath,LPINT lpProviderDllPathLen,LPINT lpErrno); | 
 
 
 
 
 | 109 | typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD dwCatalogEntryId,SOCKET ProposedHandle,LPINT lpErrno); | 
 
 
 
 
 | 110 | typedef WINBOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); | 
 
 
 
 
 | 111 | typedef int (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD dwCatalogEntryId,LPBLOCKINGCALLBACK *lplpfnCallback,PDWORD_PTR lpdwContext,LPINT lpErrno); | 
 
 
 
 
 | 112 | typedef int (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET s,PDWORD_PTR lpContext,LPINT lpErrno); | 
 
 
 
 
 | 113 | typedef int (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID lpThreadId,LPWSAUSERAPC lpfnUserApc,DWORD_PTR dwContext,LPINT lpErrno); | 
 
 
 
 
 | 114 | typedef WINBOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 115 | typedef WINBOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 116 | typedef int (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 117 | typedef int (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 118 | typedef int (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET s,LPWSAOVERLAPPED lpOverlapped,DWORD dwError,DWORD cbTransferred,LPINT lpErrno); | 
 
 
 
 
 | 119 |  | 
 
 
 
 
 | 120 | typedef struct _WSPUPCALLTABLE { | 
 
 
 
 
 | 121 | LPWPUCLOSEEVENT lpWPUCloseEvent; | 
 
 
 
 
 | 122 | LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle; | 
 
 
 
 
 | 123 | LPWPUCREATEEVENT lpWPUCreateEvent; | 
 
 
 
 
 | 124 | LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle; | 
 
 
 
 
 | 125 | LPWPUFDISSET lpWPUFDIsSet; | 
 
 
 
 
 | 126 | LPWPUGETPROVIDERPATH lpWPUGetProviderPath; | 
 
 
 
 
 | 127 | LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle; | 
 
 
 
 
 | 128 | LPWPUPOSTMESSAGE lpWPUPostMessage; | 
 
 
 
 
 | 129 | LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback; | 
 
 
 
 
 | 130 | LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext; | 
 
 
 
 
 | 131 | LPWPUQUEUEAPC lpWPUQueueApc; | 
 
 
 
 
 | 132 | LPWPURESETEVENT lpWPUResetEvent; | 
 
 
 
 
 | 133 | LPWPUSETEVENT lpWPUSetEvent; | 
 
 
 
 
 | 134 | LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread; | 
 
 
 
 
 | 135 | LPWPUCLOSETHREAD lpWPUCloseThread; | 
 
 
 
 
 | 136 | } WSPUPCALLTABLE,*LPWSPUPCALLTABLE; | 
 
 
 
 
 | 137 |  | 
 
 
 
 
 | 138 | typedef int (WSPAPI *LPWSPSTARTUP)(WORD wVersionRequested,LPWSPDATA lpWSPData,LPWSAPROTOCOL_INFOW lpProtocolInfo,WSPUPCALLTABLE UpcallTable,LPWSPPROC_TABLE lpProcTable); | 
 
 
 
 
 | 139 | typedef int (WSPAPI *LPWSCENUMPROTOCOLS)(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength,LPINT lpErrno); | 
 
 
 
 
 | 140 | typedef int (WSPAPI *LPWSCDEINSTALLPROVIDER)(LPGUID lpProviderId,LPINT lpErrno); | 
 
 
 
 
 | 141 | typedef int (WSPAPI *LPWSCINSTALLPROVIDER)(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 142 | typedef int (WSPAPI *LPWSCGETPROVIDERPATH)(LPGUID lpProviderId,WCHAR *lpszProviderDllPath,LPINT lpProviderDllPathLen,LPINT lpErrno); | 
 
 
 
 
 | 143 | typedef int (WSPAPI *LPWSCUPDATEPROVIDER)(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 144 | typedef int (WSPAPI *LPWSCINSTALLQOSTEMPLATE)(const LPGUID Guid,LPWSABUF QosName,LPQOS Qos); | 
 
 
 
 
 | 145 | typedef int (WSPAPI *LPWSCREMOVEQOSTEMPLATE)(const LPGUID Guid,LPWSABUF QosName); | 
 
 
 
 
 | 146 |  | 
 
 
 
 
 | 147 | int WSPAPI WSPStartup(WORD wVersionRequested,LPWSPDATA lpWSPData,LPWSAPROTOCOL_INFOW lpProtocolInfo,WSPUPCALLTABLE UpcallTable,LPWSPPROC_TABLE lpProcTable); | 
 
 
 
 
 | 148 | int WSPAPI WSCEnumProtocols(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength,LPINT lpErrno); | 
 
 
 
 
 | 149 | int WSPAPI WSCDeinstallProvider(LPGUID lpProviderId,LPINT lpErrno); | 
 
 
 
 
 | 150 | int WSPAPI WSCInstallProvider(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 151 | int WSPAPI WSCGetProviderPath(LPGUID lpProviderId,WCHAR *lpszProviderDllPath,LPINT lpProviderDllPathLen,LPINT lpErrno); | 
 
 
 
 
 | 152 | int WSPAPI WSCUpdateProvider(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 153 | int WSPAPI WSCInstallQOSTemplate (const LPGUID Guid,LPWSABUF QosName,LPQOS Qos); | 
 
 
 
 
 | 154 | int WSPAPI WSCRemoveQOSTemplate (const LPGUID Guid,LPWSABUF QosName); | 
 
 
 
 
 | 155 |  | 
 
 
 
 
 | 156 | #ifdef _WIN64 | 
 
 
 
 
 | 157 | int WSPAPI WSCEnumProtocols32(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength,LPINT lpErrno); | 
 
 
 
 
 | 158 | int WSPAPI WSCDeinstallProvider32(LPGUID lpProviderId,LPINT lpErrno); | 
 
 
 
 
 | 159 | int WSPAPI WSCInstallProvider64_32(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 160 | int WSPAPI WSCGetProviderPath32(LPGUID lpProviderId,WCHAR *lpszProviderDllPath,LPINT lpProviderDllPathLen,LPINT lpErrno); | 
 
 
 
 
 | 161 | int WSPAPI WSCUpdateProvider32(LPGUID lpProviderId,const WCHAR *lpszProviderDllPath,const LPWSAPROTOCOL_INFOW lpProtocolInfoList,DWORD dwNumberOfEntries,LPINT lpErrno); | 
 
 
 
 
 | 162 | #endif | 
 
 
 
 
 | 163 |  | 
 
 
 
 
 | 164 | WINBOOL WSPAPI WPUCloseEvent(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 165 | int WSPAPI WPUCloseSocketHandle(SOCKET s,LPINT lpErrno); | 
 
 
 
 
 | 166 | WSAEVENT WSPAPI WPUCreateEvent(LPINT lpErrno); | 
 
 
 
 
 | 167 | SOCKET WSPAPI WPUCreateSocketHandle(DWORD dwCatalogEntryId,DWORD_PTR dwContext,LPINT lpErrno); | 
 
 
 
 
 | 168 | int WSPAPI WPUFDIsSet(SOCKET s,fd_set *fdset); | 
 
 
 
 
 | 169 | int WSPAPI WPUGetProviderPath(LPGUID lpProviderId,WCHAR *lpszProviderDllPath,LPINT lpProviderDllPathLen,LPINT lpErrno); | 
 
 
 
 
 | 170 | SOCKET WSPAPI WPUModifyIFSHandle(DWORD dwCatalogEntryId,SOCKET ProposedHandle,LPINT lpErrno); | 
 
 
 
 
 | 171 | WINBOOL WSPAPI WPUPostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); | 
 
 
 
 
 | 172 | int WSPAPI WPUQueryBlockingCallback(DWORD dwCatalogEntryId,LPBLOCKINGCALLBACK *lplpfnCallback,PDWORD_PTR lpdwContext,LPINT lpErrno); | 
 
 
 
 
 | 173 | int WSPAPI WPUQuerySocketHandleContext(SOCKET s,PDWORD_PTR lpContext,LPINT lpErrno); | 
 
 
 
 
 | 174 | int WSPAPI WPUQueueApc(LPWSATHREADID lpThreadId,LPWSAUSERAPC lpfnUserApc,DWORD_PTR dwContext,LPINT lpErrno); | 
 
 
 
 
 | 175 | WINBOOL WSPAPI WPUResetEvent(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 176 | WINBOOL WSPAPI WPUSetEvent(WSAEVENT hEvent,LPINT lpErrno); | 
 
 
 
 
 | 177 | int WSPAPI WPUCompleteOverlappedRequest (SOCKET s,LPWSAOVERLAPPED lpOverlapped,DWORD dwError,DWORD cbTransferred,LPINT lpErrno); | 
 
 
 
 
 | 178 | int WSPAPI WPUOpenCurrentThread(LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 179 | int WSPAPI WPUCloseThread(LPWSATHREADID lpThreadId,LPINT lpErrno); | 
 
 
 
 
 | 180 | #define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW | 
 
 
 
 
 | 181 | #define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW | 
 
 
 
 
 | 182 |  | 
 
 
 
 
 | 183 | #ifdef _WIN64 | 
 
 
 
 
 | 184 | INT WSAAPI WSCEnumNameSpaceProviders32(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer); | 
 
 
 
 
 | 185 | #endif | 
 
 
 
 
 | 186 |  | 
 
 
 
 
 | 187 | typedef INT (WSPAPI *LPWSCINSTALLNAMESPACE)(LPWSTR lpszIdentifier,LPWSTR lpszPathName,DWORD dwNameSpace,DWORD dwVersion,LPGUID lpProviderId); | 
 
 
 
 
 | 188 | typedef INT (WSPAPI *LPWSCUNINSTALLNAMESPACE)(LPGUID lpProviderId); | 
 
 
 
 
 | 189 | typedef INT (WSPAPI *LPWSCENABLENSPROVIDER)(LPGUID lpProviderId,WINBOOL fEnable); | 
 
 
 
 
 | 190 |  | 
 
 
 
 
 | 191 | INT WSPAPI WSCInstallNameSpace (LPWSTR lpszIdentifier,LPWSTR lpszPathName,DWORD dwNameSpace,DWORD dwVersion,LPGUID lpProviderId); | 
 
 
 
 
 | 192 | INT WSPAPI WSCUnInstallNameSpace (LPGUID lpProviderId); | 
 
 
 
 
 | 193 | INT WSPAPI WSCEnableNSProvider (LPGUID lpProviderId,WINBOOL fEnable); | 
 
 
 
 
 | 194 |  | 
 
 
 
 
 | 195 | #ifdef _WIN64 | 
 
 
 
 
 | 196 | INT WSPAPI WSCInstallNameSpace32 (LPWSTR lpszIdentifier,LPWSTR lpszPathName,DWORD dwNameSpace,DWORD dwVersion,LPGUID lpProviderId); | 
 
 
 
 
 | 197 | INT WSPAPI WSCUnInstallNameSpace32 (LPGUID lpProviderId); | 
 
 
 
 
 | 198 | INT WSPAPI WSCEnableNSProvider32 (LPGUID lpProviderId,WINBOOL fEnable); | 
 
 
 
 
 | 199 | #endif | 
 
 
 
 
 | 200 |  | 
 
 
 
 
 | 201 | typedef INT (WSAAPI *LPNSPCLEANUP)(LPGUID lpProviderId); | 
 
 
 
 
 | 202 | typedef INT (WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(LPGUID lpProviderId,LPWSAQUERYSETW lpqsRestrictions,LPWSASERVICECLASSINFOW lpServiceClassInfo,DWORD dwControlFlags,LPHANDLE lphLookup); | 
 
 
 
 
 | 203 | typedef INT (WSAAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults); | 
 
 
 
 
 | 204 | typedef INT (WSAAPI *LPNSPIOCTL)(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion,LPWSATHREADID lpThreadId); | 
 
 
 
 
 | 205 | typedef INT (WSAAPI *LPNSPLOOKUPSERVICEEND)(HANDLE hLookup); | 
 
 
 
 
 | 206 | typedef INT (WSAAPI *LPNSPSETSERVICE)(LPGUID lpProviderId,LPWSASERVICECLASSINFOW lpServiceClassInfo,LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essOperation,DWORD dwControlFlags); | 
 
 
 
 
 | 207 | typedef INT (WSAAPI *LPNSPINSTALLSERVICECLASS)(LPGUID lpProviderId,LPWSASERVICECLASSINFOW lpServiceClassInfo); | 
 
 
 
 
 | 208 | typedef INT (WSAAPI *LPNSPREMOVESERVICECLASS)(LPGUID lpProviderId,LPGUID lpServiceClassId); | 
 
 
 
 
 | 209 | typedef INT (WSAAPI *LPNSPGETSERVICECLASSINFO)(LPGUID lpProviderId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo); | 
 
 
 
 
 | 210 |  | 
 
 
 
 
 | 211 | typedef struct _NSP_ROUTINE { | 
 
 
 
 
 | 212 | DWORD cbSize; | 
 
 
 
 
 | 213 | DWORD dwMajorVersion; | 
 
 
 
 
 | 214 | DWORD dwMinorVersion; | 
 
 
 
 
 | 215 | LPNSPCLEANUP NSPCleanup; | 
 
 
 
 
 | 216 | LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin; | 
 
 
 
 
 | 217 | LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext; | 
 
 
 
 
 | 218 | LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd; | 
 
 
 
 
 | 219 | LPNSPSETSERVICE NSPSetService; | 
 
 
 
 
 | 220 | LPNSPINSTALLSERVICECLASS NSPInstallServiceClass; | 
 
 
 
 
 | 221 | LPNSPREMOVESERVICECLASS NSPRemoveServiceClass; | 
 
 
 
 
 | 222 | LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo; | 
 
 
 
 
 | 223 | LPNSPIOCTL NSPIoctl; | 
 
 
 
 
 | 224 | } NSP_ROUTINE,*LPNSP_ROUTINE; | 
 
 
 
 
 | 225 |  | 
 
 
 
 
 | 226 | typedef INT (WSAAPI *LPNSPSTARTUP)(LPGUID lpProviderId,LPNSP_ROUTINE lpnspRoutines); | 
 
 
 
 
 | 227 |  | 
 
 
 
 
 | 228 | INT WSAAPI NSPStartup(LPGUID lpProviderId,LPNSP_ROUTINE lpnspRoutines); | 
 
 
 
 
 | 229 |  | 
 
 
 
 
 | 230 | #if (_WIN32_WINNT >= 0x0600) | 
 
 
 
 
 | 231 |  | 
 
 
 
 
 | 232 | typedef int (WSAAPI *LPNSPV2CLEANUP)( | 
 
 
 
 
 | 233 | LPGUID lpProviderId, | 
 
 
 
 
 | 234 | LPVOID pvClientSessionArg | 
 
 
 
 
 | 235 | ); | 
 
 
 
 
 | 236 |  | 
 
 
 
 
 | 237 | typedef int (WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)( | 
 
 
 
 
 | 238 | LPGUID lpProviderId, | 
 
 
 
 
 | 239 | LPVOID pvClientSessionArg | 
 
 
 
 
 | 240 | ); | 
 
 
 
 
 | 241 |  | 
 
 
 
 
 | 242 | typedef int (WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)( | 
 
 
 
 
 | 243 | LPGUID lpProviderId, | 
 
 
 
 
 | 244 | LPWSAQUERYSET2W lpqsRestrictions, | 
 
 
 
 
 | 245 | DWORD dwControlFlags, | 
 
 
 
 
 | 246 | LPVOID lpvClientSessionArg, | 
 
 
 
 
 | 247 | LPHANDLE lphLookup | 
 
 
 
 
 | 248 | ); | 
 
 
 
 
 | 249 |  | 
 
 
 
 
 | 250 | typedef int (WSAAPI *LPNSPV2LOOKUPSERVICEEND)( | 
 
 
 
 
 | 251 | HANDLE hLookup | 
 
 
 
 
 | 252 | ); | 
 
 
 
 
 | 253 |  | 
 
 
 
 
 | 254 | typedef int (WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)( | 
 
 
 
 
 | 255 | HANDLE hAsyncCall, | 
 
 
 
 
 | 256 | HANDLE hLookup, | 
 
 
 
 
 | 257 | DWORD dwControlFlags, | 
 
 
 
 
 | 258 | LPDWORD lpdwBufferLength, | 
 
 
 
 
 | 259 | LPWSAQUERYSET2W lpqsResults | 
 
 
 
 
 | 260 | ); | 
 
 
 
 
 | 261 |  | 
 
 
 
 
 | 262 | typedef int (WSAAPI *LPNSPV2SETSERVICEEX)( | 
 
 
 
 
 | 263 | HANDLE hAsyncCall, | 
 
 
 
 
 | 264 | LPGUID lpProviderId, | 
 
 
 
 
 | 265 | LPWSAQUERYSET2W lpqsRegInfo, | 
 
 
 
 
 | 266 | WSAESETSERVICEOP essOperation, | 
 
 
 
 
 | 267 | DWORD dwControlFlags, | 
 
 
 
 
 | 268 | LPVOID lpvClientSessionArg | 
 
 
 
 
 | 269 | ); | 
 
 
 
 
 | 270 |  | 
 
 
 
 
 | 271 | typedef int (WSAAPI *LPNSPV2STARTUP)( | 
 
 
 
 
 | 272 | LPGUID lpProviderId, | 
 
 
 
 
 | 273 | LPVOID *ppvClientSessionArg | 
 
 
 
 
 | 274 | ); | 
 
 
 
 
 | 275 |  | 
 
 
 
 
 | 276 | typedef struct _NSPV2_ROUTINE { | 
 
 
 
 
 | 277 | DWORD                       cbSize; | 
 
 
 
 
 | 278 | DWORD                       dwMajorVersion; | 
 
 
 
 
 | 279 | DWORD                       dwMinorVersion; | 
 
 
 
 
 | 280 | LPNSPV2STARTUP              NSPv2Startup; | 
 
 
 
 
 | 281 | LPNSPV2CLEANUP              NSPv2Cleanup; | 
 
 
 
 
 | 282 | LPNSPV2LOOKUPSERVICEBEGIN   NSPv2LookupServiceBegin; | 
 
 
 
 
 | 283 | LPNSPV2LOOKUPSERVICENEXTEX  NSPv2LookupServiceNextEx; | 
 
 
 
 
 | 284 | LPNSPV2LOOKUPSERVICEEND     NSPv2LookupServiceEnd; | 
 
 
 
 
 | 285 | LPNSPV2SETSERVICEEX         NSPv2SetServiceEx; | 
 
 
 
 
 | 286 | LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown; | 
 
 
 
 
 | 287 | } NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPCNSPV2_ROUTINE; | 
 
 
 
 
 | 288 |  | 
 
 
 
 
 | 289 | #define LSP_SYSTEM          0x80000000 | 
 
 
 
 
 | 290 | #define LSP_INSPECTOR       0x00000001 | 
 
 
 
 
 | 291 | #define LSP_REDIRECTOR      0x00000002 | 
 
 
 
 
 | 292 | #define LSP_PROXY           0x00000004 | 
 
 
 
 
 | 293 | #define LSP_FIREWALL        0x00000008 | 
 
 
 
 
 | 294 | #define LSP_INBOUND_MODIFY  0x00000010 | 
 
 
 
 
 | 295 | #define LSP_OUTBOUND_MODIFY 0x00000020 | 
 
 
 
 
 | 296 | #define LSP_CRYPTO_COMPRESS 0x00000040 | 
 
 
 
 
 | 297 | #define LSP_LOCAL_CACHE     0x00000080 | 
 
 
 
 
 | 298 |  | 
 
 
 
 
 | 299 | typedef enum _WSC_PROVIDER_INFO_TYPE { | 
 
 
 
 
 | 300 | ProviderInfoLspCategories = 0, | 
 
 
 
 
 | 301 | ProviderInfoAudit | 
 
 
 
 
 | 302 | } WSC_PROVIDER_INFO_TYPE; | 
 
 
 
 
 | 303 |  | 
 
 
 
 
 | 304 | typedef struct _WSC_PROVIDER_AUDIT_INFO { | 
 
 
 
 
 | 305 | DWORD RecordSize; | 
 
 
 
 
 | 306 | PVOID Reserved; | 
 
 
 
 
 | 307 | } WSC_PROVIDER_AUDIT_INFO, *PWSC_PROVIDER_AUDIT_INFO; | 
 
 
 
 
 | 308 |  | 
 
 
 
 
 | 309 | INT WSAAPI WSAAdvertiseProvider( | 
 
 
 
 
 | 310 | const GUID *puuidProviderId, | 
 
 
 
 
 | 311 | const LPCNSPV2_ROUTINE *pNSPv2Routine | 
 
 
 
 
 | 312 | ); | 
 
 
 
 
 | 313 |  | 
 
 
 
 
 | 314 | INT WSPAPI WSAProviderCompleteAsyncCall( | 
 
 
 
 
 | 315 | HANDLE hAsyncCall, | 
 
 
 
 
 | 316 | INT iRetCode | 
 
 
 
 
 | 317 | ); | 
 
 
 
 
 | 318 |  | 
 
 
 
 
 | 319 | INT WSPAPI WSAUnadvertiseProvider( | 
 
 
 
 
 | 320 | const GUID *puuidProviderId | 
 
 
 
 
 | 321 | ); | 
 
 
 
 
 | 322 |  | 
 
 
 
 
 | 323 | int WSPAPI WSCGetApplicationCategory( | 
 
 
 
 
 | 324 | LPCWSTR Path, | 
 
 
 
 
 | 325 | DWORD PathLength, | 
 
 
 
 
 | 326 | LPCWSTR Extra, | 
 
 
 
 
 | 327 | DWORD ExtraLength, | 
 
 
 
 
 | 328 | DWORD *pPermittedLspCategories, | 
 
 
 
 
 | 329 | LPINT lpErrno | 
 
 
 
 
 | 330 | ); | 
 
 
 
 
 | 331 |  | 
 
 
 
 
 | 332 | int WSPAPI WSCGetProviderInfo( | 
 
 
 
 
 | 333 | LPGUID lpProviderId, | 
 
 
 
 
 | 334 | WSC_PROVIDER_INFO_TYPE InfoType, | 
 
 
 
 
 | 335 | PBYTE Info, | 
 
 
 
 
 | 336 | size_t *InfoSize, | 
 
 
 
 
 | 337 | DWORD Flags, | 
 
 
 
 
 | 338 | LPINT lpErrno | 
 
 
 
 
 | 339 | ); | 
 
 
 
 
 | 340 |  | 
 
 
 
 
 | 341 | #ifndef _WIN64 | 
 
 
 
 
 | 342 | int WSPAPI WSCInstallProviderAndChains( | 
 
 
 
 
 | 343 | const LPGUID lpProviderId, | 
 
 
 
 
 | 344 | const LPWSTR lpszProviderDllPath, | 
 
 
 
 
 | 345 | const LPWSTR lpszLspName, | 
 
 
 
 
 | 346 | DWORD dwServiceFlags, | 
 
 
 
 
 | 347 | const LPWSAPROTOCOL_INFO lpProtocolInfoList, | 
 
 
 
 
 | 348 | DWORD dwNumberOfEntries, | 
 
 
 
 
 | 349 | LPDWORD lpdwCatalogEntryId, | 
 
 
 
 
 | 350 | LPINT lpErrno | 
 
 
 
 
 | 351 | ); | 
 
 
 
 
 | 352 | #endif /* !_WIN64 */ | 
 
 
 
 
 | 353 |  | 
 
 
 
 
 | 354 | int WSPAPI WSCSetApplicationCategory( | 
 
 
 
 
 | 355 | LPCWSTR Path, | 
 
 
 
 
 | 356 | DWORD PathLength, | 
 
 
 
 
 | 357 | LPCWSTR Extra, | 
 
 
 
 
 | 358 | DWORD ExtraLength, | 
 
 
 
 
 | 359 | DWORD PermittedLspCategories, | 
 
 
 
 
 | 360 | DWORD *pPrevPermLspCat, | 
 
 
 
 
 | 361 | LPINT lpErrno | 
 
 
 
 
 | 362 | ); | 
 
 
 
 
 | 363 |  | 
 
 
 
 
 | 364 | int WSPAPI WSCSetProviderInfo( | 
 
 
 
 
 | 365 | LPGUID lpProviderId, | 
 
 
 
 
 | 366 | WSC_PROVIDER_INFO_TYPE InfoType, | 
 
 
 
 
 | 367 | PBYTE Info, | 
 
 
 
 
 | 368 | size_t InfoSize, | 
 
 
 
 
 | 369 | DWORD Flags, | 
 
 
 
 
 | 370 | LPINT lpErrno | 
 
 
 
 
 | 371 | ); | 
 
 
 
 
 | 372 |  | 
 
 
 
 
 | 373 | int WSAAPI WSCInstallNameSpaceEx( | 
 
 
 
 
 | 374 | LPWSTR lpszIdentifier, | 
 
 
 
 
 | 375 | LPWSTR lpszPathName, | 
 
 
 
 
 | 376 | DWORD dwNameSpace, | 
 
 
 
 
 | 377 | DWORD dwVersion, | 
 
 
 
 
 | 378 | LPGUID lpProviderId, | 
 
 
 
 
 | 379 | LPBLOB lpProviderInfo | 
 
 
 
 
 | 380 | ); | 
 
 
 
 
 | 381 |  | 
 
 
 
 
 | 382 | #define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW | 
 
 
 
 
 | 383 | #define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW | 
 
 
 
 
 | 384 |  | 
 
 
 
 
 | 385 | #ifdef _WIN64 | 
 
 
 
 
 | 386 | INT WSPAPI WSCEnumNameSpaceProvidersEx32( | 
 
 
 
 
 | 387 | LPDWORD lpdwBufferLength, | 
 
 
 
 
 | 388 | LPWSANAMESPACE_INFOEXW lpnspBuffer | 
 
 
 
 
 | 389 | ); | 
 
 
 
 
 | 390 |  | 
 
 
 
 
 | 391 | int WSPAPI WSCGetProviderInfo32( | 
 
 
 
 
 | 392 | LPGUID lpProviderId, | 
 
 
 
 
 | 393 | WSC_PROVIDER_INFO_TYPE InfoType, | 
 
 
 
 
 | 394 | PBYTE Info, | 
 
 
 
 
 | 395 | size_t *InfoSize, | 
 
 
 
 
 | 396 | DWORD Flags, | 
 
 
 
 
 | 397 | LPINT lpErrno | 
 
 
 
 
 | 398 | ); | 
 
 
 
 
 | 399 |  | 
 
 
 
 
 | 400 | int WSAAPI WSCInstallNameSpaceEx32( | 
 
 
 
 
 | 401 | LPWSTR lpszIdentifier, | 
 
 
 
 
 | 402 | LPWSTR lpszPathName, | 
 
 
 
 
 | 403 | DWORD dwNameSpace, | 
 
 
 
 
 | 404 | DWORD dwVersion, | 
 
 
 
 
 | 405 | LPGUID lpProviderId, | 
 
 
 
 
 | 406 | LPBLOB lpProviderInfo | 
 
 
 
 
 | 407 | ); | 
 
 
 
 
 | 408 |  | 
 
 
 
 
 | 409 | int WSPAPI WSCInstallProviderAndChains64_32( | 
 
 
 
 
 | 410 | const LPGUID lpProviderId, | 
 
 
 
 
 | 411 | const LPWSTR lpszProviderDllPath, | 
 
 
 
 
 | 412 | const LPWSTR lpszProviderDllPath32, | 
 
 
 
 
 | 413 | const LPWSTR lpszLspName, | 
 
 
 
 
 | 414 | DWORD dwServiceFlags, | 
 
 
 
 
 | 415 | const LPWSAPROTOCOL_INFO lpProtocolInfoList, | 
 
 
 
 
 | 416 | DWORD dwNumberOfEntries, | 
 
 
 
 
 | 417 | LPDWORD lpdwCatalogEntryId, | 
 
 
 
 
 | 418 | LPINT lpErrno | 
 
 
 
 
 | 419 | ); | 
 
 
 
 
 | 420 |  | 
 
 
 
 
 | 421 | int WSPAPI WSCSetProviderInfo32( | 
 
 
 
 
 | 422 | LPGUID lpProviderId, | 
 
 
 
 
 | 423 | WSC_PROVIDER_INFO_TYPE InfoType, | 
 
 
 
 
 | 424 | PBYTE Info, | 
 
 
 
 
 | 425 | size_t InfoSize, | 
 
 
 
 
 | 426 | DWORD Flags, | 
 
 
 
 
 | 427 | LPINT lpErrno | 
 
 
 
 
 | 428 | ); | 
 
 
 
 
 | 429 |  | 
 
 
 
 
 | 430 | #endif /* _WIN64*/ | 
 
 
 
 
 | 431 |  | 
 
 
 
 
 | 432 | #endif /*(_WIN32_WINNT >= 0x0600)*/ | 
 
 
 
 
 | 433 |  | 
 
 
 
 
 | 434 | #ifdef __cplusplus | 
 
 
 
 
 | 435 | } | 
 
 
 
 
 | 436 | #endif | 
 
 
 
 
 | 437 |  | 
 
 
 
 
 | 438 | #if !defined(_WIN64) | 
 
 
 
 
 | 439 | #include <poppack.h> | 
 
 
 
 
 | 440 | #endif | 
 
 
 
 
 | 441 | #endif |