home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / WS2SPI.H < prev    next >
C/C++ Source or Header  |  1997-01-16  |  18KB  |  956 lines

  1. /* WS2SPI.H -- definitions to be used with the WinSock service provider.
  2.  *
  3.  * This header file corresponds to version 2.2.x of the WinSock SPI
  4.  * specification.
  5.  *
  6.  * This file includes parts which are Copyright (c) 1982-1986 Regents
  7.  * of the University of California.  All rights reserved.  The
  8.  * Berkeley Software License Agreement specifies the terms and
  9.  * conditions for redistribution.
  10.  */
  11.  
  12. #ifndef _WINSOCK2SPI_
  13. #define _WINSOCK2SPI_
  14.  
  15. /*
  16.  * Ensure structures are packed consistently.
  17.  */
  18.  
  19. #include <pshpack4.h>
  20.  
  21. /*
  22.  * Pull in WINSOCK2.H if necessary
  23.  */
  24.  
  25. #ifndef _WINSOCK2API_
  26. #include <winsock2.h>
  27. #endif /* _WINSOCK2API_ */
  28.  
  29. #define WSPDESCRIPTION_LEN 255
  30.  
  31. typedef struct WSPData {
  32.     WORD         wVersion;
  33.     WORD         wHighVersion;
  34.     WCHAR        szDescription[WSPDESCRIPTION_LEN+1];
  35. } WSPDATA, FAR * LPWSPDATA;
  36.  
  37. typedef struct _WSATHREADID {
  38.     HANDLE ThreadHandle;
  39.     DWORD Reserved;
  40. } WSATHREADID, FAR * LPWSATHREADID;
  41.  
  42. /*
  43.  * SPI function linkage.
  44.  */
  45.  
  46. #define WSPAPI WSAAPI
  47.  
  48.  
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52.  
  53. /*
  54.  * Pointer to a blocking callback. A pointer to a blocking callback is
  55.  * returned from the WPUQueryBlockingCallback() upcall. Note that this
  56.  * function's signature is not identical to an application's blocking
  57.  * hook function.
  58.  */
  59.  
  60. typedef
  61. BOOL
  62. (CALLBACK FAR * LPBLOCKINGCALLBACK)(
  63.     DWORD dwContext
  64.     );
  65.  
  66. /*
  67.  * Pointer to a user APC function. This is used as a parameter to the
  68.  * WPUQueueUserApc() upcall. Note that this function's signature is not
  69.  * identical to an application's completion routine.
  70.  */
  71.  
  72. typedef
  73. VOID
  74. (CALLBACK FAR * LPWSAUSERAPC)(
  75.     DWORD dwContext
  76.     );
  77.  
  78. /*
  79.  * Pointers to the individual entries in a service provider's proc table.
  80.  */
  81.  
  82. typedef
  83. SOCKET
  84. (WSPAPI * LPWSPACCEPT)(
  85.     SOCKET s,
  86.     struct sockaddr FAR * addr,
  87.     LPINT addrlen,
  88.     LPCONDITIONPROC lpfnCondition,
  89.     DWORD dwCallbackData,
  90.     LPINT lpErrno
  91.     );
  92.  
  93. typedef
  94. INT
  95. (WSPAPI * LPWSPADDRESSTOSTRING)(
  96.     LPSOCKADDR lpsaAddress,
  97.     DWORD dwAddressLength,
  98.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  99.     LPWSTR lpszAddressString,
  100.     LPDWORD lpdwAddressStringLength,
  101.     LPINT lpErrno
  102.     );
  103.  
  104. typedef
  105. int
  106. (WSPAPI * LPWSPASYNCSELECT)(
  107.     SOCKET s,
  108.     HWND hWnd,
  109.     unsigned int wMsg,
  110.     long lEvent,
  111.     LPINT lpErrno
  112.     );
  113.  
  114. typedef
  115. int
  116. (WSPAPI * LPWSPBIND)(
  117.     SOCKET s,
  118.     const struct sockaddr FAR * name,
  119.     int namelen,
  120.     LPINT lpErrno
  121.     );
  122.  
  123. typedef
  124. int
  125. (WSPAPI * LPWSPCANCELBLOCKINGCALL)(
  126.     LPINT lpErrno
  127.     );
  128.  
  129. typedef
  130. int
  131. (WSPAPI * LPWSPCLEANUP)(
  132.     LPINT lpErrno
  133.     );
  134.  
  135. typedef
  136. int
  137. (WSPAPI * LPWSPCLOSESOCKET)(
  138.     SOCKET s,
  139.     LPINT lpErrno
  140.     );
  141.  
  142. typedef
  143. int
  144. (WSPAPI * LPWSPCONNECT)(
  145.     SOCKET s,
  146.     const struct sockaddr FAR * name,
  147.     int namelen,
  148.     LPWSABUF lpCallerData,
  149.     LPWSABUF lpCalleeData,
  150.     LPQOS lpSQOS,
  151.     LPQOS lpGQOS,
  152.     LPINT lpErrno
  153.     );
  154.  
  155. typedef
  156. int
  157. (WSPAPI * LPWSPDUPLICATESOCKET)(
  158.     SOCKET s,
  159.     DWORD dwProcessId,
  160.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  161.     LPINT lpErrno
  162.     );
  163.  
  164. typedef
  165. int
  166. (WSPAPI * LPWSPENUMNETWORKEVENTS)(
  167.     SOCKET s,
  168.     WSAEVENT hEventObject,
  169.     LPWSANETWORKEVENTS lpNetworkEvents,
  170.     LPINT lpErrno
  171.     );
  172.  
  173. typedef
  174. int
  175. (WSPAPI * LPWSPEVENTSELECT)(
  176.     SOCKET s,
  177.     WSAEVENT hEventObject,
  178.     long lNetworkEvents,
  179.     LPINT lpErrno
  180.     );
  181.  
  182. typedef
  183. BOOL
  184. (WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
  185.     SOCKET s,
  186.     LPWSAOVERLAPPED lpOverlapped,
  187.     LPDWORD lpcbTransfer,
  188.     BOOL fWait,
  189.     LPDWORD lpdwFlags,
  190.     LPINT lpErrno
  191.     );
  192.  
  193. typedef
  194. int
  195. (WSPAPI * LPWSPGETPEERNAME)(
  196.     SOCKET s,
  197.     struct sockaddr FAR * name,
  198.     LPINT namelen,
  199.     LPINT lpErrno
  200.     );
  201.  
  202. typedef
  203. int
  204. (WSPAPI * LPWSPGETSOCKNAME)(
  205.     SOCKET s,
  206.     struct sockaddr FAR * name,
  207.     LPINT namelen,
  208.     LPINT lpErrno
  209.     );
  210.  
  211. typedef
  212. int
  213. (WSPAPI * LPWSPGETSOCKOPT)(
  214.     SOCKET s,
  215.     int level,
  216.     int optname,
  217.     char FAR * optval,
  218.     LPINT optlen,
  219.     LPINT lpErrno
  220.     );
  221.  
  222. typedef
  223. BOOL
  224. (WSPAPI * LPWSPGETQOSBYNAME)(
  225.     SOCKET s,
  226.     LPWSABUF lpQOSName,
  227.     LPQOS lpQOS,
  228.     LPINT lpErrno
  229.     );
  230.  
  231. typedef
  232. int
  233. (WSPAPI * LPWSPIOCTL)(
  234.     SOCKET s,
  235.     DWORD dwIoControlCode,
  236.     LPVOID lpvInBuffer,
  237.     DWORD cbInBuffer,
  238.     LPVOID lpvOutBuffer,
  239.     DWORD cbOutBuffer,
  240.     LPDWORD lpcbBytesReturned,
  241.     LPWSAOVERLAPPED lpOverlapped,
  242.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  243.     LPWSATHREADID lpThreadId,
  244.     LPINT lpErrno
  245.     );
  246.  
  247. typedef
  248. SOCKET
  249. (WSPAPI * LPWSPJOINLEAF)(
  250.     SOCKET s,
  251.     const struct sockaddr FAR * name,
  252.     int namelen,
  253.     LPWSABUF lpCallerData,
  254.     LPWSABUF lpCalleeData,
  255.     LPQOS lpSQOS,
  256.     LPQOS lpGQOS,
  257.     DWORD dwFlags,
  258.     LPINT lpErrno
  259.     );
  260.  
  261. typedef
  262. int
  263. (WSPAPI * LPWSPLISTEN)(
  264.     SOCKET s,
  265.     int backlog,
  266.     LPINT lpErrno
  267.     );
  268.  
  269. typedef
  270. int
  271. (WSPAPI * LPWSPRECV)(
  272.     SOCKET s,
  273.     LPWSABUF lpBuffers,
  274.     DWORD dwBufferCount,
  275.     LPDWORD lpNumberOfBytesRecvd,
  276.     LPDWORD lpFlags,
  277.     LPWSAOVERLAPPED lpOverlapped,
  278.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  279.     LPWSATHREADID lpThreadId,
  280.     LPINT lpErrno
  281.     );
  282.  
  283. typedef
  284. int
  285. (WSPAPI * LPWSPRECVDISCONNECT)(
  286.     SOCKET s,
  287.     LPWSABUF lpInboundDisconnectData,
  288.     LPINT lpErrno
  289.     );
  290.  
  291. typedef
  292. int
  293. (WSPAPI * LPWSPRECVFROM)(
  294.     SOCKET s,
  295.     LPWSABUF lpBuffers,
  296.     DWORD dwBufferCount,
  297.     LPDWORD lpNumberOfBytesRecvd,
  298.     LPDWORD lpFlags,
  299.     struct sockaddr FAR * lpFrom,
  300.     LPINT lpFromlen,
  301.     LPWSAOVERLAPPED lpOverlapped,
  302.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  303.     LPWSATHREADID lpThreadId,
  304.     LPINT lpErrno
  305.     );
  306.  
  307. typedef
  308. int
  309. (WSPAPI * LPWSPSELECT)(
  310.     int nfds,
  311.     fd_set FAR * readfds,
  312.     fd_set FAR * writefds,
  313.     fd_set FAR * exceptfds,
  314.     const struct timeval FAR * timeout,
  315.     LPINT lpErrno
  316.     );
  317.  
  318. typedef
  319. int
  320. (WSPAPI * LPWSPSEND)(
  321.     SOCKET s,
  322.     LPWSABUF lpBuffers,
  323.     DWORD dwBufferCount,
  324.     LPDWORD lpNumberOfBytesSent,
  325.     DWORD dwFlags,
  326.     LPWSAOVERLAPPED lpOverlapped,
  327.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  328.     LPWSATHREADID lpThreadId,
  329.     LPINT lpErrno
  330.     );
  331.  
  332. typedef
  333. int
  334. (WSPAPI * LPWSPSENDDISCONNECT)(
  335.     SOCKET s,
  336.     LPWSABUF lpOutboundDisconnectData,
  337.     LPINT lpErrno
  338.     );
  339.  
  340. typedef
  341. int
  342. (WSPAPI * LPWSPSENDTO)(
  343.     SOCKET s,
  344.     LPWSABUF lpBuffers,
  345.     DWORD dwBufferCount,
  346.     LPDWORD lpNumberOfBytesSent,
  347.     DWORD dwFlags,
  348.     const struct sockaddr FAR * lpTo,
  349.     int iTolen,
  350.     LPWSAOVERLAPPED lpOverlapped,
  351.     LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
  352.     LPWSATHREADID lpThreadId,
  353.     LPINT lpErrno
  354.     );
  355.  
  356. typedef
  357. int
  358. (WSPAPI * LPWSPSETSOCKOPT)(
  359.     SOCKET s,
  360.     int level,
  361.     int optname,
  362.     const char FAR * optval,
  363.     int optlen,
  364.     LPINT lpErrno
  365.     );
  366.  
  367. typedef
  368. int
  369. (WSPAPI * LPWSPSHUTDOWN)(
  370.     SOCKET s,
  371.     int how,
  372.     LPINT lpErrno
  373.     );
  374.  
  375. typedef
  376. SOCKET
  377. (WSPAPI * LPWSPSOCKET)(
  378.     int af,
  379.     int type,
  380.     int protocol,
  381.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  382.     GROUP g,
  383.     DWORD dwFlags,
  384.     LPINT lpErrno
  385.     );
  386.  
  387. typedef
  388. INT
  389. (WSPAPI * LPWSPSTRINGTOADDRESS)(
  390.     LPWSTR AddressString,
  391.     INT AddressFamily,
  392.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  393.     LPSOCKADDR lpAddress,
  394.     LPINT lpAddressLength,
  395.     LPINT lpErrno
  396.     );
  397.  
  398. /*
  399.  * A service provider proc table. This structure is returned by value
  400.  * from the service provider's WSPStartup() entrypoint.
  401.  */
  402.  
  403. typedef struct _WSPPROC_TABLE {
  404.  
  405.     LPWSPACCEPT              lpWSPAccept;
  406.     LPWSPADDRESSTOSTRING     lpWSPAddressToString;
  407.     LPWSPASYNCSELECT         lpWSPAsyncSelect;
  408.     LPWSPBIND                lpWSPBind;
  409.     LPWSPCANCELBLOCKINGCALL  lpWSPCancelBlockingCall;
  410.     LPWSPCLEANUP             lpWSPCleanup;
  411.     LPWSPCLOSESOCKET         lpWSPCloseSocket;
  412.     LPWSPCONNECT             lpWSPConnect;
  413.     LPWSPDUPLICATESOCKET     lpWSPDuplicateSocket;
  414.     LPWSPENUMNETWORKEVENTS   lpWSPEnumNetworkEvents;
  415.     LPWSPEVENTSELECT         lpWSPEventSelect;
  416.     LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
  417.     LPWSPGETPEERNAME         lpWSPGetPeerName;
  418.     LPWSPGETSOCKNAME         lpWSPGetSockName;
  419.     LPWSPGETSOCKOPT          lpWSPGetSockOpt;
  420.     LPWSPGETQOSBYNAME        lpWSPGetQOSByName;
  421.     LPWSPIOCTL               lpWSPIoctl;
  422.     LPWSPJOINLEAF            lpWSPJoinLeaf;
  423.     LPWSPLISTEN              lpWSPListen;
  424.     LPWSPRECV                lpWSPRecv;
  425.     LPWSPRECVDISCONNECT      lpWSPRecvDisconnect;
  426.     LPWSPRECVFROM            lpWSPRecvFrom;
  427.     LPWSPSELECT              lpWSPSelect;
  428.     LPWSPSEND                lpWSPSend;
  429.     LPWSPSENDDISCONNECT      lpWSPSendDisconnect;
  430.     LPWSPSENDTO              lpWSPSendTo;
  431.     LPWSPSETSOCKOPT          lpWSPSetSockOpt;
  432.     LPWSPSHUTDOWN            lpWSPShutdown;
  433.     LPWSPSOCKET              lpWSPSocket;
  434.     LPWSPSTRINGTOADDRESS     lpWSPStringToAddress;
  435.  
  436. } WSPPROC_TABLE, FAR * LPWSPPROC_TABLE;
  437.  
  438. /*
  439.  * Pointers to the individual entries in the upcall table.
  440.  */
  441.  
  442. typedef
  443. BOOL
  444. (WSPAPI * LPWPUCLOSEEVENT)(
  445.     WSAEVENT hEvent,
  446.     LPINT lpErrno
  447.     );
  448.  
  449. typedef
  450. int
  451. (WSPAPI * LPWPUCLOSESOCKETHANDLE)(
  452.     SOCKET s,
  453.     LPINT lpErrno
  454.     );
  455.  
  456. typedef
  457. WSAEVENT
  458. (WSPAPI * LPWPUCREATEEVENT)(
  459.     LPINT lpErrno
  460.     );
  461.  
  462. typedef
  463. SOCKET
  464. (WSPAPI * LPWPUCREATESOCKETHANDLE)(
  465.     DWORD dwCatalogEntryId,
  466.     DWORD dwContext,
  467.     LPINT lpErrno
  468.     );
  469.  
  470. typedef
  471. int
  472. (WSPAPI * LPWPUFDISSET)(
  473.     SOCKET s,
  474.     fd_set FAR * set
  475.     );
  476.  
  477. typedef
  478. int
  479. (WSPAPI * LPWPUGETPROVIDERPATH)(
  480.     LPGUID lpProviderId,
  481.     WCHAR FAR * lpszProviderDllPath,
  482.     LPINT lpProviderDllPathLen,
  483.     LPINT lpErrno
  484.     );
  485.  
  486. typedef
  487. SOCKET
  488. (WSPAPI * LPWPUMODIFYIFSHANDLE)(
  489.     DWORD dwCatalogEntryId,
  490.     SOCKET ProposedHandle,
  491.     LPINT lpErrno
  492.     );
  493.  
  494. typedef
  495. BOOL
  496. (WSPAPI * LPWPUPOSTMESSAGE)(
  497.     HWND hWnd,
  498.     UINT Msg,
  499.     WPARAM wParam,
  500.     LPARAM lParam
  501.     );
  502.  
  503. typedef
  504. int
  505. (WSPAPI * LPWPUQUERYBLOCKINGCALLBACK)(
  506.     DWORD dwCatalogEntryId,
  507.     LPBLOCKINGCALLBACK FAR * lplpfnCallback,
  508.     LPDWORD lpdwContext,
  509.     LPINT lpErrno
  510.     );
  511.  
  512. typedef
  513. int
  514. (WSPAPI * LPWPUQUERYSOCKETHANDLECONTEXT)(
  515.     SOCKET s,
  516.     LPDWORD lpContext,
  517.     LPINT lpErrno
  518.     );
  519.  
  520. typedef
  521. int
  522. (WSPAPI * LPWPUQUEUEAPC)(
  523.     LPWSATHREADID lpThreadId,
  524.     LPWSAUSERAPC lpfnUserApc,
  525.     DWORD dwContext,
  526.     LPINT lpErrno
  527.     );
  528.  
  529. typedef
  530. BOOL
  531. (WSPAPI * LPWPURESETEVENT)(
  532.     WSAEVENT hEvent,
  533.     LPINT lpErrno
  534.     );
  535.  
  536. typedef
  537. BOOL
  538. (WSPAPI * LPWPUSETEVENT)(
  539.     WSAEVENT hEvent,
  540.     LPINT lpErrno
  541.     );
  542.  
  543. typedef
  544. int
  545. (WSPAPI * LPWPUOPENCURRENTTHREAD)(
  546.     LPWSATHREADID lpThreadId,
  547.     LPINT lpErrno
  548.     );
  549.  
  550. typedef
  551. int
  552. (WSPAPI * LPWPUCLOSETHREAD)(
  553.     LPWSATHREADID lpThreadId,
  554.     LPINT lpErrno
  555.     );
  556.  
  557. /*
  558.  * The upcall table. This structure is passed by value to the service
  559.  * provider's WSPStartup() entrypoint.
  560.  */
  561.  
  562. typedef struct _WSPUPCALLTABLE {
  563.  
  564.     LPWPUCLOSEEVENT               lpWPUCloseEvent;
  565.     LPWPUCLOSESOCKETHANDLE        lpWPUCloseSocketHandle;
  566.     LPWPUCREATEEVENT              lpWPUCreateEvent;
  567.     LPWPUCREATESOCKETHANDLE       lpWPUCreateSocketHandle;
  568.     LPWPUFDISSET                  lpWPUFDIsSet;
  569.     LPWPUGETPROVIDERPATH          lpWPUGetProviderPath;
  570.     LPWPUMODIFYIFSHANDLE          lpWPUModifyIFSHandle;
  571.     LPWPUPOSTMESSAGE              lpWPUPostMessage;
  572.     LPWPUQUERYBLOCKINGCALLBACK    lpWPUQueryBlockingCallback;
  573.     LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
  574.     LPWPUQUEUEAPC                 lpWPUQueueApc;
  575.     LPWPURESETEVENT               lpWPUResetEvent;
  576.     LPWPUSETEVENT                 lpWPUSetEvent;
  577.     LPWPUOPENCURRENTTHREAD        lpWPUOpenCurrentThread;
  578.     LPWPUCLOSETHREAD              lpWPUCloseThread;
  579.  
  580. } WSPUPCALLTABLE, FAR * LPWSPUPCALLTABLE;
  581.  
  582. /*
  583.  *  WinSock 2 SPI socket function prototypes
  584.  */
  585.  
  586. int
  587. WSPAPI
  588. WSPStartup(
  589.     WORD wVersionRequested,
  590.     LPWSPDATA lpWSPData,
  591.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  592.     WSPUPCALLTABLE UpcallTable,
  593.     LPWSPPROC_TABLE lpProcTable
  594.     );
  595.  
  596. typedef
  597. int
  598. (WSPAPI * LPWSPSTARTUP)(
  599.     WORD wVersionRequested,
  600.     LPWSPDATA lpWSPData,
  601.     LPWSAPROTOCOL_INFOW lpProtocolInfo,
  602.     WSPUPCALLTABLE UpcallTable,
  603.     LPWSPPROC_TABLE lpProcTable
  604.     );
  605.  
  606. /*
  607.  * Installation and configuration entrypoints.
  608.  */
  609.  
  610. int
  611. WSPAPI
  612. WSCEnumProtocols(
  613.     LPINT lpiProtocols,
  614.     LPWSAPROTOCOL_INFOW lpProtocolBuffer,
  615.     LPDWORD lpdwBufferLength,
  616.     LPINT lpErrno
  617.     );
  618.  
  619. typedef
  620. int
  621. (WSPAPI * LPWSCENUMPROTOCOLS)(
  622.     LPINT lpiProtocols,
  623.     LPWSAPROTOCOL_INFOW lpProtocolBuffer,
  624.     LPDWORD lpdwBufferLength,
  625.     LPINT lpErrno
  626.     );
  627.  
  628. int
  629. WSPAPI
  630. WSCDeinstallProvider(
  631.     LPGUID lpProviderId,
  632.     LPINT lpErrno
  633.     );
  634.  
  635. typedef
  636. int
  637. (WSPAPI * LPWSCDEINSTALLPROVIDER)(
  638.     LPGUID lpProviderId,
  639.     LPINT lpErrno
  640.     );
  641.  
  642. int
  643. WSPAPI
  644. WSCInstallProvider(
  645.     LPGUID lpProviderId,
  646.     const WCHAR FAR * lpszProviderDllPath,
  647.     const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  648.     DWORD dwNumberOfEntries,
  649.     LPINT lpErrno
  650.     );
  651.  
  652. typedef
  653. int
  654. (WSPAPI * LPWSCINSTALLPROVIDER)(
  655.     LPGUID lpProviderId,
  656.     const WCHAR FAR * lpszProviderDllPath,
  657.     const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  658.     DWORD dwNumberOfEntries,
  659.     LPINT lpErrno
  660.     );
  661.  
  662. int
  663. WSPAPI
  664. WSCGetProviderPath(
  665.     LPGUID lpProviderId,
  666.     WCHAR FAR * lpszProviderDllPath,
  667.     LPINT lpProviderDllPathLen,
  668.     LPINT lpErrno
  669.     );
  670.  
  671. typedef
  672. int
  673. (WSPAPI * LPWSCGETPROVIDERPATH)(
  674.     LPGUID lpProviderId,
  675.     WCHAR FAR * lpszProviderDllPath,
  676.     LPINT lpProviderDllPathLen,
  677.     LPINT lpErrno
  678.     );
  679.  
  680. /*
  681.  *  The following upcall function prototypes are only used by WinSock 2 DLL and
  682.  *  should not be used by any service providers.
  683.  */
  684.  
  685. BOOL
  686. WSPAPI
  687. WPUCloseEvent(
  688.     WSAEVENT hEvent,
  689.     LPINT lpErrno
  690.     );
  691.  
  692. int
  693. WSPAPI
  694. WPUCloseSocketHandle(
  695.     SOCKET s,
  696.     LPINT lpErrno
  697.     );
  698.  
  699. WSAEVENT
  700. WSPAPI
  701. WPUCreateEvent(
  702.     LPINT lpErrno
  703.     );
  704.  
  705. SOCKET
  706. WSPAPI
  707. WPUCreateSocketHandle(
  708.     DWORD dwCatalogEntryId,
  709.     DWORD dwContext,
  710.     LPINT lpErrno
  711.     );
  712.  
  713. int
  714. WSPAPI
  715. WPUFDIsSet(
  716.     SOCKET s,
  717.     fd_set FAR * set
  718.     );
  719.  
  720. int
  721. WSPAPI
  722. WPUGetProviderPath(
  723.     LPGUID lpProviderId,
  724.     WCHAR FAR * lpszProviderDllPath,
  725.     LPINT lpProviderDllPathLen,
  726.     LPINT lpErrno
  727.     );
  728.  
  729. SOCKET
  730. WSPAPI
  731. WPUModifyIFSHandle(
  732.     DWORD dwCatalogEntryId,
  733.     SOCKET ProposedHandle,
  734.     LPINT lpErrno
  735.     );
  736.  
  737. BOOL
  738. WSPAPI
  739. WPUPostMessage(
  740.     HWND hWnd,
  741.     UINT Msg,
  742.     WPARAM wParam,
  743.     LPARAM lParam
  744.     );
  745.  
  746. int
  747. WSPAPI
  748. WPUQueryBlockingCallback(
  749.     DWORD dwCatalogEntryId,
  750.     LPBLOCKINGCALLBACK FAR * lplpfnCallback,
  751.     LPDWORD lpdwContext,
  752.     LPINT lpErrno
  753.     );
  754.  
  755. int
  756. WSPAPI
  757. WPUQuerySocketHandleContext(
  758.     SOCKET s,
  759.     LPDWORD lpContext,
  760.     LPINT lpErrno
  761.     );
  762.  
  763. int
  764. WSPAPI
  765. WPUQueueApc(
  766.     LPWSATHREADID lpThreadId,
  767.     LPWSAUSERAPC lpfnUserApc,
  768.     DWORD dwContext,
  769.     LPINT lpErrno
  770.     );
  771.  
  772. BOOL
  773. WSPAPI
  774. WPUResetEvent(
  775.     WSAEVENT hEvent,
  776.     LPINT lpErrno
  777.     );
  778.  
  779. BOOL
  780. WSPAPI
  781. WPUSetEvent(
  782.     WSAEVENT hEvent,
  783.     LPINT lpErrno
  784.     );
  785.  
  786. /*
  787.  * Installing and uninstalling name space providers.
  788.  */
  789.  
  790. INT
  791. WSPAPI
  792. WSCInstallNameSpace (
  793.     LPWSTR lpszIdentifier,
  794.     LPWSTR lpszPathName,
  795.     DWORD dwNameSpace,
  796.     DWORD dwVersion,
  797.     LPGUID lpProviderId
  798.     );
  799.  
  800. typedef
  801. INT
  802. (WSPAPI * LPWSCINSTALLNAMESPACE)(
  803.     LPWSTR lpszIdentifier,
  804.     LPWSTR lpszPathName,
  805.     DWORD dwNameSpace,
  806.     DWORD dwVersion,
  807.     LPGUID lpProviderId
  808.     );
  809.  
  810. INT
  811. WSPAPI
  812. WSCUnInstallNameSpace (
  813.     LPGUID lpProviderId
  814.     );
  815.  
  816. typedef
  817. INT
  818. (WSPAPI * LPWSCUNINSTALLNAMESPACE)(
  819.     LPGUID lpProviderId
  820.     );
  821.  
  822. INT
  823. WSPAPI
  824. WSCEnableNSProvider (
  825.     LPGUID lpProviderId,
  826.     BOOL fEnable
  827.     );
  828.  
  829. typedef
  830. INT
  831. (WSPAPI * LPWSCENABLENSPROVIDER)(
  832.     LPGUID lpProviderId,
  833.     BOOL fEnable
  834.     );
  835.  
  836. /*
  837.  * Pointers to the individual entries in the namespace proc table.
  838.  */
  839.  
  840. typedef
  841. INT
  842. (WSAAPI * LPNSPCLEANUP)(
  843.     LPGUID lpProviderId
  844.     );
  845.  
  846. typedef
  847. INT
  848. (WSAAPI * LPNSPLOOKUPSERVICEBEGIN)(
  849.     LPGUID lpProviderId,
  850.     LPWSAQUERYSETW lpqsRestrictions,
  851.     LPWSASERVICECLASSINFOW lpServiceClassInfo,
  852.     DWORD dwControlFlags,
  853.     LPHANDLE lphLookup
  854.     );
  855.  
  856. typedef
  857. INT
  858. (WSAAPI * LPNSPLOOKUPSERVICENEXT)(
  859.     HANDLE hLookup,
  860.     DWORD dwControlFlags,
  861.     LPDWORD lpdwBufferLength,
  862.     LPWSAQUERYSETW lpqsResults
  863.     );
  864.  
  865. typedef
  866. INT
  867. (WSAAPI * LPNSPLOOKUPSERVICEEND)(
  868.     HANDLE hLookup
  869.     );
  870.  
  871. typedef
  872. INT
  873. (WSAAPI * LPNSPSETSERVICE)(
  874.     LPGUID lpProviderId,
  875.     LPWSASERVICECLASSINFOW lpServiceClassInfo,
  876.     LPWSAQUERYSETW lpqsRegInfo,
  877.     WSAESETSERVICEOP essOperation,
  878.     DWORD dwControlFlags
  879.     );
  880.  
  881. typedef
  882. INT
  883. (WSAAPI * LPNSPINSTALLSERVICECLASS)(
  884.     LPGUID lpProviderId,
  885.     LPWSASERVICECLASSINFOW lpServiceClassInfo
  886.     );
  887.  
  888. typedef
  889. INT
  890. (WSAAPI * LPNSPREMOVESERVICECLASS)(
  891.     LPGUID lpProviderId,
  892.     LPGUID lpServiceClassId
  893.     );
  894.  
  895. typedef
  896. INT
  897. (WSAAPI * LPNSPGETSERVICECLASSINFO)(
  898.     LPGUID lpProviderId,
  899.     LPDWORD lpdwBufSize,
  900.     LPWSASERVICECLASSINFOW lpServiceClassInfo
  901.     );
  902.  
  903. /*
  904.  * The name space service provider procedure table.
  905.  */
  906.  
  907. typedef struct _NSP_ROUTINE {
  908.  
  909.     /* Structure version information: */
  910.     DWORD           cbSize;
  911.     DWORD           dwMajorVersion;
  912.     DWORD           dwMinorVersion;
  913.  
  914.     /* Procedure-pointer table: */
  915.  
  916.     LPNSPCLEANUP             NSPCleanup;
  917.     LPNSPLOOKUPSERVICEBEGIN  NSPLookupServiceBegin;
  918.     LPNSPLOOKUPSERVICENEXT   NSPLookupServiceNext;
  919.     LPNSPLOOKUPSERVICEEND    NSPLookupServiceEnd;
  920.     LPNSPSETSERVICE          NSPSetService;
  921.     LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
  922.     LPNSPREMOVESERVICECLASS  NSPRemoveServiceClass;
  923.     LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
  924.  
  925. } NSP_ROUTINE, FAR * LPNSP_ROUTINE;
  926.  
  927. /*
  928.  * Startup procedures.
  929.  */
  930.  
  931. INT
  932. WSAAPI
  933. NSPStartup(
  934.     LPGUID lpProviderId,
  935.     LPNSP_ROUTINE lpnspRoutines
  936.     );
  937.  
  938. typedef
  939. INT
  940. (WSAAPI * LPNSPSTARTUP)(
  941.     LPGUID lpProviderId,
  942.     LPNSP_ROUTINE lpnspRoutines
  943.     );
  944.  
  945.  
  946. #ifdef __cplusplus
  947. }
  948. #endif
  949.  
  950.  
  951. #include <poppack.h>
  952.  
  953.  
  954. #endif  /* _WINSOCK2SPI_ */
  955.  
  956.