OSDN Git Service

Correct mistyped __MINGW_NOTHROW macro.
[mingw/mingw-org-wsl.git] / include / ws2spi.h
1 /**
2  * @file ws2spi.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _WS2SPI_H
25 #define _WS2SPI_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #include <winsock2.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif /* __cplusplus */
34
35 #define WSPAPI WSAAPI
36 #define WSPDESCRIPTION_LEN 255
37
38 #ifndef RC_INVOKED
39
40 typedef struct WSPData {
41         WORD wVersion;
42         WORD wHighVersion;
43         WCHAR szDescription[WSPDESCRIPTION_LEN+1];
44 } WSPDATA, FAR *LPWSPDATA;
45 typedef struct _WSATHREADID {
46         HANDLE ThreadHandle;
47         DWORD Reserved;
48 } WSATHREADID, FAR *LPWSATHREADID;
49
50 typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK)(DWORD);
51 typedef VOID (CALLBACK FAR *LPWSAUSERAPC)(DWORD);
52
53 /* Prototypes for service provider procedure table */
54 typedef SOCKET (WSPAPI *LPWSPACCEPT)(SOCKET,LPSOCKADDR,LPINT,LPCONDITIONPROC,DWORD,LPINT);
55 typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD,LPINT);
56 typedef INT (WSPAPI *LPWSPASYNCSELECT)(SOCKET,HWND,UINT,LONG,LPINT);
57 typedef INT (WSPAPI *LPWSPBIND)(SOCKET,const struct sockaddr*,INT,LPINT);
58 typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT);
59 typedef INT (WSPAPI *LPWSPCLEANUP)(LPINT);
60 typedef INT (WSPAPI *LPWSPCLOSESOCKET)(SOCKET,LPINT);
61 typedef INT (WSPAPI *LPWSPCONNECT)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPINT);
62 typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW,LPINT);
63 typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS,LPINT);
64 typedef INT (WSPAPI *LPWSPEVENTSELECT)(SOCKET,WSAEVENT,LONG,LPINT);
65 typedef BOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD,LPINT);
66 typedef INT (WSPAPI *LPWSPGETPEERNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
67 typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS,LPINT);
68 typedef INT (WSPAPI *LPWSPGETSOCKNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT);
69 typedef INT (WSPAPI *LPWSPGETSOCKOPT)(SOCKET,INT,INT,CHAR FAR*,LPINT,LPINT);
70 typedef INT (WSPAPI *LPWSPIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,
71              LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
72 typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD,LPINT);
73 typedef INT (WSPAPI *LPWSPLISTEN)(SOCKET,INT,LPINT);
74 typedef INT (WSPAPI *LPWSPRECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,
75 LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
76 typedef INT (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET,LPWSABUF,LPINT);
77 typedef INT (WSPAPI *LPWSPRECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPSOCKADDR,
78 LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
79 typedef INT (WSPAPI *LPWSPSELECT)(INT,LPFD_SET,LPFD_SET,LPFD_SET,CONST TIMEVAL*,LPINT);
80 typedef INT (WSPAPI *LPWSPSEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,
81 LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
82 typedef INT (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET,LPWSABUF,LPINT);
83 typedef INT (WSPAPI *LPWSPSENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr*,
84              INT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT);
85 typedef INT (WSPAPI *LPWSPSETSOCKOPT)(SOCKET,INT,INT,CONST CHAR FAR*,INT,LPINT);
86 typedef INT (WSPAPI *LPWSPSHUTDOWN)(SOCKET,INT,LPINT);
87 typedef SOCKET (WSPAPI *LPWSPSOCKET)(INT,INT,INT,LPWSAPROTOCOL_INFOW,GROUP,DWORD,LPINT);
88 typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT,LPINT);
89
90 /* Service provider procedure table */
91 typedef struct _WSPPROC_TABLE {
92   LPWSPACCEPT lpWSPAccept;
93   LPWSPADDRESSTOSTRING lpWSPAddressToString;
94   LPWSPASYNCSELECT lpWSPAsyncSelect;
95   LPWSPBIND lpWSPBind;
96   LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
97   LPWSPCLEANUP lpWSPCleanup;
98   LPWSPCLOSESOCKET lpWSPCloseSocket;
99   LPWSPCONNECT lpWSPConnect;
100   LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
101   LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
102   LPWSPEVENTSELECT lpWSPEventSelect;
103   LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
104   LPWSPGETPEERNAME lpWSPGetPeerName;
105   LPWSPGETSOCKNAME lpWSPGetSockName;
106   LPWSPGETSOCKOPT lpWSPGetSockOpt;
107   LPWSPGETQOSBYNAME lpWSPGetQOSByName;
108   LPWSPIOCTL lpWSPIoctl;
109   LPWSPJOINLEAF lpWSPJoinLeaf;
110   LPWSPLISTEN lpWSPListen;
111   LPWSPRECV lpWSPRecv;
112   LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
113   LPWSPRECVFROM lpWSPRecvFrom;
114   LPWSPSELECT lpWSPSelect;
115   LPWSPSEND lpWSPSend;
116   LPWSPSENDDISCONNECT lpWSPSendDisconnect;
117   LPWSPSENDTO lpWSPSendTo;
118   LPWSPSETSOCKOPT lpWSPSetSockOpt;
119   LPWSPSHUTDOWN lpWSPShutdown;
120   LPWSPSOCKET lpWSPSocket;
121   LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
122 } WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
123
124 /* Prototypes for service provider upcall procedure table */
125 typedef BOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT,LPINT);
126 typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET,LPINT);
127 typedef INT (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID,LPINT);
128 typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT);
129 typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD,DWORD,LPINT);
130 typedef SOCKET (WSPAPI *LPWPUFDISSET)(SOCKET,LPFD_SET);
131 typedef INT (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID,LPWSTR,LPINT,LPINT);
132 typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD,SOCKET,LPINT);
133 typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID,LPINT);
134 typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM);
135 typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD,LPBLOCKINGCALLBACK FAR*,LPDWORD,LPINT);
136 typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET,LPDWORD,LPINT);
137 typedef INT (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID,LPWSAUSERAPC,DWORD,LPINT);
138 typedef BOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT,LPINT);
139 typedef BOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT,LPINT);
140 /* Available only directly from the DLL */
141 typedef INT (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
142
143 /* Service Provider upcall table */
144 typedef struct _WSPUPCALLTABLE {
145         LPWPUCLOSEEVENT lpWPUCloseEvent;
146         LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
147         LPWPUCREATEEVENT lpWPUCreateEvent;
148         LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
149         LPWPUFDISSET lpWPUFDIsSet;
150         LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
151         LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
152         LPWPUPOSTMESSAGE lpWPUPostMessage;
153         LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
154         LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
155         LPWPUQUEUEAPC lpWPUQueueApc;
156         LPWPURESETEVENT lpWPUResetEvent;
157         LPWPUSETEVENT lpWPUSetEvent;
158         LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
159         LPWPUCLOSETHREAD lpWPUCloseThread;
160 } WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
161
162 typedef INT (WSPAPI *LPWSPSTARTUP)(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
163
164 /* Prototypes for service provider namespace procedure table */
165 typedef INT (WSPAPI *LPNSPCLEANUP)(LPGUID);
166 typedef INT (WSPAPI *LPNSPGETSERVICECLASSINFO)(LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
167 typedef INT (WSPAPI *LPNSPINSTALLSERVICECLASS)(LPGUID,LPWSASERVICECLASSINFOW);
168 typedef INT (WSPAPI *LPNSPLOOKUPSERVICEBEGIN)(LPGUID,LPWSAQUERYSETW,LPWSASERVICECLASSINFOW,DWORD,LPHANDLE);
169 typedef INT (WSPAPI *LPNSPLOOKUPSERVICEEND)(HANDLE);
170 typedef INT (WSPAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSET);
171 typedef INT (WSPAPI *LPNSPREMOVESERVICECLASS)(LPGUID,LPGUID);
172 typedef INT (WSPAPI *LPNSPSETSERVICE)(LPGUID,LPWSASERVICECLASSINFOW,LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
173
174 typedef struct _NSP_ROUTINE {
175   DWORD cbSize;
176   DWORD dwMajorVersion;
177   DWORD dwMinorVersion;
178   LPNSPCLEANUP NSPCleanup;
179   LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
180   LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
181   LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
182   LPNSPSETSERVICE NSPSetService;
183   LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
184   LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
185   LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
186 } NSP_ROUTINE, *PNSP_ROUTINE, *LPNSP_ROUTINE; 
187
188 INT WSPAPI NSPStartup(LPGUID,LPNSP_ROUTINE);
189
190 /* WinSock 2 DLL function prototypes */
191 INT WSPAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT);
192 INT WSPAPI WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
193 INT WSPAPI WSCDeinstallProvider(LPGUID,LPINT);
194 INT WSPAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT);
195 INT WSPAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT);
196 INT WSPAPI WSCInstallProvider(CONST LPGUID,CONST LPWSTR,CONST LPWSAPROTOCOL_INFOW,DWORD,LPINT);
197 INT WSPAPI WSCEnableNSProvider(LPGUID,BOOL);
198 INT WSPAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID);
199 INT WSPAPI WSCUnInstallNameSpace(LPGUID);
200 INT WSPAPI WSCWriteProviderOrder(LPDWORD,DWORD);
201
202 #endif /* RC_INVOKED */
203
204 #ifdef __cplusplus
205 }
206 #endif /* __cplusplus */
207
208 #endif