ws2spi.h 20 KB

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