holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ws2spi.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 /*
       
     2  * ws2spi.h
       
     3  *
       
     4  * Winsock 2 Service Provider Interface.
       
     5  *
       
     6  *
       
     7  * THIS SOFTWARE IS NOT COPYRIGHTED
       
     8  *
       
     9  * This source code is offered for use in the public domain. You may
       
    10  * use, modify or distribute it freely.
       
    11  *
       
    12  * This code is distributed in the hope that it will be useful but
       
    13  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
       
    14  * DISCLAIMED. This includes but is not limited to warranties of
       
    15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       
    16  *
       
    17  */
       
    18 #ifndef _WS2SPI_H
       
    19 #define _WS2SPI_H
       
    20 #if __GNUC__ >= 3
       
    21 #pragma GCC system_header
       
    22 #endif
       
    23 
       
    24 #include <winsock2.h>
       
    25 
       
    26 #ifdef __cplusplus
       
    27 extern "C" {
       
    28 #endif /* __cplusplus */
       
    29 
       
    30 #define WSPAPI WSAAPI
       
    31 #define WSPDESCRIPTION_LEN 255
       
    32 
       
    33 #ifndef RC_INVOKED
       
    34 
       
    35 typedef struct WSPData {
       
    36 	WORD wVersion;
       
    37 	WORD wHighVersion;
       
    38 	WCHAR szDescription[WSPDESCRIPTION_LEN+1];
       
    39 } WSPDATA, FAR *LPWSPDATA;
       
    40 typedef struct _WSATHREADID {
       
    41 	HANDLE ThreadHandle;
       
    42 	DWORD Reserved;
       
    43 } WSATHREADID, FAR *LPWSATHREADID;
       
    44 
       
    45 typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK)(DWORD);
       
    46 typedef VOID (CALLBACK FAR *LPWSAUSERAPC)(DWORD);
       
    47 
       
    48 /* Prototypes for service provider procedure table */
       
    49 typedef SOCKET (WSPAPI *LPWSPACCEPT)(SOCKET,LPSOCKADDR,LPINT,LPCONDITIONPROC,DWORD,LPINT);
       
    50 typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD,LPINT);
       
    51 typedef INT (WSPAPI *LPWSPASYNCSELECT)(SOCKET,HWND,UINT,LONG,LPINT);
       
    52 typedef INT (WSPAPI *LPWSPBIND)(SOCKET,const struct sockaddr*,INT,LPINT);
       
    53 typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT);
       
    54 typedef INT (WSPAPI *LPWSPCLEANUP)(LPINT);
       
    55 typedef INT (WSPAPI *LPWSPCLOSESOCKET)(SOCKET,LPINT);
       
    56 typedef INT (WSPAPI *LPWSPCONNECT)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPINT);
       
    57 typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW,LPINT);
       
    58 typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS,LPINT);
       
    59 typedef INT (WSPAPI *LPWSPEVENTSELECT)(SOCKET,WSAEVENT,LONG,LPINT);
       
    60 typedef BOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD,LPINT);
       
    61 typedef INT (WSPAPI *LPWSPGETPEERNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
       
    62 typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS,LPINT);
       
    63 typedef INT (WSPAPI *LPWSPGETSOCKNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
       
    64 typedef INT (WSPAPI *LPWSPGETSOCKOPT)(SOCKET,INT,INT,CHAR FAR*,LPINT,LPINT);
       
    65 typedef INT (WSPAPI *LPWSPIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,
       
    66 	     LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
       
    67 typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD,LPINT);
       
    68 typedef INT (WSPAPI *LPWSPLISTEN)(SOCKET,INT,LPINT);
       
    69 typedef INT (WSPAPI *LPWSPRECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,
       
    70 LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
       
    71 typedef INT (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET,LPWSABUF,LPINT);
       
    72 typedef INT (WSPAPI *LPWSPRECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPSOCKADDR,
       
    73 LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
       
    74 typedef INT (WSPAPI *LPWSPSELECT)(INT,LPFD_SET,LPFD_SET,LPFD_SET,CONST TIMEVAL*,LPINT);
       
    75 typedef INT (WSPAPI *LPWSPSEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,
       
    76 LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
       
    77 typedef INT (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET,LPWSABUF,LPINT);
       
    78 typedef INT (WSPAPI *LPWSPSENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr*,
       
    79 	     INT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
       
    80 typedef INT (WSPAPI *LPWSPSETSOCKOPT)(SOCKET,INT,INT,CONST CHAR FAR*,INT,LPINT);
       
    81 typedef INT (WSPAPI *LPWSPSHUTDOWN)(SOCKET,INT,LPINT);
       
    82 typedef SOCKET (WSPAPI *LPWSPSOCKET)(INT,INT,INT,LPWSAPROTOCOL_INFOW,GROUP,DWORD,LPINT);
       
    83 typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT,LPINT);
       
    84 
       
    85 /* Service provider procedure table */
       
    86 typedef struct _WSPPROC_TABLE {
       
    87   LPWSPACCEPT lpWSPAccept;
       
    88   LPWSPADDRESSTOSTRING lpWSPAddressToString;
       
    89   LPWSPASYNCSELECT lpWSPAsyncSelect;
       
    90   LPWSPBIND lpWSPBind;
       
    91   LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
       
    92   LPWSPCLEANUP lpWSPCleanup;
       
    93   LPWSPCLOSESOCKET lpWSPCloseSocket;
       
    94   LPWSPCONNECT lpWSPConnect;
       
    95   LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
       
    96   LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
       
    97   LPWSPEVENTSELECT lpWSPEventSelect;
       
    98   LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
       
    99   LPWSPGETPEERNAME lpWSPGetPeerName;
       
   100   LPWSPGETSOCKNAME lpWSPGetSockName;
       
   101   LPWSPGETSOCKOPT lpWSPGetSockOpt;
       
   102   LPWSPGETQOSBYNAME lpWSPGetQOSByName;
       
   103   LPWSPIOCTL lpWSPIoctl;
       
   104   LPWSPJOINLEAF lpWSPJoinLeaf;
       
   105   LPWSPLISTEN lpWSPListen;
       
   106   LPWSPRECV lpWSPRecv;
       
   107   LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
       
   108   LPWSPRECVFROM lpWSPRecvFrom;
       
   109   LPWSPSELECT lpWSPSelect;
       
   110   LPWSPSEND lpWSPSend;
       
   111   LPWSPSENDDISCONNECT lpWSPSendDisconnect;
       
   112   LPWSPSENDTO lpWSPSendTo;
       
   113   LPWSPSETSOCKOPT lpWSPSetSockOpt;
       
   114   LPWSPSHUTDOWN lpWSPShutdown;
       
   115   LPWSPSOCKET lpWSPSocket;
       
   116   LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
       
   117 } WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
       
   118 
       
   119 /* Prototypes for service provider upcall procedure table */
       
   120 typedef BOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT,LPINT);
       
   121 typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET,LPINT);
       
   122 typedef INT (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID,LPINT);
       
   123 typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT);
       
   124 typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD,DWORD,LPINT);
       
   125 typedef SOCKET (WSPAPI *LPWPUFDISSET)(SOCKET,LPFD_SET);
       
   126 typedef INT (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID,LPWSTR,LPINT,LPINT);
       
   127 typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD,SOCKET,LPINT);
       
   128 typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID,LPINT);
       
   129 typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM);
       
   130 typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD,LPBLOCKINGCALLBACK FAR*,LPDWORD,LPINT);
       
   131 typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET,LPDWORD,LPINT);
       
   132 typedef INT (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID,LPWSAUSERAPC,DWORD,LPINT);
       
   133 typedef BOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT,LPINT);
       
   134 typedef BOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT,LPINT);
       
   135 /* Available only directly from the DLL */
       
   136 typedef INT (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
       
   137 
       
   138 /* Service Provider upcall table */
       
   139 typedef struct _WSPUPCALLTABLE {
       
   140 	LPWPUCLOSEEVENT lpWPUCloseEvent;
       
   141 	LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
       
   142 	LPWPUCREATEEVENT lpWPUCreateEvent;
       
   143 	LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
       
   144 	LPWPUFDISSET lpWPUFDIsSet;
       
   145 	LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
       
   146 	LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
       
   147 	LPWPUPOSTMESSAGE lpWPUPostMessage;
       
   148 	LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
       
   149 	LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
       
   150 	LPWPUQUEUEAPC lpWPUQueueApc;
       
   151 	LPWPURESETEVENT lpWPUResetEvent;
       
   152 	LPWPUSETEVENT lpWPUSetEvent;
       
   153 	LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
       
   154 	LPWPUCLOSETHREAD lpWPUCloseThread;
       
   155 } WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
       
   156 
       
   157 typedef INT (WSPAPI *LPWSPSTARTUP)(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
       
   158 
       
   159 /* Prototypes for service provider namespace procedure table */
       
   160 typedef INT (WSPAPI *LPNSPCLEANUP)(LPGUID);
       
   161 typedef INT (WSPAPI *LPNSPGETSERVICECLASSINFO)(LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
       
   162 typedef INT (WSPAPI *LPNSPINSTALLSERVICECLASS)(LPGUID,LPWSASERVICECLASSINFOW);
       
   163 typedef INT (WSPAPI *LPNSPLOOKUPSERVICEBEGIN)(LPGUID,LPWSAQUERYSETW,LPWSASERVICECLASSINFOW,DWORD,LPHANDLE);
       
   164 typedef INT (WSPAPI *LPNSPLOOKUPSERVICEEND)(HANDLE);
       
   165 typedef INT (WSPAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSET);
       
   166 typedef INT (WSPAPI *LPNSPREMOVESERVICECLASS)(LPGUID,LPGUID);
       
   167 typedef INT (WSPAPI *LPNSPSETSERVICE)(LPGUID,LPWSASERVICECLASSINFOW,LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
       
   168 
       
   169 typedef struct _NSP_ROUTINE {
       
   170   DWORD cbSize;
       
   171   DWORD dwMajorVersion;
       
   172   DWORD dwMinorVersion;
       
   173   LPNSPCLEANUP NSPCleanup;
       
   174   LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
       
   175   LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
       
   176   LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
       
   177   LPNSPSETSERVICE NSPSetService;
       
   178   LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
       
   179   LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
       
   180   LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
       
   181 } NSP_ROUTINE, *PNSP_ROUTINE, *LPNSP_ROUTINE; 
       
   182 
       
   183 INT WSPAPI NSPStartup(LPGUID,LPNSP_ROUTINE);
       
   184 
       
   185 /* WinSock 2 DLL function prototypes */
       
   186 INT WSPAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
       
   187 INT WSPAPI WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
       
   188 INT WSPAPI WSCDeinstallProvider(LPGUID,LPINT);
       
   189 INT WSPAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT);
       
   190 INT WSPAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT);
       
   191 INT WSPAPI WSCInstallProvider(CONST LPGUID,CONST LPWSTR,CONST LPWSAPROTOCOL_INFOW,DWORD,LPINT);
       
   192 INT WSPAPI WSCEnableNSProvider(LPGUID,BOOL);
       
   193 INT WSPAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID);
       
   194 INT WSPAPI WSCUnInstallNameSpace(LPGUID);
       
   195 INT WSPAPI WSCWriteProviderOrder(LPDWORD,DWORD);
       
   196 
       
   197 #endif /* RC_INVOKED */
       
   198 
       
   199 #ifdef __cplusplus
       
   200 }
       
   201 #endif /* __cplusplus */
       
   202 #endif