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