summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ws2spi.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/ws2spi.h955
1 files changed, 955 insertions, 0 deletions
diff --git a/public/sdk/inc/ws2spi.h b/public/sdk/inc/ws2spi.h
new file mode 100644
index 000000000..7855ba327
--- /dev/null
+++ b/public/sdk/inc/ws2spi.h
@@ -0,0 +1,955 @@
+/* WS2SPI.H -- definitions to be used with the WinSock service provider.
+ *
+ * This header file corresponds to version 2.2.x of the WinSock SPI
+ * specification.
+ *
+ * This file includes parts which are Copyright (c) 1982-1986 Regents
+ * of the University of California. All rights reserved. The
+ * Berkeley Software License Agreement specifies the terms and
+ * conditions for redistribution.
+ */
+
+#ifndef _WINSOCK2SPI_
+#define _WINSOCK2SPI_
+
+/*
+ * Ensure structures are packed consistently.
+ */
+
+#include <pshpack4.h>
+
+/*
+ * Pull in WINSOCK2.H if necessary
+ */
+
+#ifndef _WINSOCK2API_
+#include <winsock2.h>
+#endif /* _WINSOCK2API_ */
+
+#define WSPDESCRIPTION_LEN 255
+
+typedef struct WSPData {
+ WORD wVersion;
+ WORD wHighVersion;
+ WCHAR szDescription[WSPDESCRIPTION_LEN+1];
+} WSPDATA, FAR * LPWSPDATA;
+
+typedef struct _WSATHREADID {
+ HANDLE ThreadHandle;
+ DWORD Reserved;
+} WSATHREADID, FAR * LPWSATHREADID;
+
+/*
+ * SPI function linkage.
+ */
+
+#define WSPAPI WSAAPI
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pointer to a blocking callback. A pointer to a blocking callback is
+ * returned from the WPUQueryBlockingCallback() upcall. Note that this
+ * function's signature is not identical to an application's blocking
+ * hook function.
+ */
+
+typedef
+BOOL
+(CALLBACK FAR * LPBLOCKINGCALLBACK)(
+ DWORD dwContext
+ );
+
+/*
+ * Pointer to a user APC function. This is used as a parameter to the
+ * WPUQueueUserApc() upcall. Note that this function's signature is not
+ * identical to an application's completion routine.
+ */
+
+typedef
+VOID
+(CALLBACK FAR * LPWSAUSERAPC)(
+ DWORD dwContext
+ );
+
+/*
+ * Pointers to the individual entries in a service provider's proc table.
+ */
+
+typedef
+SOCKET
+(WSPAPI * LPWSPACCEPT)(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ LPINT addrlen,
+ LPCONDITIONPROC lpfnCondition,
+ DWORD dwCallbackData,
+ LPINT lpErrno
+ );
+
+typedef
+INT
+(WSPAPI * LPWSPADDRESSTOSTRING)(
+ LPSOCKADDR lpsaAddress,
+ DWORD dwAddressLength,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPWSTR lpszAddressString,
+ LPDWORD lpdwAddressStringLength,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPASYNCSELECT)(
+ SOCKET s,
+ HWND hWnd,
+ unsigned int wMsg,
+ long lEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPBIND)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCANCELBLOCKINGCALL)(
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCLEANUP)(
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCLOSESOCKET)(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCONNECT)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPDUPLICATESOCKET)(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPENUMNETWORKEVENTS)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ LPWSANETWORKEVENTS lpNetworkEvents,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPEVENTSELECT)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ long lNetworkEvents,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
+ SOCKET s,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPDWORD lpcbTransfer,
+ BOOL fWait,
+ LPDWORD lpdwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETPEERNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ LPINT namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETSOCKNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ LPINT namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ char FAR * optval,
+ LPINT optlen,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWSPGETQOSBYNAME)(
+ SOCKET s,
+ LPWSABUF lpQOSName,
+ LPQOS lpQOS,
+ LPINT lpErrno
+ );
+
+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
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWSPJOINLEAF)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ DWORD dwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPLISTEN)(
+ SOCKET s,
+ int backlog,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECV)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECVDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpInboundDisconnectData,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECVFROM)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ struct sockaddr FAR * lpFrom,
+ LPINT lpFromlen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSELECT)(
+ int nfds,
+ fd_set FAR * readfds,
+ fd_set FAR * writefds,
+ fd_set FAR * exceptfds,
+ const struct timeval FAR * timeout,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSEND)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSENDDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpOutboundDisconnectData,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSENDTO)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ const struct sockaddr FAR * lpTo,
+ int iTolen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ const char FAR * optval,
+ int optlen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSHUTDOWN)(
+ SOCKET s,
+ int how,
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWSPSOCKET)(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+INT
+(WSPAPI * LPWSPSTRINGTOADDRESS)(
+ LPWSTR AddressString,
+ INT AddressFamily,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPSOCKADDR lpAddress,
+ LPINT lpAddressLength,
+ LPINT lpErrno
+ );
+
+/*
+ * A service provider proc table. This structure is returned by value
+ * from the service provider's WSPStartup() entrypoint.
+ */
+
+typedef struct _WSPPROC_TABLE {
+
+ LPWSPACCEPT lpWSPAccept;
+ LPWSPADDRESSTOSTRING lpWSPAddressToString;
+ LPWSPASYNCSELECT lpWSPAsyncSelect;
+ LPWSPBIND lpWSPBind;
+ LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
+ LPWSPCLEANUP lpWSPCleanup;
+ LPWSPCLOSESOCKET lpWSPCloseSocket;
+ LPWSPCONNECT lpWSPConnect;
+ LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
+ LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
+ LPWSPEVENTSELECT lpWSPEventSelect;
+ LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
+ LPWSPGETPEERNAME lpWSPGetPeerName;
+ LPWSPGETSOCKNAME lpWSPGetSockName;
+ LPWSPGETSOCKOPT lpWSPGetSockOpt;
+ LPWSPGETQOSBYNAME lpWSPGetQOSByName;
+ LPWSPIOCTL lpWSPIoctl;
+ LPWSPJOINLEAF lpWSPJoinLeaf;
+ LPWSPLISTEN lpWSPListen;
+ LPWSPRECV lpWSPRecv;
+ LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
+ LPWSPRECVFROM lpWSPRecvFrom;
+ LPWSPSELECT lpWSPSelect;
+ LPWSPSEND lpWSPSend;
+ LPWSPSENDDISCONNECT lpWSPSendDisconnect;
+ LPWSPSENDTO lpWSPSendTo;
+ LPWSPSETSOCKOPT lpWSPSetSockOpt;
+ LPWSPSHUTDOWN lpWSPShutdown;
+ LPWSPSOCKET lpWSPSocket;
+ LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
+
+} WSPPROC_TABLE, FAR * LPWSPPROC_TABLE;
+
+/*
+ * Pointers to the individual entries in the upcall table.
+ */
+
+typedef
+BOOL
+(WSPAPI * LPWPUCLOSEEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUCLOSESOCKETHANDLE)(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+typedef
+WSAEVENT
+(WSPAPI * LPWPUCREATEEVENT)(
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWPUCREATESOCKETHANDLE)(
+ DWORD dwCatalogEntryId,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUFDISSET)(
+ SOCKET s,
+ fd_set FAR * set
+ );
+
+typedef
+int
+(WSPAPI * LPWPUGETPROVIDERPATH)(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWPUMODIFYIFSHANDLE)(
+ DWORD dwCatalogEntryId,
+ SOCKET ProposedHandle,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPUPOSTMESSAGE)(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUERYBLOCKINGCALLBACK)(
+ DWORD dwCatalogEntryId,
+ LPBLOCKINGCALLBACK FAR * lplpfnCallback,
+ LPDWORD lpdwContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUERYSOCKETHANDLECONTEXT)(
+ SOCKET s,
+ LPDWORD lpContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUEUEAPC)(
+ LPWSATHREADID lpThreadId,
+ LPWSAUSERAPC lpfnUserApc,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPURESETEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPUSETEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUOPENCURRENTTHREAD)(
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUCLOSETHREAD)(
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+/*
+ * The upcall table. This structure is passed by value to the service
+ * provider's WSPStartup() entrypoint.
+ */
+
+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;
+
+/*
+ * WinSock 2 SPI socket function prototypes
+ */
+
+int
+WSPAPI
+WSPStartup(
+ WORD wVersionRequested,
+ LPWSPDATA lpWSPData,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ WSPUPCALLTABLE UpcallTable,
+ LPWSPPROC_TABLE lpProcTable
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSTARTUP)(
+ WORD wVersionRequested,
+ LPWSPDATA lpWSPData,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ WSPUPCALLTABLE UpcallTable,
+ LPWSPPROC_TABLE lpProcTable
+ );
+
+/*
+ * Installation and configuration entrypoints.
+ */
+
+int
+WSPAPI
+WSCEnumProtocols(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCENUMPROTOCOLS)(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCDeinstallProvider(
+ LPGUID lpProviderId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCDEINSTALLPROVIDER)(
+ LPGUID lpProviderId,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCInstallProvider(
+ LPGUID lpProviderId,
+ const WCHAR FAR * lpszProviderDllPath,
+ const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ DWORD dwNumberOfEntries,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCINSTALLPROVIDER)(
+ LPGUID lpProviderId,
+ const WCHAR FAR * lpszProviderDllPath,
+ const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ DWORD dwNumberOfEntries,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCGetProviderPath(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCGETPROVIDERPATH)(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+/*
+ * The following upcall function prototypes are only used by WinSock 2 DLL and
+ * should not be used by any service providers.
+ */
+
+BOOL
+WSPAPI
+WPUCloseEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUCloseSocketHandle(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+WSAEVENT
+WSPAPI
+WPUCreateEvent(
+ LPINT lpErrno
+ );
+
+SOCKET
+WSPAPI
+WPUCreateSocketHandle(
+ DWORD dwCatalogEntryId,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUFDIsSet(
+ SOCKET s,
+ fd_set FAR * set
+ );
+
+int
+WSPAPI
+WPUGetProviderPath(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+SOCKET
+WSPAPI
+WPUModifyIFSHandle(
+ DWORD dwCatalogEntryId,
+ SOCKET ProposedHandle,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUPostMessage(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+
+int
+WSPAPI
+WPUQueryBlockingCallback(
+ DWORD dwCatalogEntryId,
+ LPBLOCKINGCALLBACK FAR * lplpfnCallback,
+ LPDWORD lpdwContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUQuerySocketHandleContext(
+ SOCKET s,
+ LPDWORD lpContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUQueueApc(
+ LPWSATHREADID lpThreadId,
+ LPWSAUSERAPC lpfnUserApc,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUResetEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUSetEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+/*
+ * Installing and uninstalling name space providers.
+ */
+
+INT
+WSPAPI
+WSCInstallNameSpace (
+ LPWSTR lpszIdentifier,
+ LPWSTR lpszPathName,
+ DWORD dwNameSpace,
+ DWORD dwVersion,
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCINSTALLNAMESPACE)(
+ LPWSTR lpszIdentifier,
+ LPWSTR lpszPathName,
+ DWORD dwNameSpace,
+ DWORD dwVersion,
+ LPGUID lpProviderId
+ );
+
+INT
+WSPAPI
+WSCUnInstallNameSpace (
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCUNINSTALLNAMESPACE)(
+ LPGUID lpProviderId
+ );
+
+INT
+WSPAPI
+WSCEnableNSProvider (
+ LPGUID lpProviderId,
+ BOOL fEnable
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCENABLENSPROVIDER)(
+ LPGUID lpProviderId,
+ BOOL fEnable
+ );
+
+/*
+ * Pointers to the individual entries in the namespace proc table.
+ */
+
+typedef
+INT
+(WSAAPI * LPNSPCLEANUP)(
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICEBEGIN)(
+ LPGUID lpProviderId,
+ LPWSAQUERYSETW lpqsRestrictions,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ DWORD dwControlFlags,
+ LPHANDLE lphLookup
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICENEXT)(
+ HANDLE hLookup,
+ DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength,
+ LPWSAQUERYSETW lpqsResults
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICEEND)(
+ HANDLE hLookup
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPSETSERVICE)(
+ LPGUID lpProviderId,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ LPWSAQUERYSETW lpqsRegInfo,
+ WSAESETSERVICEOP essOperation,
+ DWORD dwControlFlags
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPINSTALLSERVICECLASS)(
+ LPGUID lpProviderId,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPREMOVESERVICECLASS)(
+ LPGUID lpProviderId,
+ LPGUID lpServiceClassId
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPGETSERVICECLASSINFO)(
+ LPGUID lpProviderId,
+ LPDWORD lpdwBufSize,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+
+/*
+ * The name space service provider procedure table.
+ */
+
+typedef struct _NSP_ROUTINE {
+
+ /* Structure version information: */
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+
+ /* Procedure-pointer table: */
+
+ LPNSPCLEANUP NSPCleanup;
+ LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
+ LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
+ LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
+ LPNSPSETSERVICE NSPSetService;
+ LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
+ LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
+ LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
+
+} NSP_ROUTINE, FAR * LPNSP_ROUTINE;
+
+/*
+ * Startup procedures.
+ */
+
+INT
+WSAAPI
+NSPStartup(
+ LPGUID lpProviderId,
+ LPNSP_ROUTINE lpnspRoutines
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPSTARTUP)(
+ LPGUID lpProviderId,
+ LPNSP_ROUTINE lpnspRoutines
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#include <poppack.h>
+
+
+#endif /* _WINSOCK2SPI_ */
+