OSDN Git Service

Factor <winsock.h> duplicate content out of <winsock2.h>
[mingw/mingw-org-wsl.git] / w32api / include / winsock2.h
1 /*
2  * winsock2.h
3  *
4  * Definitions for WinSock Version 2 API; provides the additional definitions
5  * which are required by WinSock v2, to augment those which are already defined
6  * in <winsock.h>, and are common to WinSock Versions 1.1 and 2.
7  *
8  *
9  * $Id$
10  *
11  * Contributed by the WINE Project.
12  * Adaptation by Mumit Khan <khan@xraylith.wisc.edu>
13  * Copyright (C) 1998-2005, 2011, 2016, 2017, MinGW.org Project
14  *
15  *
16  * Permission is hereby granted, free of charge, to any person obtaining a
17  * copy of this software and associated documentation files (the "Software"),
18  * to deal in the Software without restriction, including without limitation
19  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
20  * and/or sell copies of the Software, and to permit persons to whom the
21  * Software is furnished to do so, subject to the following conditions:
22  *
23  * The above copyright notice and this permission notice (including the next
24  * paragraph) shall be included in all copies or substantial portions of the
25  * Software.
26  *
27  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
33  * DEALINGS IN THE SOFTWARE.
34  *
35  * Portions Copyright (C) 1980, 1983, 1988, 1993
36  * The Regents of the University of California.  All rights reserved.
37  *
38  * Portions Copyright (C) 1993 by Digital Equipment Corporation.
39  *
40  */
41 #ifndef _WINSOCK2_H
42 #pragma GCC system_header
43 #define _WINSOCK2_H
44
45 #ifdef _WINSOCK_H  /* included prematurely */
46 /* Oops!  <winsock.h> appears to have been included already, which now
47  * precludes any use of WinSock v2 protocol.
48  */
49 #error "Including <winsock2.h> after <winsock.h> is unsupported."
50 #warning "Falling back to WinSock v1.1 protocol."
51
52 #else   /* !_WINSOCK_H included prematurely */
53 /* This is correct WinSock v2 protocol usage: <winsock.h> has not been
54  * included previously, so we include it now, to establish definitions
55  * which are common to both WinSock v1 and WinSock v2 protocols.  This
56  * is filtered, on our prior definition of _WINSOCK2_H, to exclude any
57  * obsolete or conflicting definitions from WinSock v1, which are no
58  * longer applicable in WinSock v2, and on __WINSOCK2_DEPRECATED to
59  * identify any which remain available, but have been deprecated.
60  */
61 #define __WINSOCK2_DEPRECATED  __MINGW_ATTRIB_DEPRECATED
62 #include "winsock.h"
63
64 #define __WINSOCK2_H_SOURCED__
65
66 /* We need a definition for the BLOB data type; although an incomplete
67  * type definition would suffice here, other related headers, <nspapi.h>
68  * in particular, require the full definition, so we may just as well
69  * incorporate that here, by selective inclusion from "wtypes.h", by
70  * way of indirect inclusion from "nspapi.h"
71  */
72 #include "nspapi.h"
73
74 _BEGIN_C_DECLS
75
76 #define ADDR_ANY                          INADDR_ANY
77
78 #define IN_CLASSD(i)        (((long)(i) & 0xF0000000) == 0xE0000000)
79 #define IN_CLASSD_NET                     0xF0000000
80 #define IN_CLASSD_NSHIFT                          28
81 #define IN_CLASSD_HOST                    0x0FFFFFFF
82 #define IN_MULTICAST(i)                  IN_CLASSD(i)
83
84 #define FROM_PROTOCOL_INFO                       (-1)
85
86 #define SO_GROUP_ID                           0x2001
87 #define SO_GROUP_PRIORITY                     0x2002
88 #define SO_MAX_MSG_SIZE                       0x2003
89
90 #define SO_PROTOCOL_INFO        __AW_SUFFIXED__(SO_PROTOCOL_INFO)
91 #define SO_PROTOCOL_INFOA                     0x2004
92 #define SO_PROTOCOL_INFOW                     0x2005
93
94 #define PVD_CONFIG                            0x3001
95
96 #define MSG_INTERRUPT                           0x10
97
98 #define WSAAPI                                WINAPI
99 #define WSAEVENT                              HANDLE
100 #define LPWSAEVENT                          LPHANDLE
101 #define WSAOVERLAPPED                     OVERLAPPED
102
103 typedef struct _OVERLAPPED  *LPWSAOVERLAPPED;
104
105 #define WSA_IO_PENDING                  (ERROR_IO_PENDING)
106 #define WSA_IO_INCOMPLETE               (ERROR_IO_INCOMPLETE)
107 #define WSA_INVALID_HANDLE              (ERROR_INVALID_HANDLE)
108 #define WSA_INVALID_PARAMETER           (ERROR_INVALID_PARAMETER)
109 #define WSA_NOT_ENOUGH_MEMORY           (ERROR_NOT_ENOUGH_MEMORY)
110 #define WSA_OPERATION_ABORTED           (ERROR_OPERATION_ABORTED)
111
112 #define WSA_INVALID_EVENT               ((WSAEVENT)NULL)
113 #define WSA_MAXIMUM_WAIT_EVENTS         (MAXIMUM_WAIT_OBJECTS)
114 #define WSA_WAIT_FAILED                 ((DWORD)-1L)
115 #define WSA_WAIT_EVENT_0                (WAIT_OBJECT_0)
116 #define WSA_WAIT_IO_COMPLETION          (WAIT_IO_COMPLETION)
117 #define WSA_WAIT_TIMEOUT                (WAIT_TIMEOUT)
118 #define WSA_INFINITE                    (INFINITE)
119
120 typedef
121 struct _WSABUF
122 { unsigned long          len;
123   char                  *buf;
124 } WSABUF, *LPWSABUF;
125
126 typedef enum
127 { BestEffortService,
128   ControlledLoadService,
129   PredictiveService,
130   GuaranteedDelayService,
131   GuaranteedService
132 } GUARANTEE;
133
134 /* IPv6 protocol options: these are additional to protocol option constants
135  * already defined in <winsock.h>; they are unsupported prior to WinSock v2.
136  */
137 #define IPPROTO_HOPOPTS                            0  /* IPv6 Hop-by-Hop options */
138 #define IPPROTO_IPV6                              41  /* IPv6 header */
139 #define IPPROTO_ROUTING                           43  /* IPv6 Routing header */
140 #define IPPROTO_FRAGMENT                          44  /* IPv6 fragmentation header */
141 #define IPPROTO_ESP                               50  /* encapsulating security payload */
142 #define IPPROTO_AH                                51  /* authentication header */
143 #define IPPROTO_ICMPV6                            58  /* ICMPv6 */
144 #define IPPROTO_NONE                              59  /* IPv6 no next header */
145 #define IPPROTO_DSTOPTS                           60  /* IPv6 Destination options */
146
147 /* Address family definitions: these extend the set which has been defined
148  * already, in <winsock.h>; they are applicable only for WinSock v2.
149  */
150 #define AF_CLUSTER                                24
151 #define AF_12844                                  25
152 #define AF_IRDA                                   26
153 #define AF_NETDES                                 28
154
155 #ifndef __INSIDE_MSYS__
156 /* MSYS provides its own definition for AF_MAX; otherwise, <winsock.h> has
157  * already defined it as 24, but we need to override that to accommodate the
158  * additional constants, defined above.
159  */
160 #undef  AF_MAX
161 #define AF_MAX                                    29
162
163 /* Portable IPv6/IPv4 version of sockaddr, based on RFC 2553.
164  * The sockaddr_storage structure is padded to force 8 byte alignment of
165  * its member fields, and its size is fixed at 128 bytes.
166  *
167  * Desired design maximum size and alignment.
168  */
169 #define _SS_MAXSIZE                              128
170 #define _SS_ALIGNSIZE                   sizeof(__int64)
171
172 /* Definitions used for sockaddr_storage structure padding.
173  */
174 #define _SS_PAD1SIZE   (_SS_ALIGNSIZE - sizeof(short))
175 #define _SS_PAD2SIZE   (_SS_MAXSIZE - (sizeof(short) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
176
177 struct sockaddr_storage
178 { short                 ss_family;
179   char                __ss_pad1[_SS_PAD1SIZE];  /* pad to 8 */
180   __int64             __ss_align;               /* force alignment */
181   char                __ss_pad2[_SS_PAD2SIZE];  /* pad to 128 */
182 };
183
184 /* As in the case of AF_MAX, MSYS provides its own value for SOMAXCONN;
185  * otherwise, <winsock.h> has already defined it, with a value of 5; this
186  * was correct for WinSock v1.1, but we must now override it with this
187  * alternative definition, to make it correct for WinSock v2.
188  */
189 #undef  SOMAXCONN
190 #define SOMAXCONN                         0x7FFFFFFF
191
192 /* SO_EXCLUSIVEADDRUSE is not applicable, prior to WinSock v2; it is
193  * derived from SO_REUSEADDR, which has been defined in <winsock.h>
194  */
195 #define SO_EXCLUSIVEADDRUSE             ((u_int)(~SO_REUSEADDR))
196 #endif  /* !__INSIDE_MSYS__ */
197
198 /* FIXME: FLOWSPEC and related definitions belong in qos.h */
199
200 /* Windows Sockets 2 Application Programming Interface,
201  * revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
202  * and the elements of _flowspec, but the type uint32 is not defined
203  * or used anywhere else in the w32api. For now, just use
204  * unsigned int, which is 32 bits on _WIN32 and _WIN64.
205  */
206 typedef unsigned int  SERVICETYPE;
207
208 typedef
209 struct _flowspec
210 { unsigned int           TokenRate;
211   unsigned int           TokenBucketSize;
212   unsigned int           PeakBandwidth;
213   unsigned int           Latency;
214   unsigned int           DelayVariation;
215   SERVICETYPE            ServiceType;
216   unsigned int           MaxSduSize;
217   unsigned int           MinimumPolicedSize;
218 } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
219
220 typedef
221 struct _QualityOfService
222 { FLOWSPEC               SendingFlowspec;
223   FLOWSPEC               ReceivingFlowspec;
224   WSABUF                 ProviderSpecific;
225 } QOS, *LPQOS;
226
227 #define CF_ACCEPT                             0x0000
228 #define CF_REJECT                             0x0001
229 #define CF_DEFER                              0x0002
230
231 typedef unsigned int  GROUP;
232
233 #define SG_UNCONSTRAINED_GROUP                  0x01
234 #define SG_CONSTRAINED_GROUP                    0x02
235
236 typedef
237 struct _WSANETWORKEVENTS
238 { long                   lNetworkEvents;
239   int                    iErrorCode[FD_MAX_EVENTS];
240 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
241
242 #define MAX_PROTOCOL_CHAIN                         7
243
244 #define BASE_PROTOCOL                              1
245 #define LAYERED_PROTOCOL                           0
246
247 typedef
248 enum _WSAESETSERVICEOP
249 { RNRSERVICE_REGISTER                           =  0,
250   RNRSERVICE_DEREGISTER,
251   RNRSERVICE_DELETE
252 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
253
254 typedef
255 struct _AFPROTOCOLS
256 { INT                    iAddressFamily;
257   INT                    iProtocol;
258 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
259
260 typedef
261 enum _WSAEcomparator
262 { COMP_EQUAL                                    =  0,
263   COMP_NOTLESS
264 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
265
266 typedef
267 struct _WSAVersion
268 { DWORD                  dwVersion;
269   WSAECOMPARATOR         ecHow;
270 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
271
272 typedef
273 struct _SOCKET_ADDRESS_LIST
274 { INT                    iAddressCount;
275   SOCKET_ADDRESS         Address[1];
276 } SOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST;
277
278 typedef
279 struct _WSAQuerySetA
280 { DWORD                  dwSize;
281   LPSTR                  lpszServiceInstanceName;
282   LPGUID                 lpServiceClassId;
283   LPWSAVERSION           lpVersion;
284   LPSTR                  lpszComment;
285   DWORD                  dwNameSpace;
286   LPGUID                 lpNSProviderId;
287   LPSTR                  lpszContext;
288   DWORD                  dwNumberOfProtocols;
289   LPAFPROTOCOLS          lpafpProtocols;
290   LPSTR                  lpszQueryString;
291   DWORD                  dwNumberOfCsAddrs;
292   LPCSADDR_INFO          lpcsaBuffer;
293   DWORD                  dwOutputFlags;
294   LPBLOB                 lpBlob;
295 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
296
297 typedef
298 struct _WSAQuerySetW
299 { DWORD                  dwSize;
300   LPWSTR                 lpszServiceInstanceName;
301   LPGUID                 lpServiceClassId;
302   LPWSAVERSION           lpVersion;
303   LPWSTR                 lpszComment;
304   DWORD                  dwNameSpace;
305   LPGUID                 lpNSProviderId;
306   LPWSTR                 lpszContext;
307   DWORD                  dwNumberOfProtocols;
308   LPAFPROTOCOLS          lpafpProtocols;
309   LPWSTR                 lpszQueryString;
310   DWORD                  dwNumberOfCsAddrs;
311   LPCSADDR_INFO          lpcsaBuffer;
312   DWORD                  dwOutputFlags;
313   LPBLOB                 lpBlob;
314 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
315
316 typedef __AW_ALIAS__( WSAQUERYSET );
317 typedef __AW_ALIAS__( PWSAQUERYSET );
318 typedef __AW_ALIAS__( LPWSAQUERYSET );
319
320 #define LUP_DEEP                              0x0001
321 #define LUP_CONTAINERS                        0x0002
322 #define LUP_NOCONTAINERS                      0x0004
323 #define LUP_NEAREST                           0x0008
324 #define LUP_RETURN_NAME                       0x0010
325 #define LUP_RETURN_TYPE                       0x0020
326 #define LUP_RETURN_VERSION                    0x0040
327 #define LUP_RETURN_COMMENT                    0x0080
328 #define LUP_RETURN_ADDR                       0x0100
329 #define LUP_RETURN_BLOB                       0x0200
330 #define LUP_RETURN_ALIASES                    0x0400
331 #define LUP_RETURN_QUERY_STRING               0x0800
332 #define LUP_RETURN_ALL                        0x0FF0
333 #define LUP_RES_SERVICE                       0x8000
334 #define LUP_FLUSHCACHE                        0x1000
335 #define LUP_FLUSHPREVIOUS                     0x2000
336
337 typedef
338 struct _WSANSClassInfoA
339 { LPSTR                  lpszName;
340   DWORD                  dwNameSpace;
341   DWORD                  dwValueType;
342   DWORD                  dwValueSize;
343   LPVOID                 lpValue;
344 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
345
346 typedef
347 struct _WSANSClassInfoW
348 { LPWSTR                 lpszName;
349   DWORD                  dwNameSpace;
350   DWORD                  dwValueType;
351   DWORD                  dwValueSize;
352   LPVOID                 lpValue;
353 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
354
355 typedef __AW_ALIAS__( WSANSCLASSINFO );
356 typedef __AW_ALIAS__( PWSANSCLASSINFO );
357 typedef __AW_ALIAS__( LPWSANSCLASSINFO );
358
359 typedef
360 struct _WSAServiceClassInfoA
361 { LPGUID                 lpServiceClassId;
362   LPSTR                  lpszServiceClassName;
363   DWORD                  dwCount;
364   LPWSANSCLASSINFOA      lpClassInfos;
365 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
366
367 typedef
368 struct _WSAServiceClassInfoW
369 { LPGUID                 lpServiceClassId;
370   LPWSTR                 lpszServiceClassName;
371   DWORD                  dwCount;
372   LPWSANSCLASSINFOW      lpClassInfos;
373 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
374
375 typedef __AW_ALIAS__( WSASERVICECLASSINFO );
376 typedef __AW_ALIAS__( PWSASERVICECLASSINFO );
377 typedef __AW_ALIAS__( LPWSASERVICECLASSINFO );
378
379 typedef
380 struct _WSANAMESPACE_INFOA
381 { GUID                   NSProviderId;
382   DWORD                  dwNameSpace;
383   BOOL                   fActive;
384   DWORD                  dwVersion;
385   LPSTR                  lpszIdentifier;
386 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
387
388 typedef
389 struct _WSANAMESPACE_INFOW
390 { GUID                   NSProviderId;
391   DWORD                  dwNameSpace;
392   BOOL                   fActive;
393   DWORD                  dwVersion;
394   LPWSTR                 lpszIdentifier;
395 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
396
397 typedef __AW_ALIAS__( WSANAMESPACE_INFO );
398 typedef __AW_ALIAS__( PWSANAMESPACE_INFO );
399 typedef __AW_ALIAS__( LPWSANAMESPACE_INFO );
400
401 typedef
402 struct _WSAPROTOCOLCHAIN
403 { int                    ChainLen;
404   DWORD                  ChainEntries[MAX_PROTOCOL_CHAIN];
405 } WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
406
407 #define WSAPROTOCOL_LEN                          255
408
409 typedef
410 struct _WSAPROTOCOL_INFOA
411 { DWORD                  dwServiceFlags1;
412   DWORD                  dwServiceFlags2;
413   DWORD                  dwServiceFlags3;
414   DWORD                  dwServiceFlags4;
415   DWORD                  dwProviderFlags;
416   GUID                   ProviderId;
417   DWORD                  dwCatalogEntryId;
418   WSAPROTOCOLCHAIN       ProtocolChain;
419   int                    iVersion;
420   int                    iAddressFamily;
421   int                    iMaxSockAddr;
422   int                    iMinSockAddr;
423   int                    iSocketType;
424   int                    iProtocol;
425   int                    iProtocolMaxOffset;
426   int                    iNetworkByteOrder;
427   int                    iSecurityScheme;
428   DWORD                  dwMessageSize;
429   DWORD                  dwProviderReserved;
430   CHAR                   szProtocol[WSAPROTOCOL_LEN+1];
431 } WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
432
433 typedef
434 struct _WSAPROTOCOL_INFOW
435 { DWORD                  dwServiceFlags1;
436   DWORD                  dwServiceFlags2;
437   DWORD                  dwServiceFlags3;
438   DWORD                  dwServiceFlags4;
439   DWORD                  dwProviderFlags;
440   GUID                   ProviderId;
441   DWORD                  dwCatalogEntryId;
442   WSAPROTOCOLCHAIN       ProtocolChain;
443   int                    iVersion;
444   int                    iAddressFamily;
445   int                    iMaxSockAddr;
446   int                    iMinSockAddr;
447   int                    iSocketType;
448   int                    iProtocol;
449   int                    iProtocolMaxOffset;
450   int                    iNetworkByteOrder;
451   int                    iSecurityScheme;
452   DWORD                  dwMessageSize;
453   DWORD                  dwProviderReserved;
454   WCHAR                  szProtocol[WSAPROTOCOL_LEN+1];
455 } WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
456
457 typedef __AW_ALIAS__( WSAPROTOCOL_INFO );
458 typedef __AW_ALIAS__( LPWSAPROTOCOL_INFO );
459
460 typedef int (CALLBACK *LPCONDITIONPROC) (LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
461 typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
462
463 /* Needed for XP & .NET Server function WSANSPIoctl. */
464
465 typedef
466 enum _WSACOMPLETIONTYPE
467 { NSP_NOTIFY_IMMEDIATELY                        =  0,
468   NSP_NOTIFY_HWND,
469   NSP_NOTIFY_EVENT,
470   NSP_NOTIFY_PORT,
471   NSP_NOTIFY_APC
472 } WSACOMPLETIONTYPE, *PWSACOMPLETIONTYPE, *LPWSACOMPLETIONTYPE;
473
474 typedef
475 struct _WSACOMPLETION
476 { WSACOMPLETIONTYPE                              Type;
477   union
478   { struct
479     { HWND                                           hWnd;
480       UINT                                           uMsg;
481       WPARAM                                         context;
482     }                                              WindowMessage;
483     struct
484     { LPWSAOVERLAPPED                                lpOverlapped;
485     }                                              Event;
486     struct
487     { LPWSAOVERLAPPED                                lpOverlapped;
488       LPWSAOVERLAPPED_COMPLETION_ROUTINE             lpfnCompletionProc;
489     }                                              Apc;
490     struct
491     { LPWSAOVERLAPPED                                lpOverlapped;
492       HANDLE                                         hPort;
493       ULONG_PTR                                      Key;
494     }                                              Port;
495   }                                              Parameters;
496 } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
497
498 #define PFL_MULTIPLE_PROTO_ENTRIES                0x00000001
499 #define PFL_RECOMMENDED_PROTO_ENTRY               0x00000002
500 #define PFL_HIDDEN                                0x00000004
501 #define PFL_MATCHES_PROTOCOL_ZERO                 0x00000008
502 #define XP1_CONNECTIONLESS                        0x00000001
503 #define XP1_GUARANTEED_DELIVERY                   0x00000002
504 #define XP1_GUARANTEED_ORDER                      0x00000004
505 #define XP1_MESSAGE_ORIENTED                      0x00000008
506 #define XP1_PSEUDO_STREAM                         0x00000010
507 #define XP1_GRACEFUL_CLOSE                        0x00000020
508 #define XP1_EXPEDITED_DATA                        0x00000040
509 #define XP1_CONNECT_DATA                          0x00000080
510 #define XP1_DISCONNECT_DATA                       0x00000100
511 #define XP1_SUPPORT_BROADCAST                     0x00000200
512 #define XP1_SUPPORT_MULTIPOINT                    0x00000400
513 #define XP1_MULTIPOINT_CONTROL_PLANE              0x00000800
514 #define XP1_MULTIPOINT_DATA_PLANE                 0x00001000
515 #define XP1_QOS_SUPPORTED                         0x00002000
516 #define XP1_INTERRUPT                             0x00004000
517 #define XP1_UNI_SEND                              0x00008000
518 #define XP1_UNI_RECV                              0x00010000
519 #define XP1_IFS_HANDLES                           0x00020000
520 #define XP1_PARTIAL_MESSAGE                       0x00040000
521
522 #define BIGENDIAN                                     0x0000
523 #define LITTLEENDIAN                                  0x0001
524
525 #define SECURITY_PROTOCOL_NONE                        0x0000
526 #define JL_SENDER_ONLY                                  0x01
527 #define JL_RECEIVER_ONLY                                0x02
528 #define JL_BOTH                                         0x04
529 #define WSA_FLAG_OVERLAPPED                             0x01
530 #define WSA_FLAG_MULTIPOINT_C_ROOT                      0x02
531 #define WSA_FLAG_MULTIPOINT_C_LEAF                      0x04
532 #define WSA_FLAG_MULTIPOINT_D_ROOT                      0x08
533 #define WSA_FLAG_MULTIPOINT_D_LEAF                      0x10
534 #define IOC_UNIX                                  0x00000000
535 #define IOC_WS2                                   0x08000000
536 #define IOC_PROTOCOL                              0x10000000
537 #define IOC_VENDOR                                0x18000000
538
539 #define _WSAIO(x,y)                             (IOC_VOID|(x)|(y))
540 #define _WSAIOR(x,y)                            (IOC_OUT|(x)|(y))
541 #define _WSAIOW(x,y)                            (IOC_IN|(x)|(y))
542 #define _WSAIORW(x,y)                           (IOC_INOUT|(x)|(y))
543
544 #define SIO_ASSOCIATE_HANDLE                    _WSAIOW(IOC_WS2,1)
545 #define SIO_ENABLE_CIRCULAR_QUEUEING            _WSAIO(IOC_WS2,2)
546 #define SIO_FIND_ROUTE                          _WSAIOR(IOC_WS2,3)
547 #define SIO_FLUSH                               _WSAIO(IOC_WS2,4)
548 #define SIO_GET_BROADCAST_ADDRESS               _WSAIOR(IOC_WS2,5)
549 #define SIO_GET_EXTENSION_FUNCTION_POINTER      _WSAIORW(IOC_WS2,6)
550 #define SIO_GET_QOS                             _WSAIORW(IOC_WS2,7)
551 #define SIO_GET_GROUP_QOS                       _WSAIORW(IOC_WS2,8)
552 #define SIO_MULTIPOINT_LOOPBACK                 _WSAIOW(IOC_WS2,9)
553 #define SIO_MULTICAST_SCOPE                     _WSAIOW(IOC_WS2,10)
554 #define SIO_SET_QOS                             _WSAIOW(IOC_WS2,11)
555 #define SIO_SET_GROUP_QOS                       _WSAIOW(IOC_WS2,12)
556 #define SIO_TRANSLATE_HANDLE                    _WSAIORW(IOC_WS2,13)
557 #define SIO_ROUTING_INTERFACE_QUERY             _WSAIORW(IOC_WS2,20)
558 #define SIO_ROUTING_INTERFACE_CHANGE            _WSAIOW(IOC_WS2,21)
559 #define SIO_ADDRESS_LIST_QUERY                  _WSAIOR(IOC_WS2,22)
560 #define SIO_ADDRESS_LIST_CHANGE                 _WSAIO(IOC_WS2,23)
561 #define SIO_QUERY_TARGET_PNP_HANDLE             _WSAIOR(IOC_WS2,24)
562 #define SIO_NSP_NOTIFY_CHANGE                   _WSAIOW(IOC_WS2,25)
563 #define SIO_UDP_CONNRESET                       _WSAIOW(IOC_VENDOR,12)
564
565 #define TH_NETDEV                                 0x00000001
566 #define TH_TAPI                                   0x00000002
567
568 typedef SOCKET (PASCAL *LPFN_ACCEPT) (SOCKET, struct sockaddr *, int *);
569
570 typedef int (PASCAL *LPFN_BIND) (SOCKET, const struct sockaddr *, int);
571 typedef int (PASCAL *LPFN_CLOSESOCKET) (SOCKET);
572 typedef int (PASCAL *LPFN_CONNECT) (SOCKET, const struct sockaddr *, int);
573 typedef int (PASCAL *LPFN_IOCTLSOCKET) (SOCKET, long, u_long *);
574 typedef int (PASCAL *LPFN_GETPEERNAME) (SOCKET, struct sockaddr *, int *);
575 typedef int (PASCAL *LPFN_GETSOCKNAME) (SOCKET, struct sockaddr *, int *);
576 typedef int (PASCAL *LPFN_GETSOCKOPT) (SOCKET, int, int, char *, int *);
577
578 typedef u_long (PASCAL *LPFN_HTONL) (u_long);
579 typedef u_short (PASCAL *LPFN_HTONS) (u_short);
580
581 typedef unsigned long (PASCAL *LPFN_INET_ADDR) (const char *);
582
583 typedef char *(PASCAL *LPFN_INET_NTOA) (struct in_addr);
584
585 typedef int (PASCAL *LPFN_LISTEN) (SOCKET, int);
586
587 typedef u_long (PASCAL *LPFN_NTOHL) (u_long);
588 typedef u_short (PASCAL *LPFN_NTOHS) (u_short);
589
590 typedef int (PASCAL *LPFN_RECV) (SOCKET, char *, int, int);
591 typedef int (PASCAL *LPFN_RECVFROM) (SOCKET, char *, int, int, struct sockaddr *, int *);
592 typedef int (PASCAL *LPFN_SELECT) (int, fd_set *, fd_set *, fd_set *, const struct timeval *);
593 typedef int (PASCAL *LPFN_SEND) (SOCKET, const char *, int, int);
594 typedef int (PASCAL *LPFN_SENDTO) (SOCKET, const char *, int, int, const struct sockaddr *, int);
595 typedef int (PASCAL *LPFN_SETSOCKOPT) (SOCKET, int, int, const char *, int);
596 typedef int (PASCAL *LPFN_SHUTDOWN) (SOCKET, int);
597
598 typedef SOCKET (PASCAL *LPFN_SOCKET) (int, int, int);
599
600 typedef struct hostent *(PASCAL *LPFN_GETHOSTBYADDR) ( const char *, int, int);
601 typedef struct hostent *(PASCAL *LPFN_GETHOSTBYNAME) ( const char *);
602
603 typedef int (PASCAL *LPFN_GETHOSTNAME) (char *, int);
604
605 typedef struct servent *(PASCAL *LPFN_GETSERVBYPORT) (int, const char *);
606 typedef struct servent *(PASCAL *LPFN_GETSERVBYNAME) (const char *, const char *);
607 typedef struct protoent *(PASCAL *LPFN_GETPROTOBYNUMBER) (int);
608 typedef struct protoent *(PASCAL *LPFN_GETPROTOBYNAME) (const char *);
609
610 typedef int (PASCAL *LPFN_WSASTARTUP) (WORD, LPWSADATA);
611 typedef int (PASCAL *LPFN_WSACLEANUP) (void);
612 typedef int (PASCAL *LPFN_WSAGETLASTERROR) (void);
613 typedef void (PASCAL *LPFN_WSASETLASTERROR) (int);
614
615 typedef BOOL (PASCAL *LPFN_WSAISBLOCKING) (void);
616 typedef int (PASCAL *LPFN_WSAUNHOOKBLOCKINGHOOK) (void);
617 typedef FARPROC (PASCAL *LPFN_WSASETBLOCKINGHOOK) (FARPROC);
618 typedef int (PASCAL *LPFN_WSACANCELBLOCKINGCALL) (void);
619
620 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETSERVBYNAME) (HWND, u_int, const char *, const char *, char *, int);
621 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETSERVBYPORT) (HWND, u_int, int, const char *, char *, int);
622 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETPROTOBYNAME) (HWND, u_int, const char*, char*, int);
623 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETPROTOBYNUMBER) (HWND, u_int, int, char*, int);
624 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETHOSTBYADDR) (HWND, u_int, const char*, int, int, char*, int);
625
626 typedef int (PASCAL *LPFN_WSACANCELASYNCREQUEST) (HANDLE);
627 typedef int (PASCAL *LPFN_WSAASYNCSELECT) (SOCKET, HWND, u_int, long);
628
629 typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
630
631 WINSOCK_API_LINKAGE SOCKET WINAPI WSAAccept (SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
632
633 #define WSAAddressToString __AW_SUFFIXED__(WSAAddressToString)
634 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringA (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
635 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringW (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
636
637 WINSOCK_API_LINKAGE BOOL WINAPI WSACloseEvent (WSAEVENT);
638 WINSOCK_API_LINKAGE int WINAPI WSAConnect (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
639 WINSOCK_API_LINKAGE WSAEVENT WINAPI WSACreateEvent (void);
640
641 #define WSADuplicateSocket __AW_SUFFIXED__(WSADuplicateSocket)
642 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketA (SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
643 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketW (SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
644
645 #define WSAEnumNameSpaceProviders __AW_SUFFIXED__(WSAEnumNameSpaceProviders)
646 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersA (LPDWORD, LPWSANAMESPACE_INFOA);
647 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersW (LPDWORD, LPWSANAMESPACE_INFOW);
648
649 WINSOCK_API_LINKAGE int WINAPI WSAEnumNetworkEvents (SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
650
651 #define WSAEnumProtocols __AW_SUFFIXED__(WSAEnumProtocols)
652 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsA (LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
653 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsW (LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
654
655 WINSOCK_API_LINKAGE int WINAPI WSAEventSelect (SOCKET, WSAEVENT, long);
656 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetOverlappedResult (SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
657 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetQOSByName (SOCKET, LPWSABUF, LPQOS);
658
659 #define WSAGetServiceClassInfo __AW_SUFFIXED__(WSAGetServiceClassInfo)
660 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoA (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
661 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoW (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
662
663 #define WSAGetServiceClassNameByClassId __AW_SUFFIXED__(WSAGetServiceClassNameByClassId)
664 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdA (LPGUID, LPSTR, LPDWORD);
665 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdW (LPGUID, LPWSTR, LPDWORD);
666
667 WINSOCK_API_LINKAGE int WINAPI WSAHtonl (SOCKET, unsigned long, unsigned long *);
668 WINSOCK_API_LINKAGE int WINAPI WSAHtons (SOCKET, unsigned short, unsigned short *);
669
670 #define WSAInstallServiceClass __AW_SUFFIXED__(WSAInstallServiceClass)
671 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassA (LPWSASERVICECLASSINFOA);
672 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassW (LPWSASERVICECLASSINFOW);
673
674 WINSOCK_API_LINKAGE int WINAPI WSAIoctl (SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
675 WINSOCK_API_LINKAGE SOCKET WINAPI WSAJoinLeaf (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
676
677 #define WSALookupServiceBegin __AW_SUFFIXED__(WSALookupServiceBegin)
678 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginA (LPWSAQUERYSETA, DWORD, LPHANDLE);
679 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginW (LPWSAQUERYSETW, DWORD, LPHANDLE);
680
681 #define WSALookupServiceNext __AW_SUFFIXED__(WSALookupServiceNext)
682 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextA (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
683 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextW (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
684
685 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceEnd (HANDLE);
686 WINSOCK_API_LINKAGE int WINAPI WSANSPIoctl (HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION); /* XP or .NET Server */
687 WINSOCK_API_LINKAGE int WINAPI WSANtohl (SOCKET, unsigned long, unsigned long *);
688 WINSOCK_API_LINKAGE int WINAPI WSANtohs (SOCKET, unsigned short, unsigned short *);
689 WINSOCK_API_LINKAGE int WINAPI WSARecv (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
690 WINSOCK_API_LINKAGE int WINAPI WSARecvDisconnect (SOCKET, LPWSABUF);
691 WINSOCK_API_LINKAGE int WINAPI WSARecvFrom (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
692 WINSOCK_API_LINKAGE INT WINAPI WSARemoveServiceClass (LPGUID);
693 WINSOCK_API_LINKAGE BOOL WINAPI WSAResetEvent (WSAEVENT);
694 WINSOCK_API_LINKAGE int WINAPI WSASend (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
695 WINSOCK_API_LINKAGE int WINAPI WSASendDisconnect (SOCKET, LPWSABUF);
696 WINSOCK_API_LINKAGE int WINAPI WSASendTo (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
697 WINSOCK_API_LINKAGE BOOL WINAPI WSASetEvent (WSAEVENT);
698
699 #define WSASetService __AW_SUFFIXED__(WSASetService)
700 WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA (LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
701 WINSOCK_API_LINKAGE INT WINAPI WSASetServiceW (LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
702
703 #define WSASocket __AW_SUFFIXED__(WSASocket)
704 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketA (int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
705 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketW (int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
706
707 #define WSAStringToAddress __AW_SUFFIXED__(WSAStringToAddress)
708 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressA (LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
709 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressW (LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
710
711 WINSOCK_API_LINKAGE DWORD WINAPI WSAWaitForMultipleEvents (DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
712
713 typedef SOCKET (WINAPI *LPFN_WSAACCEPT) (SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
714
715 #define LPFN_WSAADDRESSTOSTRING __AW_SUFFIXED__(LPFN_WSAADDRESSTOSTRING)
716 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA) (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
717 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW) (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
718
719 typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT) (WSAEVENT);
720 typedef int (WINAPI *LPFN_WSACONNECT) (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
721 typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT) (void);
722
723 #define LPFN_WSADUPLICATESOCKET __AW_SUFFIXED__(LPFN_WSADUPLICATESOCKET)
724 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA) (SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
725 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW) (SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
726
727 #define LPFN_WSAENUMNAMESPACEPROVIDERS __AW_SUFFIXED__(LPFN_WSAENUMNAMESPACEPROVIDERS)
728 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA) (LPDWORD, LPWSANAMESPACE_INFOA);
729 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW) (LPDWORD, LPWSANAMESPACE_INFOW);
730
731 typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS) (SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
732
733 #define LPFN_WSAENUMPROTOCOLS __AW_SUFFIXED__(LPFN_WSAENUMPROTOCOLS)
734 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA) (LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
735 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW) (LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
736
737 typedef int (WINAPI *LPFN_WSAEVENTSELECT) (SOCKET, WSAEVENT, long);
738 typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT) (SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
739 typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME) (SOCKET, LPWSABUF, LPQOS);
740
741 #define LPFN_WSAGETSERVICECLASSINFO __AW_SUFFIXED__(LPFN_WSAGETSERVICECLASSINFO)
742 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA) (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
743 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW) (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
744
745 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID __AW_SUFFIXED__(LPFN_WSAGETSERVICECLASSNAMEBYCLASSID)
746 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA) (LPGUID, LPSTR, LPDWORD);
747 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW) (LPGUID, LPWSTR, LPDWORD);
748
749 typedef int (WINAPI *LPFN_WSAHTONL) (SOCKET, unsigned long, unsigned long *);
750 typedef int (WINAPI *LPFN_WSAHTONS) (SOCKET, unsigned short, unsigned short *);
751
752 #define LPFN_WSAINSTALLSERVICECLASS __AW_SUFFIXED__(LPFN_WSAINSTALLSERVICECLASS)
753 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA) (LPWSASERVICECLASSINFOA);
754 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW) (LPWSASERVICECLASSINFOW);
755
756 typedef int (WINAPI *LPFN_WSAIOCTL) (SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
757 typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF) (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
758
759 #define LPFN_WSALOOKUPSERVICEBEGIN __AW_SUFFIXED__(LPFN_WSALOOKUPSERVICEBEGIN)
760 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA) (LPWSAQUERYSETA, DWORD, LPHANDLE);
761 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW) (LPWSAQUERYSETW, DWORD, LPHANDLE);
762
763 #define LPFN_WSALOOKUPSERVICENEXT __AW_SUFFIXED__(LPFN_WSALOOKUPSERVICENEXT)
764 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA) (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
765 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW) (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
766
767 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND) (HANDLE);
768 typedef int (WINAPI *LPFN_WSANSPIoctl) (HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION);
769 typedef int (WINAPI *LPFN_WSANTOHL) (SOCKET, unsigned long, unsigned long *);
770 typedef int (WINAPI *LPFN_WSANTOHS) (SOCKET, unsigned short, unsigned short *);
771 typedef int (WINAPI *LPFN_WSARECV) (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
772 typedef int (WINAPI *LPFN_WSARECVDISCONNECT) (SOCKET, LPWSABUF);
773 typedef int (WINAPI *LPFN_WSARECVFROM) (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
774 typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS) (LPGUID);
775 typedef BOOL (WINAPI *LPFN_WSARESETEVENT) (WSAEVENT);
776 typedef int (WINAPI *LPFN_WSASEND) (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
777 typedef int (WINAPI *LPFN_WSASENDDISCONNECT) (SOCKET, LPWSABUF);
778 typedef int (WINAPI *LPFN_WSASENDTO) (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
779 typedef BOOL (WINAPI *LPFN_WSASETEVENT) (WSAEVENT);
780
781 #define LPFN_WSASETSERVICE  __AW_SUFFIXED__(LPFN_WSASETSERVICE)
782 typedef INT (WINAPI *LPFN_WSASETSERVICEA) (LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
783 typedef INT (WINAPI *LPFN_WSASETSERVICEW) (LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
784
785 #define LPFN_WSASOCKET __AW_SUFFIXED__(LPFN_WSASOCKET)
786 typedef SOCKET (WINAPI *LPFN_WSASOCKETA) (int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
787 typedef SOCKET (WINAPI *LPFN_WSASOCKETW) (int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
788
789 #define LPFN_WSASTRINGTOADDRESS __AW_SUFFIXED__(LPFN_WSASTRINGTOADDRESS)
790 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA) (LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
791 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW) (LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
792
793 typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS) (DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
794
795 _END_C_DECLS
796
797 #undef __WINSOCK2_H_SOURCED__
798 #endif  /* !_WINSOCK_H included prematurely */
799 #endif  /* _WINSOCK2_H: $RCSfile$: end of file */