Author: akhaldi
Date: Tue Mar 30 15:24:23 2010
New Revision: 46596
URL:
http://svn.reactos.org/svn/reactos?rev=46596&view=rev
Log:
[PSDK]
- Improve ws2spi.h
Modified:
branches/header-work/include/psdk/ws2spi.h
Modified: branches/header-work/include/psdk/ws2spi.h
URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/psdk/ws2spi…
==============================================================================
--- branches/header-work/include/psdk/ws2spi.h [iso-8859-1] (original)
+++ branches/header-work/include/psdk/ws2spi.h [iso-8859-1] Tue Mar 30 15:24:23 2010
@@ -15,69 +15,38 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
-#ifndef _WS2SPI_H
+#pragma once
+
#define _WS2SPI_H
+#ifndef _WINSOCK2API_
#include <winsock2.h>
+#endif
#ifdef __cplusplus
extern "C" {
-#endif /* __cplusplus */
+#endif
+
+#if !defined(_WIN64)
+#include <pshpack4.h>
+#endif
+
+#define WSPDESCRIPTION_LEN 255
+
+#define WSS_OPERATION_IN_PROGRESS 0x00000103L
#define WSPAPI WSAAPI
-#define WSPDESCRIPTION_LEN 255
-
-#ifndef RC_INVOKED
typedef struct WSPData {
- WORD wVersion;
- WORD wHighVersion;
- WCHAR szDescription[WSPDESCRIPTION_LEN+1];
+ WORD wVersion;
+ WORD wHighVersion;
+ WCHAR szDescription[WSPDESCRIPTION_LEN+1];
} WSPDATA, FAR *LPWSPDATA;
+
typedef struct _WSATHREADID {
- HANDLE ThreadHandle;
- DWORD Reserved;
+ HANDLE ThreadHandle;
+ DWORD_PTR Reserved;
} WSATHREADID, FAR *LPWSATHREADID;
-
-typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK)(DWORD);
-typedef VOID (CALLBACK FAR *LPWSAUSERAPC)(DWORD);
-
-/* Prototypes for service provider procedure table */
-typedef SOCKET (WSPAPI
*LPWSPACCEPT)(SOCKET,LPSOCKADDR,LPINT,LPCONDITIONPROC,DWORD,LPINT);
-typedef INT (WSPAPI
*LPWSPADDRESSTOSTRING)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD,LPINT);
-typedef INT (WSPAPI *LPWSPASYNCSELECT)(SOCKET,HWND,UINT,LONG,LPINT);
-typedef INT (WSPAPI *LPWSPBIND)(SOCKET,const struct sockaddr*,INT,LPINT);
-typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT);
-typedef INT (WSPAPI *LPWSPCLEANUP)(LPINT);
-typedef INT (WSPAPI *LPWSPCLOSESOCKET)(SOCKET,LPINT);
-typedef INT (WSPAPI *LPWSPCONNECT)(SOCKET,const struct
sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPINT);
-typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW,LPINT);
-typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS,LPINT);
-typedef INT (WSPAPI *LPWSPEVENTSELECT)(SOCKET,WSAEVENT,LONG,LPINT);
-typedef BOOL (WSPAPI
*LPWSPGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD,LPINT);
-typedef INT (WSPAPI *LPWSPGETPEERNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
-typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS,LPINT);
-typedef INT (WSPAPI *LPWSPGETSOCKNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
-typedef INT (WSPAPI *LPWSPGETSOCKOPT)(SOCKET,INT,INT,CHAR FAR*,LPINT,LPINT);
-typedef INT (WSPAPI *LPWSPIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,
- LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
-typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET,const struct
sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD,LPINT);
-typedef INT (WSPAPI *LPWSPLISTEN)(SOCKET,INT,LPINT);
-typedef INT (WSPAPI *LPWSPRECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,
-LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
-typedef INT (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET,LPWSABUF,LPINT);
-typedef INT (WSPAPI *LPWSPRECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPSOCKADDR,
-LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
-typedef INT (WSPAPI *LPWSPSELECT)(INT,LPFD_SET,LPFD_SET,LPFD_SET,CONST LPTIMEVAL,LPINT);
-typedef INT (WSPAPI *LPWSPSEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,
-LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
-typedef INT (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET,LPWSABUF,LPINT);
-typedef INT (WSPAPI *LPWSPSENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct
sockaddr*,
- INT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
-typedef INT (WSPAPI *LPWSPSETSOCKOPT)(SOCKET,INT,INT,CONST CHAR FAR*,INT,LPINT);
-typedef INT (WSPAPI *LPWSPSHUTDOWN)(SOCKET,INT,LPINT);
-typedef SOCKET (WSPAPI *LPWSPSOCKET)(INT,INT,INT,LPWSAPROTOCOL_INFOW,GROUP,DWORD,LPINT);
-typedef INT (WSPAPI
*LPWSPSTRINGTOADDRESS)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT,LPINT);
/* Service provider procedure table */
typedef struct _WSPPROC_TABLE {
@@ -113,16 +82,48 @@
LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
} WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
-/* Prototypes for service provider namespace procedure table */
-typedef INT (WSAAPI *LPNSPCLEANUP)(LPGUID);
-typedef INT (WSAAPI
*LPNSPLOOKUPSERVICEBEGIN)(LPGUID,LPWSAQUERYSETW,LPWSASERVICECLASSINFOW,DWORD,LPHANDLE);
-typedef INT (WSAAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
-typedef INT (WSAAPI *LPNSPLOOKUPSERVICEEND)(HANDLE);
-typedef INT (WSAAPI
*LPNSPSETSERVICE)(LPGUID,LPWSASERVICECLASSINFOW,LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
-typedef INT (WSAAPI *LPNSPINSTALLSERVICECLASS)(LPGUID,LPWSASERVICECLASSINFOW);
-typedef INT (WSAAPI *LPNSPREMOVESERVICECLASS)(LPGUID,LPGUID);
-typedef INT (WSAAPI *LPNSPGETSERVICECLASSINFO)(LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
-typedef INT (WSAAPI
*LPNSPIOCTL)(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION,LPWSATHREADID);
+/* Service Provider upcall table */
+typedef struct _WSPUPCALLTABLE {
+ LPWPUCLOSEEVENT lpWPUCloseEvent;
+ LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
+ LPWPUCREATEEVENT lpWPUCreateEvent;
+ LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
+ LPWPUFDISSET lpWPUFDIsSet;
+ LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
+ LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
+ LPWPUPOSTMESSAGE lpWPUPostMessage;
+ LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
+ LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
+ LPWPUQUEUEAPC lpWPUQueueApc;
+ LPWPURESETEVENT lpWPUResetEvent;
+ LPWPUSETEVENT lpWPUSetEvent;
+ LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
+ LPWPUCLOSETHREAD lpWPUCloseThread;
+} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
+
+#if(_WIN32_WINNT >= 0x0600)
+
+#define LSP_SYSTEM 0x80000000
+#define LSP_INSPECTOR 0x00000001
+#define LSP_REDIRECTOR 0x00000002
+#define LSP_PROXY 0x00000004
+#define LSP_FIREWALL 0x00000008
+#define LSP_INBOUND_MODIFY 0x00000010
+#define LSP_OUTBOUND_MODIFY 0x00000020
+#define LSP_CRYPTO_COMPRESS 0x00000040
+#define LSP_LOCAL_CACHE 0x00000080
+
+typedef enum _WSC_PROVIDER_INFO_TYPE {
+ ProviderInfoLspCategories,
+ ProviderInfoAudit
+} WSC_PROVIDER_INFO_TYPE ;
+
+typedef struct _WSC_PROVIDER_AUDIT_INFO {
+ DWORD RecordSize;
+ PVOID Reserved;
+} WSC_PROVIDER_AUDIT_INFO;
+
+#endif /* (_WIN32_WINNT >= 0x0600) */
typedef struct _NSP_ROUTINE {
DWORD cbSize;
@@ -139,80 +140,976 @@
LPNSPIOCTL NSPIoctl;
} NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
-/* Prototypes for service provider upcall procedure table */
-typedef BOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT,LPINT);
-typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET,LPINT);
-typedef INT (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID,LPINT);
-typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT);
-typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD,DWORD_PTR,LPINT);
-typedef INT (WSPAPI *LPWPUFDISSET)(SOCKET,LPFD_SET);
-typedef INT (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID,LPWSTR,LPINT,LPINT);
-typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD,SOCKET,LPINT);
-typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID,LPINT);
-typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM);
-typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD,LPBLOCKINGCALLBACK
FAR*,PDWORD_PTR,LPINT);
-typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET,PDWORD_PTR,LPINT);
-typedef INT (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID,LPWSAUSERAPC,DWORD_PTR,LPINT);
-typedef BOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT,LPINT);
-typedef BOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT,LPINT);
-typedef INT (WSAAPI *LPNSPSTARTUP)(LPGUID,LPNSP_ROUTINE);
-/* Available only directly from the DLL */
-typedef INT (WSPAPI
*LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
-
-/* Service Provider upcall table */
-typedef struct _WSPUPCALLTABLE {
- LPWPUCLOSEEVENT lpWPUCloseEvent;
- LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
- LPWPUCREATEEVENT lpWPUCreateEvent;
- LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
- LPWPUFDISSET lpWPUFDIsSet;
- LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
- LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
- LPWPUPOSTMESSAGE lpWPUPostMessage;
- LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
- LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
- LPWPUQUEUEAPC lpWPUQueueApc;
- LPWPURESETEVENT lpWPUResetEvent;
- LPWPUSETEVENT lpWPUSetEvent;
- LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
- LPWPUCLOSETHREAD lpWPUCloseThread;
-} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
-
-typedef INT (WSPAPI
*LPWSPSTARTUP)(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
-
-INT WSPAPI NSPStartup(LPGUID,LPNSP_ROUTINE);
-
-/* WinSock 2 DLL function prototypes */
-INT WSPAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
-INT WSPAPI
WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
-INT WSPAPI WSCDeinstallProvider(LPGUID,LPINT);
-INT WSPAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT);
-INT WSPAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT);
-INT WSPAPI WSCInstallProvider(LPGUID,CONST WCHAR*,CONST
LPWSAPROTOCOL_INFOW,DWORD,LPINT);
-INT WSPAPI WSCEnableNSProvider(LPGUID,BOOL);
-INT WSPAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID);
-INT WSPAPI WSCUnInstallNameSpace(LPGUID);
-INT WSPAPI WSCWriteProviderOrder(LPDWORD,DWORD);
-BOOL WSPAPI WPUPostMessage(HWND,UINT,WPARAM,LPARAM);
-BOOL WSPAPI WPUCloseEvent(WSAEVENT,LPINT);
-int WSPAPI WPUCloseSocketHandle(SOCKET,LPINT);
-WSAEVENT WSPAPI WPUCreateEvent(LPINT);
-SOCKET WSPAPI WPUModifyIFSHandle(DWORD,SOCKET,LPINT);
-SOCKET WSPAPI WPUCreateSocketHandle(DWORD,DWORD_PTR,LPINT);
-int WSPAPI WPUFDIsSet(SOCKET,LPFD_SET);
-int WSPAPI WPUGetProviderPath(LPGUID,WCHAR FAR*,LPINT,LPINT);
-int WSPAPI WPUQueryBlockingCallback(DWORD,LPBLOCKINGCALLBACK FAR*,PDWORD_PTR,LPINT);
-int WSPAPI WPUQuerySocketHandleContext(SOCKET,PDWORD_PTR,LPINT);
-int WSPAPI WPUQueueApc(LPWSATHREADID,LPWSAUSERAPC,DWORD_PTR,LPINT);
-BOOL WSPAPI WPUResetEvent(WSAEVENT,LPINT);
-BOOL WSPAPI WPUSetEvent(WSAEVENT,LPINT);
-int WSPAPI WPUOpenCurrentThread(LPWSATHREADID,LPINT);
-int WSPAPI WPUCloseThread(LPWSATHREADID,LPINT);
-
-#endif /* RC_INVOKED */
+typedef struct _NSPV2_ROUTINE {
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ LPNSPV2STARTUP NSPv2Startup;
+ LPNSPV2CLEANUP NSPv2Cleanup;
+ LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;
+ LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
+ LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;
+ LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
+ LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
+} NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
+typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
+
+typedef BOOL
+(CALLBACK FAR *LPBLOCKINGCALLBACK)(
+ DWORD_PTR dwContext);
+
+typedef VOID
+(CALLBACK FAR *LPWSAUSERAPC)(
+ DWORD_PTR dwContext);
+
+typedef SOCKET
+(WSPAPI *LPWSPACCEPT)(
+ IN SOCKET s,
+ OUT struct sockaddr FAR *addr OPTIONAL,
+ IN OUT LPINT addrlen OPTIONAL,
+ IN LPCONDITIONPROC lpfnCondition OPTIONAL,
+ IN DWORD_PTR dwCallbackData OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef INT
+(WSPAPI *LPWSPADDRESSTOSTRING)(
+ IN LPSOCKADDR lpsaAddress,
+ IN DWORD dwAddressLength,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
+ OUT LPWSTR lpszAddressString,
+ IN OUT LPDWORD lpdwAddressStringLength,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPASYNCSELECT)(
+ IN SOCKET s,
+ IN HWND hWnd,
+ IN unsigned int wMsg,
+ IN long lEvent,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPBIND)(
+ IN SOCKET s,
+ IN const struct sockaddr FAR *name,
+ IN int namelen,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPCANCELBLOCKINGCALL)(
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPCLEANUP)(
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPCLOSESOCKET)(
+ IN SOCKET s,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPCONNECT)(
+ IN SOCKET s,
+ IN const struct sockaddr FAR *name,
+ IN int namelen,
+ IN LPWSABUF lpCallerData OPTIONAL,
+ OUT LPWSABUF lpCalleeData OPTIONAL,
+ IN LPQOS lpSQOS OPTIONAL,
+ IN LPQOS lpGQOS OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPDUPLICATESOCKET)(
+ IN SOCKET s,
+ IN DWORD dwProcessId,
+ OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPENUMNETWORKEVENTS)(
+ IN SOCKET s,
+ IN WSAEVENT hEventObject,
+ OUT LPWSANETWORKEVENTS lpNetworkEvents,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPEVENTSELECT)(
+ IN SOCKET s,
+ IN WSAEVENT hEventObject,
+ IN long lNetworkEvents,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWSPGETOVERLAPPEDRESULT)(
+ IN SOCKET s,
+ IN LPWSAOVERLAPPED lpOverlapped,
+ OUT LPDWORD lpcbTransfer,
+ IN BOOL fWait,
+ OUT LPDWORD lpdwFlags,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPGETPEERNAME)(
+ IN SOCKET s,
+ OUT struct sockaddr FAR *name,
+ IN OUT LPINT namelen,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPGETSOCKNAME)(
+ IN SOCKET s,
+ OUT struct sockaddr FAR *name,
+ IN OUT LPINT namelen,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPGETSOCKOPT)(
+ IN SOCKET s,
+ IN int level,
+ IN int optname,
+ OUT char FAR *optval,
+ IN OUT LPINT optlen,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWSPGETQOSBYNAME)(
+ IN SOCKET s,
+ IN LPWSABUF lpQOSName,
+ OUT LPQOS lpQOS,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPIOCTL)(
+ IN SOCKET s,
+ IN DWORD dwIoControlCode,
+ IN LPVOID lpvInBuffer OPTIONAL,
+ IN DWORD cbInBuffer,
+ OUT LPVOID lpvOutBuffer OPTIONAL,
+ IN DWORD cbOutBuffer,
+ OUT LPDWORD lpcbBytesReturned,
+ IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef SOCKET
+(WSPAPI *LPWSPJOINLEAF)(
+ IN SOCKET s,
+ IN const struct sockaddr FAR *name,
+ IN int namelen,
+ IN LPWSABUF lpCallerData OPTIONAL,
+ OUT LPWSABUF lpCalleeData OPTIONAL,
+ IN LPQOS lpSQOS OPTIONAL,
+ IN LPQOS lpGQOS OPTIONAL,
+ IN DWORD dwFlags,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPLISTEN)(
+ IN SOCKET s,
+ IN int backlog,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPRECV)(
+ IN SOCKET s,
+ IN LPWSABUF lpBuffers,
+ IN DWORD dwBufferCount,
+ OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
+ IN OUT LPDWORD lpFlags,
+ IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId OPTIONAL,
+ IN LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPRECVDISCONNECT)(
+ IN SOCKET s,
+ IN LPWSABUF lpInboundDisconnectData OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPRECVFROM)(
+ IN SOCKET s,
+ IN LPWSABUF lpBuffers,
+ IN DWORD dwBufferCount,
+ OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
+ IN OUT LPDWORD lpFlags,
+ OUT struct sockaddr FAR *lpFrom OPTIONAL,
+ IN OUT LPINT lpFromlen OPTIONAL,
+ IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSELECT)(
+ IN int nfds,
+ IN OUT fd_set FAR *readfds OPTIONAL,
+ IN OUT fd_set FAR *writefds OPTIONAL,
+ IN OUT fd_set FAR *exceptfds OPTIONAL,
+ IN const struct timeval FAR *timeout OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSEND)(
+ IN SOCKET s,
+ IN LPWSABUF lpBuffers,
+ IN DWORD dwBufferCount,
+ OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
+ IN DWORD dwFlags,
+ IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSENDDISCONNECT)(
+ IN SOCKET s,
+ IN LPWSABUF lpOutboundDisconnectData OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSENDTO)(
+ IN SOCKET s,
+ IN LPWSABUF lpBuffers,
+ IN DWORD dwBufferCount,
+ OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
+ IN DWORD dwFlags,
+ IN const struct sockaddr FAR *lpTo OPTIONAL,
+ IN int iTolen,
+ IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId OPTIONAL,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSETSOCKOPT)(
+ IN SOCKET s,
+ IN int level,
+ IN int optname,
+ IN const char FAR *optval OPTIONAL,
+ IN int optlen,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSHUTDOWN)(
+ IN SOCKET s,
+ IN int how,
+ OUT LPINT lpErrno);
+
+typedef SOCKET
+(WSPAPI *LPWSPSOCKET)(
+ IN int af,
+ IN int type,
+ IN int protocol,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
+ IN GROUP g,
+ IN DWORD dwFlags,
+ OUT LPINT lpErrno);
+
+typedef INT
+(WSPAPI *LPWSPSTRINGTOADDRESS)(
+ IN LPWSTR AddressString,
+ IN INT AddressFamily,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
+ OUT LPSOCKADDR lpAddress,
+ IN OUT LPINT lpAddressLength,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWPUCLOSEEVENT)(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUCLOSESOCKETHANDLE)(
+ IN SOCKET s,
+ OUT LPINT lpErrno);
+
+typedef WSAEVENT
+(WSPAPI *LPWPUCREATEEVENT)(
+ OUT LPINT lpErrno);
+
+typedef SOCKET
+(WSPAPI *LPWPUCREATESOCKETHANDLE)(
+ IN DWORD dwCatalogEntryId,
+ IN DWORD_PTR dwContext,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUFDISSET)(
+ IN SOCKET s,
+ IN fd_set FAR *fdset);
+
+typedef int
+(WSPAPI *LPWPUGETPROVIDERPATH)(
+ IN LPGUID lpProviderId,
+ OUT WCHAR FAR *lpszProviderDllPath,
+ IN OUT LPINT lpProviderDllPathLen,
+ OUT LPINT lpErrno);
+
+typedef SOCKET
+(WSPAPI *LPWPUMODIFYIFSHANDLE)(
+ IN DWORD dwCatalogEntryId,
+ IN SOCKET ProposedHandle,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWPUPOSTMESSAGE)(
+ IN HWND hWnd,
+ IN UINT Msg,
+ IN WPARAM wParam,
+ IN LPARAM lParam);
+
+typedef int
+(WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(
+ IN DWORD dwCatalogEntryId,
+ OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
+ OUT PDWORD_PTR lpdwContext,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(
+ IN SOCKET s,
+ OUT PDWORD_PTR lpContext,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUQUEUEAPC)(
+ IN LPWSATHREADID lpThreadId,
+ IN LPWSAUSERAPC lpfnUserApc,
+ IN DWORD_PTR dwContext,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWPURESETEVENT)(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+typedef BOOL
+(WSPAPI *LPWPUSETEVENT)(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUOPENCURRENTTHREAD)(
+ OUT LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUCLOSETHREAD)(
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(
+ IN SOCKET s,
+ IN OUT LPWSAOVERLAPPED lpOverlapped,
+ IN DWORD dwError,
+ IN DWORD cbTransferred,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSPSTARTUP)(
+ IN WORD wVersionRequested,
+ IN LPWSPDATA lpWSPData,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN WSPUPCALLTABLE UpcallTable,
+ OUT LPWSPPROC_TABLE lpProcTable);
+
+typedef int
+(WSPAPI *LPWSCENUMPROTOCOLS)(
+ IN LPINT lpiProtocols OPTIONAL,
+ OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSCDEINSTALLPROVIDER)(
+ IN LPGUID lpProviderId,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSCINSTALLPROVIDER)(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSCGETPROVIDERPATH)(
+ IN LPGUID lpProviderId,
+ OUT WCHAR FAR *lpszProviderDllPath,
+ IN OUT LPINT lpProviderDllPathLen,
+ OUT LPINT lpErrno);
+
+typedef INT
+(WSPAPI *LPWSCINSTALLNAMESPACE)(
+ IN LPWSTR lpszIdentifier,
+ IN LPWSTR lpszPathName,
+ IN DWORD dwNameSpace,
+ IN DWORD dwVersion,
+ IN LPGUID lpProviderId);
+
+typedef INT
+(WSPAPI *LPWSCUNINSTALLNAMESPACE)(
+ IN LPGUID lpProviderId);
+
+typedef INT
+(WSPAPI *LPWSCENABLENSPROVIDER)(
+ IN LPGUID lpProviderId,
+ IN BOOL fEnable);
+
+typedef INT
+(WSAAPI *LPNSPCLEANUP)(
+ IN LPGUID lpProviderId);
+
+typedef INT
+(WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(
+ IN LPGUID lpProviderId,
+ IN LPWSAQUERYSETW lpqsRestrictions,
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup);
+
+typedef INT
+(WSAAPI *LPNSPLOOKUPSERVICENEXT)(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETW lpqsResults);
+
+#if(_WIN32_WINNT >= 0x0501)
+typedef INT
+(WSAAPI *LPNSPIOCTL)(
+ IN HANDLE hLookup,
+ IN DWORD dwControlCode,
+ IN LPVOID lpvInBuffer,
+ IN DWORD cbInBuffer,
+ OUT LPVOID lpvOutBuffer,
+ IN DWORD cbOutBuffer,
+ OUT LPDWORD lpcbBytesReturned,
+ IN LPWSACOMPLETION lpCompletion OPTIONAL,
+ IN LPWSATHREADID lpThreadId);
+#endif
+
+typedef INT
+(WSAAPI *LPNSPLOOKUPSERVICEEND)(
+ IN HANDLE hLookup);
+
+typedef INT
+(WSAAPI *LPNSPSETSERVICE)(
+ IN LPGUID lpProviderId,
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ IN LPWSAQUERYSETW lpqsRegInfo,
+ IN WSAESETSERVICEOP essOperation,
+ IN DWORD dwControlFlags);
+
+typedef INT
+(WSAAPI *LPNSPINSTALLSERVICECLASS)(
+ IN LPGUID lpProviderId,
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
+
+typedef INT
+(WSAAPI *LPNSPREMOVESERVICECLASS)(
+ IN LPGUID lpProviderId,
+ IN LPGUID lpServiceClassId);
+
+typedef INT
+(WSAAPI *LPNSPGETSERVICECLASSINFO)(
+ IN LPGUID lpProviderId,
+ IN LPDWORD lpdwBufSize,
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
+
+typedef INT
+(WSAAPI *LPNSPSTARTUP)(
+ IN LPGUID lpProviderId,
+ IN OUT LPNSP_ROUTINE lpnspRoutines);
+
+typedef INT
+(WSAAPI *LPNSPV2STARTUP)(
+ IN LPGUID lpProviderId,
+ OUT LPVOID *ppvClientSessionArg);
+
+typedef INT
+(WSAAPI *LPNSPV2CLEANUP)(
+ IN LPGUID lpProviderId,
+ IN LPVOID pvClientSessionArg);
+
+typedef INT
+(WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)(
+ IN LPGUID lpProviderId,
+ IN LPWSAQUERYSET2W lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ IN LPVOID lpvClientSessionArg,
+ OUT LPHANDLE lphLookup);
+
+typedef VOID
+(WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)(
+ IN HANDLE hAsyncCall,
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSET2W lpqsResults);
+
+typedef INT
+(WSAAPI *LPNSPV2LOOKUPSERVICEEND)(
+ IN HANDLE hLookup);
+
+typedef VOID
+(WSAAPI *LPNSPV2SETSERVICEEX)(
+ IN HANDLE hAsyncCall,
+ IN LPGUID lpProviderId,
+ IN LPWSAQUERYSET2W lpqsRegInfo,
+ IN WSAESETSERVICEOP essOperation,
+ IN DWORD dwControlFlags,
+ IN LPVOID lpvClientSessionArg);
+
+typedef VOID
+(WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)(
+ IN LPGUID lpProviderId,
+ IN LPVOID pvClientSessionArg);
+
+int
+WSPAPI
+WSPStartup(
+ IN WORD wVersionRequested,
+ IN LPWSPDATA lpWSPData,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN WSPUPCALLTABLE UpcallTable,
+ OUT LPWSPPROC_TABLE lpProcTable);
+
+int
+WSPAPI
+WSCEnumProtocols(
+ IN LPINT lpiProtocols OPTIONAL,
+ OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPINT lpErrno);
+
+#if defined(_WIN32_WINNT >= 0x0501)
+
+int
+WSPAPI
+WPUOpenCurrentThread(
+ OUT LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUCloseThread(
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+#define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
+#define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
+
+int
+WSPAPI
+WSCUpdateProvider(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPWSCUPDATEPROVIDER)(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+#if defined(_WIN64)
+
+int
+WSPAPI
+WSCEnumProtocols32(
+ IN LPINT lpiProtocols OPTIONAL,
+ OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCDeinstallProvider32(
+ IN LPGUID lpProviderId,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCInstallProvider64_32(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCGetProviderPath32(
+ IN LPGUID lpProviderId,
+ OUT WCHAR FAR *lpszProviderDllPath,
+ IN OUT LPINT lpProviderDllPathLen,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCUpdateProvider32(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+INT
+WSAAPI
+WSCEnumNameSpaceProviders32(
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSANAMESPACE_INFOW lpnspBuffer);
+
+INT
+WSPAPI
+WSCInstallNameSpace32(
+ IN LPWSTR lpszIdentifier,
+ IN LPWSTR lpszPathName,
+ IN DWORD dwNameSpace,
+ IN DWORD dwVersion,
+ IN LPGUID lpProviderId);
+
+INT
+WSPAPI
+WSCUnInstallNameSpace32(
+ IN LPGUID lpProviderId);
+
+INT
+WSPAPI
+WSCEnableNSProvider32(
+ IN LPGUID lpProviderId,
+ IN BOOL fEnable);
+
+#endif /* defined(_WIN64) */
+
+#endif /* defined(_WIN32_WINNT >= 0x0501) */
+
+int
+WSPAPI
+WSCDeinstallProvider(
+ IN LPGUID lpProviderId,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCInstallProvider(
+ IN LPGUID lpProviderId,
+ IN const WCHAR FAR *lpszProviderDllPath,
+ IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCGetProviderPath(
+ IN LPGUID lpProviderId,
+ OUT WCHAR FAR *lpszProviderDllPath,
+ IN OUT LPINT lpProviderDllPathLen,
+ OUT LPINT lpErrno);
+
+#if (_WIN32_WINNT < 0x0600)
+
+int
+WSPAPI
+WSCInstallQOSTemplate(
+ IN const LPGUID Guid,
+ IN LPWSABUF QosName,
+ IN LPQOS Qos);
+
+typedef int
+(WSPAPI *LPWSCINSTALLQOSTEMPLATE)(
+ IN const LPGUID Guid,
+ IN LPWSABUF QosName,
+ IN LPQOS Qos);
+
+int
+WSPAPI
+WSCRemoveQOSTemplate(
+ IN const LPGUID Guid,
+ IN LPWSABUF QosName);
+
+typedef int
+(WSPAPI *LPWSCREMOVEQOSTEMPLATE)(
+ IN const LPGUID Guid,
+ IN LPWSABUF QosName);
+
+#endif /* (_WIN32_WINNT < 0x0600) */
+
+#if(_WIN32_WINNT >= 0x0600)
+
+int
+WSPAPI
+WSCSetProviderInfo(
+ IN LPGUID lpProviderId,
+ IN WSC_PROVIDER_INFO_TYPE InfoType,
+ IN PBYTE Info,
+ IN size_t InfoSize,
+ IN DWORD Flags,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCGetProviderInfo(
+ IN LPGUID lpProviderId,
+ IN WSC_PROVIDER_INFO_TYPE InfoType,
+ OUT PBYTE Info,
+ IN OUT *InfoSize,
+ IN DWORD Flags,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCSetApplicationCategory(
+ IN LPCWSTR Path,
+ IN DWORD PathLength,
+ IN LPCWSTR Extra OPTIONAL,
+ IN DWORD ExtraLength,
+ IN DWORD PermittedLspCategories,
+ OUT DWORD *pPrevPermLspCat OPTIONAL,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCGetApplicationCategory(
+ IN LPCWSTR Path,
+ IN DWORD PathLength,
+ IN LPCWSTR Extra OPTIONAL,
+ IN DWORD ExtraLength,
+ OUT DWORD *pPermittedLspCategories,
+ OUT LPINT lpErrno);
+
+#define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
+#define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
+
+INT
+WSPAPI
+WSCInstallNameSpaceEx(
+ IN LPWSTR lpszIdentifier,
+ IN LPWSTR lpszPathName,
+ IN DWORD dwNameSpace,
+ IN DWORD dwVersion,
+ IN LPGUID lpProviderId,
+ IN LPBLOB lpProviderSpecific);
+
+INT
+WSAAPI
+WSAAdvertiseProvider(
+ IN const GUID *puuidProviderId,
+ IN const LPCNSPV2_ROUTINE pNSPv2Routine);
+
+INT
+WSAAPI
+WSAUnadvertiseProvider(
+ IN const GUID *puuidProviderId);
+
+INT
+WSAAPI
+WSAProviderCompleteAsyncCall(
+ IN HANDLE hAsyncCall,
+ IN INT iRetCode);
+
+#if defined(_WIN64)
+
+int
+WSPAPI
+WSCSetProviderInfo32(
+ IN LPGUID lpProviderId,
+ IN WSC_PROVIDER_INFO_TYPE InfoType,
+ IN PBYTE Info,
+ IN size_t InfoSize,
+ IN DWORD Flags,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSCGetProviderInfo32(
+ IN LPGUID lpProviderId,
+ IN WSC_PROVIDER_INFO_TYPE InfoType,
+ OUT PBYTE Info,
+ IN OUT size_t *InfoSize,
+ IN DWORD Flags,
+ OUT LPINT lpErrno);
+
+INT
+WSAAPI
+WSCEnumNameSpaceProvidersEx32(
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
+
+INT
+WSPAPI
+WSCInstallNameSpaceEx32(
+ IN LPWSTR lpszIdentifier,
+ IN LPWSTR lpszPathName,
+ IN DWORD dwNameSpace,
+ IN DWORD dwVersion,
+ IN LPGUID lpProviderId,
+ IN LPBLOB lpProviderSpecific);
+
+#endif /* (_WIN64) */
+
+#if defined(_WIN64)
+int
+WSPAPI
+WSCInstallProviderAndChains64_32(
+#else
+int
+WSPAPI
+WSCInstallProviderAndChains(
+#endif
+ IN LPGUID lpProviderId,
+ IN const LPWSTR lpszProviderDllPath,
+#if defined(_WIN64)
+ IN const LPWSTR lpszProviderDllPath32,
+#endif
+ IN const LPWSTR lpszLspName,
+ IN DWORD dwServiceFlags,
+ IN OUT LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ IN DWORD dwNumberOfEntries,
+ OUT LPDWORD lpdwCatalogEntryId OPTIONAL,
+ OUT LPINT lpErrno);
+
+#endif /* (_WIN32_WINNT >= 0x0600) */
+
+BOOL
+WSPAPI
+WPUCloseEvent(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUCloseSocketHandle(
+ IN SOCKET s,
+ OUT LPINT lpErrno);
+
+WSAEVENT
+WSPAPI
+WPUCreateEvent(
+ OUT LPINT lpErrno);
+
+SOCKET
+WSPAPI
+WPUCreateSocketHandle(
+ IN DWORD dwCatalogEntryId,
+ IN DWORD_PTR dwContext,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUFDIsSet(
+ IN SOCKET s,
+ IN fd_set FAR *fdset);
+
+int
+WSPAPI
+WPUGetProviderPath(
+ IN LPGUID lpProviderId,
+ OUT WCHAR FAR *lpszProviderDllPath,
+ IN OUT LPINT lpProviderDllPathLen,
+ OUT LPINT lpErrno);
+
+SOCKET
+WSPAPI
+WPUModifyIFSHandle(
+ IN DWORD dwCatalogEntryId,
+ IN SOCKET ProposedHandle,
+ OUT LPINT lpErrno);
+
+BOOL
+WSPAPI
+WPUPostMessage(
+ IN HWND hWnd,
+ IN UINT Msg,
+ IN WPARAM wParam,
+ IN LPARAM lParam);
+
+int
+WSPAPI
+WPUQueryBlockingCallback(
+ IN DWORD dwCatalogEntryId,
+ OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
+ OUT PDWORD_PTR lpdwContext,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUQuerySocketHandleContext(
+ IN SOCKET s,
+ OUT PDWORD_PTR lpContext,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUQueueApc(
+ IN LPWSATHREADID lpThreadId,
+ IN LPWSAUSERAPC lpfnUserApc,
+ IN DWORD_PTR dwContext,
+ OUT LPINT lpErrno);
+
+BOOL
+WSPAPI
+WPUResetEvent(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+BOOL
+WSPAPI
+WPUSetEvent(
+ IN WSAEVENT hEvent,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WPUCompleteOverlappedRequest(
+ IN SOCKET s,
+ IN OUT LPWSAOVERLAPPED lpOverlapped,
+ IN DWORD dwError,
+ IN DWORD cbTransferred,
+ OUT LPINT lpErrno);
+
+INT
+WSPAPI
+WSCInstallNameSpace(
+ IN LPWSTR lpszIdentifier,
+ IN LPWSTR lpszPathName,
+ IN DWORD dwNameSpace,
+ IN DWORD dwVersion,
+ IN LPGUID lpProviderId);
+
+INT
+WSPAPI
+WSCUnInstallNameSpace(
+ IN LPGUID lpProviderId);
+
+INT
+WSPAPI
+WSCEnableNSProvider(
+ IN LPGUID lpProviderId,
+ IN BOOL fEnable);
+
+INT
+WSAAPI
+NSPStartup(
+ IN LPGUID lpProviderId,
+ IN OUT LPNSP_ROUTINE lpnspRoutines);
+
+#if !defined(_WIN64)
+#include <poppack.h>
+#endif
#ifdef __cplusplus
}
-#endif /* __cplusplus */
-
-#endif /* _WS2SPI_H */
+#endif