• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 
7 #ifndef _WINSOCK2API_
8 #define _WINSOCK2API_
9 
10 #include <_mingw_unicode.h>
11 
12 #ifndef _WINSOCKAPI_
13 #define _WINSOCKAPI_
14 #else
15 #warning Please include winsock2.h before windows.h
16 #endif
17 
18 #ifndef INCL_WINSOCK_API_TYPEDEFS
19 #define INCL_WINSOCK_API_TYPEDEFS 0
20 #endif
21 
22 #ifndef _INC_WINDOWS
23 #include <windows.h>
24 #endif
25 
26 #ifndef MAKEWORD
27 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
28 #endif
29 
30 #ifndef WINSOCK_VERSION
31 #define WINSOCK_VERSION MAKEWORD(2,2)
32 #endif
33 
34 #ifndef WINSOCK_API_LINKAGE
35 #ifdef  DECLSPEC_IMPORT
36 #define WINSOCK_API_LINKAGE	DECLSPEC_IMPORT
37 #else
38 #define WINSOCK_API_LINKAGE
39 #endif
40 #endif /* WINSOCK_API_LINKAGE */
41 #define WSAAPI			WINAPI
42 
43 /* undefine macros from winsock.h */
44 #include <psdk_inc/_ws1_undef.h>
45 
46 #ifdef __LP64__
47 #pragma push_macro("u_long")
48 #undef u_long
49 #define u_long __ms_u_long
50 #endif
51 
52 #include <_timeval.h>
53 #include <_bsd_types.h>
54 #include <inaddr.h>
55 #include <psdk_inc/_socket_types.h>
56 #include <psdk_inc/_fd_types.h>
57 #include <psdk_inc/_ip_types.h>
58 #include <psdk_inc/_wsadata.h>
59 #include <ws2def.h> /* FIXME: include order */
60 
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
64 
65 #define IOCPARM_MASK 0x7f
66 #define IOC_VOID 0x20000000
67 #define IOC_OUT 0x40000000
68 #define IOC_IN 0x80000000
69 #define IOC_INOUT (IOC_IN|IOC_OUT)
70 
71 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
72 #define _IOR(x,y,t) (IOC_OUT|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
73 #define _IOW(x,y,t) (IOC_IN|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
74 
75 #define FIONREAD _IOR('f',127,u_long)
76 #define FIONBIO _IOW('f',126,u_long)
77 #define FIOASYNC _IOW('f',125,u_long)
78 
79 #define SIOCSHIWAT _IOW('s',0,u_long)
80 #define SIOCGHIWAT _IOR('s',1,u_long)
81 #define SIOCSLOWAT _IOW('s',2,u_long)
82 #define SIOCGLOWAT _IOR('s',3,u_long)
83 #define SIOCATMARK _IOR('s',7,u_long)
84 
85 #define IPPROTO_IP 0
86 #define IPPROTO_HOPOPTS 0
87 #define IPPROTO_ICMP 1
88 #define IPPROTO_IGMP 2
89 #define IPPROTO_GGP 3
90 #define IPPROTO_IPV4 4
91 #define IPPROTO_ST 5
92 #define IPPROTO_TCP 6
93 #define IPPROTO_CBT 7
94 #define IPPROTO_EGP 8
95 #define IPPROTO_IGP 9
96 #define IPPROTO_PUP 12
97 #define IPPROTO_UDP 17
98 #define IPPROTO_IDP 22
99 #define IPPROTO_RDP 27
100 #define IPPROTO_IPV6 41
101 #define IPPROTO_ROUTING 43
102 #define IPPROTO_FRAGMENT 44
103 #define IPPROTO_ESP 50
104 #define IPPROTO_AH 51
105 #define IPPROTO_ICMPV6 58
106 #define IPPROTO_NONE 59
107 #define IPPROTO_DSTOPTS 60
108 #define IPPROTO_ND 77
109 #define IPPROTO_ICLFXBM 78
110 #define IPPROTO_PIM 103
111 #define IPPROTO_PGM 113
112 #define IPPROTO_L2TP 115
113 #define IPPROTO_SCTP 132
114 
115 #define IPPROTO_RAW 255
116 #define IPPROTO_MAX 256
117 
118 #define IPPORT_ECHO 7
119 #define IPPORT_DISCARD 9
120 #define IPPORT_SYSTAT 11
121 #define IPPORT_DAYTIME 13
122 #define IPPORT_NETSTAT 15
123 #define IPPORT_FTP 21
124 #define IPPORT_TELNET 23
125 #define IPPORT_SMTP 25
126 #define IPPORT_TIMESERVER 37
127 #define IPPORT_NAMESERVER 42
128 #define IPPORT_WHOIS 43
129 #define IPPORT_MTP 57
130 
131 #define IPPORT_TFTP 69
132 #define IPPORT_RJE 77
133 #define IPPORT_FINGER 79
134 #define IPPORT_TTYLINK 87
135 #define IPPORT_SUPDUP 95
136 
137 #define IPPORT_EXECSERVER 512
138 #define IPPORT_LOGINSERVER 513
139 #define IPPORT_CMDSERVER 514
140 #define IPPORT_EFSSERVER 520
141 
142 #define IPPORT_BIFFUDP 512
143 #define IPPORT_WHOSERVER 513
144 #define IPPORT_ROUTESERVER 520
145 
146 #define IPPORT_RESERVED 1024
147 
148 #define IMPLINK_IP 155
149 #define IMPLINK_LOWEXPER 156
150 #define IMPLINK_HIGHEXPER 158
151 
152 
153 #define IN_CLASSA(i) (((__LONG32)(i) & 0x80000000)==0)
154 #define IN_CLASSA_NET 0xff000000
155 #define IN_CLASSA_NSHIFT 24
156 #define IN_CLASSA_HOST 0x00ffffff
157 #define IN_CLASSA_MAX 128
158 
159 #define IN_CLASSB(i) (((__LONG32)(i) & 0xc0000000)==0x80000000)
160 #define IN_CLASSB_NET 0xffff0000
161 #define IN_CLASSB_NSHIFT 16
162 #define IN_CLASSB_HOST 0x0000ffff
163 #define IN_CLASSB_MAX 65536
164 
165 #define IN_CLASSC(i) (((__LONG32)(i) & 0xe0000000)==0xc0000000)
166 #define IN_CLASSC_NET 0xffffff00
167 #define IN_CLASSC_NSHIFT 8
168 #define IN_CLASSC_HOST 0x000000ff
169 
170 #define IN_CLASSD(i) (((__LONG32)(i) & 0xf0000000)==0xe0000000)
171 #define IN_CLASSD_NET 0xf0000000
172 #define IN_CLASSD_NSHIFT 28
173 #define IN_CLASSD_HOST 0x0fffffff
174 #define IN_MULTICAST(i) IN_CLASSD(i)
175 
176 #define INADDR_ANY (u_long)0x00000000
177 #define INADDR_LOOPBACK 0x7f000001
178 #define INADDR_BROADCAST (u_long)0xffffffff
179 #define INADDR_NONE 0xffffffff
180 
181 #define ADDR_ANY INADDR_ANY
182 
183 #define FROM_PROTOCOL_INFO (-1)
184 
185 #define SOCK_STREAM 1
186 #define SOCK_DGRAM 2
187 #define SOCK_RAW 3
188 #define SOCK_RDM 4
189 #define SOCK_SEQPACKET 5
190 
191 #define SO_DEBUG 0x0001
192 #define SO_ACCEPTCONN 0x0002
193 #define SO_REUSEADDR 0x0004
194 #define SO_KEEPALIVE 0x0008
195 #define SO_DONTROUTE 0x0010
196 #define SO_BROADCAST 0x0020
197 #define SO_USELOOPBACK 0x0040
198 #define SO_LINGER 0x0080
199 #define SO_OOBINLINE 0x0100
200 
201 #define SO_DONTLINGER (int)(~SO_LINGER)
202 #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR))
203 
204 #define SO_SNDBUF 0x1001
205 #define SO_RCVBUF 0x1002
206 #define SO_SNDLOWAT 0x1003
207 #define SO_RCVLOWAT 0x1004
208 #define SO_SNDTIMEO 0x1005
209 #define SO_RCVTIMEO 0x1006
210 #define SO_ERROR 0x1007
211 #define SO_TYPE 0x1008
212 
213 #define SO_GROUP_ID 0x2001
214 #define SO_GROUP_PRIORITY 0x2002
215 #define SO_MAX_MSG_SIZE 0x2003
216 #define SO_PROTOCOL_INFOA 0x2004
217 #define SO_PROTOCOL_INFOW 0x2005
218 
219 #define SO_PROTOCOL_INFO __MINGW_NAME_AW(SO_PROTOCOL_INFO)
220 
221 #define PVD_CONFIG 0x3001
222 #define SO_CONDITIONAL_ACCEPT 0x3002
223 
224 #define TCP_NODELAY 0x0001
225 
226 #define AF_UNSPEC 0
227 
228 #define AF_UNIX 1
229 #define AF_INET 2
230 #define AF_IMPLINK 3
231 #define AF_PUP 4
232 #define AF_CHAOS 5
233 #define AF_NS 6
234 #define AF_IPX AF_NS
235 #define AF_ISO 7
236 #define AF_OSI AF_ISO
237 #define AF_ECMA 8
238 #define AF_DATAKIT 9
239 #define AF_CCITT 10
240 #define AF_SNA 11
241 #define AF_DECnet 12
242 #define AF_DLI 13
243 #define AF_LAT 14
244 #define AF_HYLINK 15
245 #define AF_APPLETALK 16
246 #define AF_NETBIOS 17
247 #define AF_VOICEVIEW 18
248 #define AF_FIREFOX 19
249 #define AF_UNKNOWN1 20
250 #define AF_BAN 21
251 #define AF_ATM 22
252 #define AF_INET6 23
253 #define AF_CLUSTER 24
254 #define AF_12844 25
255 #define AF_IRDA 26
256 #define AF_NETDES 28
257 #define AF_TCNPROCESS 29
258 #define AF_TCNMESSAGE 30
259 #define AF_ICLFXBM 31
260 #define AF_BTH 32
261 #define AF_MAX 33
262 
263 #define _SS_MAXSIZE 128
264 #define _SS_ALIGNSIZE (8)
265 
266 #define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
267 #define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
268 
269   struct sockaddr_storage {
270     short ss_family;
271     char __ss_pad1[_SS_PAD1SIZE];
272 
273     __MINGW_EXTENSION __int64 __ss_align;
274     char __ss_pad2[_SS_PAD2SIZE];
275   };
276 
277 #define PF_UNSPEC AF_UNSPEC
278 #define PF_UNIX AF_UNIX
279 #define PF_INET AF_INET
280 #define PF_IMPLINK AF_IMPLINK
281 #define PF_PUP AF_PUP
282 #define PF_CHAOS AF_CHAOS
283 #define PF_NS AF_NS
284 #define PF_IPX AF_IPX
285 #define PF_ISO AF_ISO
286 #define PF_OSI AF_OSI
287 #define PF_ECMA AF_ECMA
288 #define PF_DATAKIT AF_DATAKIT
289 #define PF_CCITT AF_CCITT
290 #define PF_SNA AF_SNA
291 #define PF_DECnet AF_DECnet
292 #define PF_DLI AF_DLI
293 #define PF_LAT AF_LAT
294 #define PF_HYLINK AF_HYLINK
295 #define PF_APPLETALK AF_APPLETALK
296 #define PF_VOICEVIEW AF_VOICEVIEW
297 #define PF_FIREFOX AF_FIREFOX
298 #define PF_UNKNOWN1 AF_UNKNOWN1
299 #define PF_BAN AF_BAN
300 #define PF_ATM AF_ATM
301 #define PF_INET6 AF_INET6
302 #define PF_BTH AF_BTH
303 
304 #define PF_MAX AF_MAX
305 
306 #define SOL_SOCKET 0xffff
307 
308 #define SOMAXCONN 0x7fffffff
309 
310 #define MSG_OOB 0x1
311 #define MSG_PEEK 0x2
312 #define MSG_DONTROUTE 0x4
313 
314 #if(_WIN32_WINNT >= 0x0502)
315 #define MSG_WAITALL 0x8
316 #endif
317 
318 #if(_WIN32_WINNT >= 0x0603)
319 #define MSG_PUSH_IMMEDIATE 0x20
320 #endif
321 
322 #define MSG_PARTIAL 0x8000
323 
324 #define MSG_INTERRUPT 0x10
325 
326 #define MSG_MAXIOVLEN 16
327 
328 #define MAXGETHOSTSTRUCT 1024
329 
330 #define FD_READ_BIT 0
331 #define FD_READ (1 << FD_READ_BIT)
332 
333 #define FD_WRITE_BIT 1
334 #define FD_WRITE (1 << FD_WRITE_BIT)
335 
336 #define FD_OOB_BIT 2
337 #define FD_OOB (1 << FD_OOB_BIT)
338 
339 #define FD_ACCEPT_BIT 3
340 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
341 
342 #define FD_CONNECT_BIT 4
343 #define FD_CONNECT (1 << FD_CONNECT_BIT)
344 
345 #define FD_CLOSE_BIT 5
346 #define FD_CLOSE (1 << FD_CLOSE_BIT)
347 
348 #define FD_QOS_BIT 6
349 #define FD_QOS (1 << FD_QOS_BIT)
350 
351 #define FD_GROUP_QOS_BIT 7
352 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
353 
354 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
355 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
356 
357 #define FD_ADDRESS_LIST_CHANGE_BIT 9
358 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
359 
360 #define FD_MAX_EVENTS 10
361 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
362 
363 #include <psdk_inc/_wsa_errnos.h>
364 
365 #define WSAEVENT HANDLE
366 #define LPWSAEVENT LPHANDLE
367 #define WSAOVERLAPPED OVERLAPPED
368 
369   typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
370 
371 #define WSA_IO_PENDING (ERROR_IO_PENDING)
372 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
373 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
374 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
375 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
376 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
377 
378 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
379 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
380 #define WSA_WAIT_FAILED (WAIT_FAILED)
381 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
382 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
383 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
384 #define WSA_INFINITE (INFINITE)
385 
386   typedef struct _WSABUF {
387     u_long len;
388     char *buf;
389   } WSABUF,*LPWSABUF;
390 
391 #include <qos.h>
392 
393   typedef struct _QualityOfService {
394     FLOWSPEC SendingFlowspec;
395     FLOWSPEC ReceivingFlowspec;
396     WSABUF ProviderSpecific;
397   } QOS,*LPQOS;
398 
399 #define CF_ACCEPT 0x0000
400 #define CF_REJECT 0x0001
401 #define CF_DEFER 0x0002
402 
403 #define SD_RECEIVE 0x00
404 #define SD_SEND 0x01
405 #define SD_BOTH 0x02
406 
407 typedef unsigned int GROUP;
408 
409 #define SG_UNCONSTRAINED_GROUP 0x01
410 #define SG_CONSTRAINED_GROUP 0x02
411 
412   typedef struct _WSANETWORKEVENTS {
413     __LONG32 lNetworkEvents;
414     int iErrorCode[FD_MAX_EVENTS];
415   } WSANETWORKEVENTS,*LPWSANETWORKEVENTS;
416 
417 #ifndef GUID_DEFINED
418 #include <guiddef.h>
419 #endif
420 
421 #define MAX_PROTOCOL_CHAIN 7
422 
423 #define BASE_PROTOCOL 1
424 #define LAYERED_PROTOCOL 0
425 
426   typedef struct _WSAPROTOCOLCHAIN {
427     int ChainLen;
428 
429     DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
430   } WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN;
431 
432 #define WSAPROTOCOL_LEN 255
433 
434   typedef struct _WSAPROTOCOL_INFOA {
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     CHAR szProtocol[WSAPROTOCOL_LEN+1];
455   } WSAPROTOCOL_INFOA,*LPWSAPROTOCOL_INFOA;
456 
457   typedef struct _WSAPROTOCOL_INFOW {
458     DWORD dwServiceFlags1;
459     DWORD dwServiceFlags2;
460     DWORD dwServiceFlags3;
461     DWORD dwServiceFlags4;
462     DWORD dwProviderFlags;
463     GUID ProviderId;
464     DWORD dwCatalogEntryId;
465     WSAPROTOCOLCHAIN ProtocolChain;
466     int iVersion;
467     int iAddressFamily;
468     int iMaxSockAddr;
469     int iMinSockAddr;
470     int iSocketType;
471     int iProtocol;
472     int iProtocolMaxOffset;
473     int iNetworkByteOrder;
474     int iSecurityScheme;
475     DWORD dwMessageSize;
476     DWORD dwProviderReserved;
477     WCHAR szProtocol[WSAPROTOCOL_LEN+1];
478   } WSAPROTOCOL_INFOW,*LPWSAPROTOCOL_INFOW;
479 
480   __MINGW_TYPEDEF_AW(WSAPROTOCOL_INFO)
481   __MINGW_TYPEDEF_AW(LPWSAPROTOCOL_INFO)
482 
483 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
484 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
485 #define PFL_HIDDEN 0x00000004
486 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
487 #define PFL_NETWORKDIRECT_PROVIDER 0x00000010
488 
489 #define XP1_CONNECTIONLESS 0x00000001
490 #define XP1_GUARANTEED_DELIVERY 0x00000002
491 #define XP1_GUARANTEED_ORDER 0x00000004
492 #define XP1_MESSAGE_ORIENTED 0x00000008
493 #define XP1_PSEUDO_STREAM 0x00000010
494 #define XP1_GRACEFUL_CLOSE 0x00000020
495 #define XP1_EXPEDITED_DATA 0x00000040
496 #define XP1_CONNECT_DATA 0x00000080
497 #define XP1_DISCONNECT_DATA 0x00000100
498 #define XP1_SUPPORT_BROADCAST 0x00000200
499 #define XP1_SUPPORT_MULTIPOINT 0x00000400
500 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
501 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000
502 #define XP1_QOS_SUPPORTED 0x00002000
503 #define XP1_INTERRUPT 0x00004000
504 #define XP1_UNI_SEND 0x00008000
505 #define XP1_UNI_RECV 0x00010000
506 #define XP1_IFS_HANDLES 0x00020000
507 #define XP1_PARTIAL_MESSAGE 0x00040000
508 #define XP1_SAN_SUPPORT_SDP 0x00080000
509 
510 #define BIGENDIAN 0x0000
511 #define LITTLEENDIAN 0x0001
512 
513 #define SECURITY_PROTOCOL_NONE 0x0000
514 
515 #define JL_SENDER_ONLY 0x01
516 #define JL_RECEIVER_ONLY 0x02
517 #define JL_BOTH 0x04
518 
519 #define WSA_FLAG_OVERLAPPED 0x01
520 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
521 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
522 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
523 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
524 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
525 #define WSA_FLAG_NO_HANDLE_INHERIT 0x80
526 #define WSA_FLAG_REGISTERED_IO 0x100
527 
528 #define IOC_UNIX 0x00000000
529 #define IOC_WS2 0x08000000
530 #define IOC_PROTOCOL 0x10000000
531 #define IOC_VENDOR 0x18000000
532 
533 #define _WSAIO(x,y) (IOC_VOID|(x)|(y))
534 #define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
535 #define _WSAIOW(x,y) (IOC_IN|(x)|(y))
536 #define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
537 
538 #define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
539 #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
540 #define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
541 #define SIO_FLUSH _WSAIO(IOC_WS2,4)
542 #define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
543 #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
544 #define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
545 #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
546 #define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
547 #define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
548 #define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
549 #define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
550 #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
551 #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
552 #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
553 #define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22)
554 #define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23)
555 #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
556 #define SIO_ADDRESS_LIST_SORT _WSAIORW(IOC_WS2,25)
557 #if (_WIN32_WINNT >= 0x0600)
558 #define SIO_RESERVED_1 _WSAIOW(IOC_WS2,26)
559 #define SIO_RESERVED_2 _WSAIOW(IOC_WS2,33)
560 #endif /* _WIN32_WINNT >= 0x0600 */
561 
562   typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF lpCallerId,LPWSABUF lpCallerData,LPQOS lpSQOS,LPQOS lpGQOS,LPWSABUF lpCalleeId,LPWSABUF lpCalleeData,GROUP *g,DWORD_PTR dwCallbackData);
563   typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,DWORD cbTransferred,LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags);
564 
565 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
566 
567   typedef enum _WSACOMPLETIONTYPE {
568     NSP_NOTIFY_IMMEDIATELY = 0,
569     NSP_NOTIFY_HWND,
570     NSP_NOTIFY_EVENT,
571     NSP_NOTIFY_PORT,
572     NSP_NOTIFY_APC
573   } WSACOMPLETIONTYPE,*PWSACOMPLETIONTYPE,*LPWSACOMPLETIONTYPE;
574 
575   typedef struct _WSACOMPLETION {
576     WSACOMPLETIONTYPE Type;
577     union {
578       struct {
579 	HWND hWnd;
580 	UINT uMsg;
581 	WPARAM context;
582       } WindowMessage;
583       struct {
584 	LPWSAOVERLAPPED lpOverlapped;
585       } Event;
586       struct {
587 	LPWSAOVERLAPPED lpOverlapped;
588 	LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
589       } Apc;
590       struct {
591 	LPWSAOVERLAPPED lpOverlapped;
592 	HANDLE hPort;
593 	ULONG_PTR Key;
594       } Port;
595     } Parameters;
596   } WSACOMPLETION,*PWSACOMPLETION,*LPWSACOMPLETION;
597 
598 #define TH_NETDEV 0x00000001
599 #define TH_TAPI 0x00000002
600 
601   typedef struct sockaddr_storage SOCKADDR_STORAGE;
602   typedef struct sockaddr_storage *PSOCKADDR_STORAGE;
603   typedef struct sockaddr_storage *LPSOCKADDR_STORAGE;
604   typedef u_short ADDRESS_FAMILY;
605 
606 #ifndef _tagBLOB_DEFINED
607 #define _tagBLOB_DEFINED
608 #define _BLOB_DEFINED
609 #define _LPBLOB_DEFINED
610   typedef struct _BLOB {
611     ULONG cbSize;
612     BYTE *pBlobData;
613   } BLOB,*LPBLOB;
614 #endif /* _tagBLOB_DEFINED */
615 
616 #define SERVICE_MULTIPLE (0x00000001)
617 
618 #define NS_ALL (0)
619 
620 #define NS_SAP (1)
621 #define NS_NDS (2)
622 #define NS_PEER_BROWSE (3)
623 #define NS_SLP (5)
624 #define NS_DHCP (6)
625 
626 #define NS_TCPIP_LOCAL (10)
627 #define NS_TCPIP_HOSTS (11)
628 #define NS_DNS (12)
629 #define NS_NETBT (13)
630 #define NS_WINS (14)
631 #if(_WIN32_WINNT >= 0x0501)
632 #define NS_NLA (15)
633 #endif
634 #if (_WIN32_WINNT >= 0x0600)
635 #define NS_BTH (16)
636 #endif
637 
638 #define NS_NBP (20)
639 
640 #define NS_MS (30)
641 #define NS_STDA (31)
642 #define NS_NTDS (32)
643 
644 #if (_WIN32_WINNT >= 0x0600)
645 #define NS_EMAIL (37)
646 #define NS_PNRPNAME (38)
647 #define NS_PNRPCLOUD (39)
648 #endif
649 
650 #define NS_X500 (40)
651 #define NS_NIS (41)
652 #define NS_NISPLUS (42)
653 
654 #define NS_WRQ (50)
655 
656 #define NS_NETDES (60)
657 
658 #define RES_UNUSED_1 (0x00000001)
659 #define RES_FLUSH_CACHE (0x00000002)
660 #ifndef RES_SERVICE
661 #define RES_SERVICE (0x00000004)
662 #endif
663 
664 #define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
665 #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
666 #define SERVICE_TYPE_VALUE_SAPIDA "SapId"
667 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
668 
669 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
670 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
671 
672 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
673 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
674 
675 #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
676 #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
677 
678 #define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID)
679 #define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT)
680 #define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT)
681 #define SERVICE_TYPE_VALUE_OBJECTID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_OBJECTID)
682 
683 #ifndef __CSADDR_DEFINED__
684 #define __CSADDR_DEFINED__
685 
686   typedef struct _SOCKET_ADDRESS {
687     LPSOCKADDR lpSockaddr;
688     INT iSockaddrLength;
689   } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
690 
691   typedef struct _CSADDR_INFO {
692     SOCKET_ADDRESS LocalAddr;
693     SOCKET_ADDRESS RemoteAddr;
694     INT iSocketType;
695     INT iProtocol;
696   } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
697 #endif /* __CSADDR_DEFINED__ */
698 
699   typedef struct _SOCKET_ADDRESS_LIST {
700     INT iAddressCount;
701     SOCKET_ADDRESS Address[1];
702   } SOCKET_ADDRESS_LIST,*PSOCKET_ADDRESS_LIST,*LPSOCKET_ADDRESS_LIST;
703 
704   typedef struct _AFPROTOCOLS {
705     INT iAddressFamily;
706     INT iProtocol;
707   } AFPROTOCOLS,*PAFPROTOCOLS,*LPAFPROTOCOLS;
708 
709   typedef enum _WSAEcomparator {
710     COMP_EQUAL = 0,
711     COMP_NOTLESS
712   } WSAECOMPARATOR,*PWSAECOMPARATOR,*LPWSAECOMPARATOR;
713 
714   typedef struct _WSAVersion {
715     DWORD dwVersion;
716     WSAECOMPARATOR ecHow;
717   } WSAVERSION,*PWSAVERSION,*LPWSAVERSION;
718 
719   typedef struct _WSAQuerySetA {
720     DWORD dwSize;
721     LPSTR lpszServiceInstanceName;
722     LPGUID lpServiceClassId;
723     LPWSAVERSION lpVersion;
724     LPSTR lpszComment;
725     DWORD dwNameSpace;
726     LPGUID lpNSProviderId;
727     LPSTR lpszContext;
728     DWORD dwNumberOfProtocols;
729     LPAFPROTOCOLS lpafpProtocols;
730     LPSTR lpszQueryString;
731     DWORD dwNumberOfCsAddrs;
732     LPCSADDR_INFO lpcsaBuffer;
733     DWORD dwOutputFlags;
734     LPBLOB lpBlob;
735   } WSAQUERYSETA,*PWSAQUERYSETA,*LPWSAQUERYSETA;
736 
737   typedef struct _WSAQuerySetW {
738     DWORD dwSize;
739     LPWSTR lpszServiceInstanceName;
740     LPGUID lpServiceClassId;
741     LPWSAVERSION lpVersion;
742     LPWSTR lpszComment;
743     DWORD dwNameSpace;
744     LPGUID lpNSProviderId;
745     LPWSTR lpszContext;
746     DWORD dwNumberOfProtocols;
747     LPAFPROTOCOLS lpafpProtocols;
748     LPWSTR lpszQueryString;
749     DWORD dwNumberOfCsAddrs;
750     LPCSADDR_INFO lpcsaBuffer;
751     DWORD dwOutputFlags;
752     LPBLOB lpBlob;
753   } WSAQUERYSETW,*PWSAQUERYSETW,*LPWSAQUERYSETW;
754 
755   __MINGW_TYPEDEF_AW(WSAQUERYSET)
756   __MINGW_TYPEDEF_AW(PWSAQUERYSET)
757   __MINGW_TYPEDEF_AW(LPWSAQUERYSET)
758 
759 #define LUP_DEEP 0x0001
760 #define LUP_CONTAINERS 0x0002
761 #define LUP_NOCONTAINERS 0x0004
762 #define LUP_NEAREST 0x0008
763 #define LUP_RETURN_NAME 0x0010
764 #define LUP_RETURN_TYPE 0x0020
765 #define LUP_RETURN_VERSION 0x0040
766 #define LUP_RETURN_COMMENT 0x0080
767 #define LUP_RETURN_ADDR 0x0100
768 #define LUP_RETURN_BLOB 0x0200
769 #define LUP_RETURN_ALIASES 0x0400
770 #define LUP_RETURN_QUERY_STRING 0x0800
771 #define LUP_RETURN_ALL 0x0FF0
772 #define LUP_RES_SERVICE 0x8000
773 
774 #define LUP_FLUSHCACHE 0x1000
775 #define LUP_FLUSHPREVIOUS 0x2000
776 
777 #define LUP_NON_AUTHORITATIVE 0x4000
778 #define LUP_SECURE 0x8000
779 #define LUP_RETURN_PREFERRED_NAMES 0x10000
780 #define LUP_DNS_ONLY 0x20000
781 
782 #define LUP_ADDRCONFIG 0x100000
783 #define LUP_DUAL_ADDR 0x200000
784 #define LUP_FILESERVER 0x400000
785 #define LUP_DISABLE_IDN_ENCODING 0x00800000
786 #define LUP_API_ANSI 0x01000000
787 
788 #define LUP_RESOLUTION_HANDLE 0x80000000
789 
790 #define LUP_RES_RESERVICE 0x8000 /* FIXME: not in PSDK anymore?? */
791 
792 #define RESULT_IS_ALIAS 0x0001
793 #if(_WIN32_WINNT >= 0x0501)
794 #define RESULT_IS_ADDED 0x0010
795 #define RESULT_IS_CHANGED 0x0020
796 #define RESULT_IS_DELETED 0x0040
797 #endif
798 
799   typedef enum _WSAESETSERVICEOP {
800     RNRSERVICE_REGISTER = 0,
801     RNRSERVICE_DEREGISTER,
802     RNRSERVICE_DELETE
803   } WSAESETSERVICEOP,*PWSAESETSERVICEOP,*LPWSAESETSERVICEOP;
804 
805   typedef struct _WSANSClassInfoA {
806     LPSTR lpszName;
807     DWORD dwNameSpace;
808     DWORD dwValueType;
809     DWORD dwValueSize;
810     LPVOID lpValue;
811   } WSANSCLASSINFOA,*PWSANSCLASSINFOA,*LPWSANSCLASSINFOA;
812 
813   typedef struct _WSANSClassInfoW {
814     LPWSTR lpszName;
815     DWORD dwNameSpace;
816     DWORD dwValueType;
817     DWORD dwValueSize;
818     LPVOID lpValue;
819   } WSANSCLASSINFOW,*PWSANSCLASSINFOW,*LPWSANSCLASSINFOW;
820 
821   __MINGW_TYPEDEF_AW(WSANSCLASSINFO)
822   __MINGW_TYPEDEF_AW(PWSANSCLASSINFO)
823   __MINGW_TYPEDEF_AW(LPWSANSCLASSINFO)
824 
825   typedef struct _WSAServiceClassInfoA {
826     LPGUID lpServiceClassId;
827     LPSTR lpszServiceClassName;
828     DWORD dwCount;
829     LPWSANSCLASSINFOA lpClassInfos;
830   } WSASERVICECLASSINFOA,*PWSASERVICECLASSINFOA,*LPWSASERVICECLASSINFOA;
831 
832   typedef struct _WSAServiceClassInfoW {
833     LPGUID lpServiceClassId;
834     LPWSTR lpszServiceClassName;
835     DWORD dwCount;
836     LPWSANSCLASSINFOW lpClassInfos;
837   } WSASERVICECLASSINFOW,*PWSASERVICECLASSINFOW,*LPWSASERVICECLASSINFOW;
838 
839   __MINGW_TYPEDEF_AW(WSASERVICECLASSINFO)
840   __MINGW_TYPEDEF_AW(PWSASERVICECLASSINFO)
841   __MINGW_TYPEDEF_AW(LPWSASERVICECLASSINFO)
842 
843   typedef struct _WSANAMESPACE_INFOA {
844     GUID NSProviderId;
845     DWORD dwNameSpace;
846     WINBOOL fActive;
847     DWORD dwVersion;
848     LPSTR lpszIdentifier;
849   } WSANAMESPACE_INFOA,*PWSANAMESPACE_INFOA,*LPWSANAMESPACE_INFOA;
850 
851   typedef struct _WSANAMESPACE_INFOW {
852     GUID NSProviderId;
853     DWORD dwNameSpace;
854     WINBOOL fActive;
855     DWORD dwVersion;
856     LPWSTR lpszIdentifier;
857   } WSANAMESPACE_INFOW,*PWSANAMESPACE_INFOW,*LPWSANAMESPACE_INFOW;
858 
859   __MINGW_TYPEDEF_AW(WSANAMESPACE_INFO)
860   __MINGW_TYPEDEF_AW(PWSANAMESPACE_INFO)
861   __MINGW_TYPEDEF_AW(LPWSANAMESPACE_INFO)
862 
863 /* FIXME: WSAMSG originally lived in mswsock.h,
864  * newer SDKs moved it into a new ws2def.h. for
865  * now we keep it here. */
866   typedef struct _WSAMSG {
867     LPSOCKADDR name;
868     INT namelen;
869     LPWSABUF lpBuffers;
870     DWORD dwBufferCount;
871     WSABUF Control;
872     DWORD dwFlags;
873   } WSAMSG,*PWSAMSG,*LPWSAMSG;
874 
875 #if INCL_WINSOCK_API_TYPEDEFS
876 #define LPFN_WSADUPLICATESOCKET __MINGW_NAME_AW(LPFN_WSADUPLICATESOCKET)
877 #define LPFN_WSAENUMPROTOCOLS __MINGW_NAME_AW(LPFN_WSAENUMPROTOCOLS)
878 #define LPFN_WSASOCKET __MINGW_NAME_AW(LPFN_WSASOCKET)
879 #define LPFN_WSAADDRESSTOSTRING __MINGW_NAME_AW(LPFN_WSAADDRESSTOSTRING)
880 #define LPFN_WSASTRINGTOADDRESS __MINGW_NAME_AW(LPFN_WSASTRINGTOADDRESS)
881 #define LPFN_WSALOOKUPSERVICEBEGIN __MINGW_NAME_AW(LPFN_WSALOOKUPSERVICEBEGIN)
882 #define LPFN_WSALOOKUPSERVICENEXT __MINGW_NAME_AW(LPFN_WSALOOKUPSERVICENEXT)
883 #define LPFN_WSAINSTALLSERVICECLASS __MINGW_NAME_AW(LPFN_WSAINSTALLSERVICECLASS)
884 #define LPFN_WSAGETSERVICECLASSINFO __MINGW_NAME_AW(LPFN_WSAGETSERVICECLASSINFO)
885 #define LPFN_WSAENUMNAMESPACEPROVIDERS __MINGW_NAME_AW(LPFN_WSAENUMNAMESPACEPROVIDERS)
886 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID __MINGW_NAME_AW(LPFN_WSAGETSERVICECLASSNAMEBYCLASSID)
887 #define LPFN_WSASETSERVICE __MINGW_NAME_AW(LPFN_WSASETSERVICE)
888 
889   typedef SOCKET (WSAAPI *LPFN_ACCEPT)(SOCKET s,struct sockaddr *addr,int *addrlen);
890   typedef int (WSAAPI *LPFN_BIND)(SOCKET s,const struct sockaddr *name,int namelen);
891   typedef int (WSAAPI *LPFN_CLOSESOCKET)(SOCKET s);
892   typedef int (WSAAPI *LPFN_CONNECT)(SOCKET s,const struct sockaddr *name,int namelen);
893   typedef int (WSAAPI *LPFN_IOCTLSOCKET)(SOCKET s,__LONG32 cmd,u_long *argp);
894   typedef int (WSAAPI *LPFN_GETPEERNAME)(SOCKET s,struct sockaddr *name,int *namelen);
895   typedef int (WSAAPI *LPFN_GETSOCKNAME)(SOCKET s,struct sockaddr *name,int *namelen);
896   typedef int (WSAAPI *LPFN_GETSOCKOPT)(SOCKET s,int level,int optname,char *optval,int *optlen);
897   typedef u_long (WSAAPI *LPFN_HTONL)(u_long hostlong);
898   typedef u_short (WSAAPI *LPFN_HTONS)(u_short hostshort);
899   typedef unsigned __LONG32 (WSAAPI *LPFN_INET_ADDR)(const char *cp);
900   typedef char *(WSAAPI *LPFN_INET_NTOA)(struct in_addr in);
901   typedef int (WSAAPI *LPFN_LISTEN)(SOCKET s,int backlog);
902   typedef u_long (WSAAPI *LPFN_NTOHL)(u_long netlong);
903   typedef u_short (WSAAPI *LPFN_NTOHS)(u_short netshort);
904   typedef int (WSAAPI *LPFN_RECV)(SOCKET s,char *buf,int len,int flags);
905   typedef int (WSAAPI *LPFN_RECVFROM)(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
906   typedef int (WSAAPI *LPFN_SELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
907   typedef int (WSAAPI *LPFN_SEND)(SOCKET s,const char *buf,int len,int flags);
908   typedef int (WSAAPI *LPFN_SENDTO)(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
909   typedef int (WSAAPI *LPFN_SETSOCKOPT)(SOCKET s,int level,int optname,const char *optval,int optlen);
910   typedef int (WSAAPI *LPFN_SHUTDOWN)(SOCKET s,int how);
911   typedef SOCKET (WSAAPI *LPFN_SOCKET)(int af,int type,int protocol);
912   typedef struct hostent *(WSAAPI *LPFN_GETHOSTBYADDR)(const char *addr,int len,int type);
913   typedef struct hostent *(WSAAPI *LPFN_GETHOSTBYNAME)(const char *name);
914   typedef int (WSAAPI *LPFN_GETHOSTNAME)(char *name,int namelen);
915   typedef struct servent *(WSAAPI *LPFN_GETSERVBYPORT)(int port,const char *proto);
916   typedef struct servent *(WSAAPI *LPFN_GETSERVBYNAME)(const char *name,const char *proto);
917   typedef struct protoent *(WSAAPI *LPFN_GETPROTOBYNUMBER)(int number);
918   typedef struct protoent *(WSAAPI *LPFN_GETPROTOBYNAME)(const char *name);
919   typedef int (WSAAPI *LPFN_WSASTARTUP)(WORD wVersionRequested,LPWSADATA lpWSAData);
920   typedef int (WSAAPI *LPFN_WSACLEANUP)(void);
921   typedef void (WSAAPI *LPFN_WSASETLASTERROR)(int iError);
922   typedef int (WSAAPI *LPFN_WSAGETLASTERROR)(void);
923   typedef WINBOOL (WSAAPI *LPFN_WSAISBLOCKING)(void);
924   typedef int (WSAAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
925   typedef FARPROC (WSAAPI *LPFN_WSASETBLOCKINGHOOK)(FARPROC lpBlockFunc);
926   typedef int (WSAAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
927   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETSERVBYNAME)(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen);
928   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETSERVBYPORT)(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen);
929   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
930   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND hWnd,u_int wMsg,int number,char *buf,int buflen);
931   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETHOSTBYNAME)(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
932   typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETHOSTBYADDR)(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen);
933   typedef int (WSAAPI *LPFN_WSACANCELASYNCREQUEST)(HANDLE hAsyncTaskHandle);
934   typedef int (WSAAPI *LPFN_WSAASYNCSELECT)(SOCKET s,HWND hWnd,u_int wMsg,__LONG32 lEvent);
935   typedef SOCKET (WSAAPI *LPFN_WSAACCEPT)(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData);
936   typedef WINBOOL (WSAAPI *LPFN_WSACLOSEEVENT)(WSAEVENT hEvent);
937   typedef int (WSAAPI *LPFN_WSACONNECT)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS);
938   typedef WSAEVENT (WSAAPI *LPFN_WSACREATEEVENT)(void);
939   typedef int (WSAAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo);
940   typedef int (WSAAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo);
941   typedef int (WSAAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents);
942   typedef int (WSAAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength);
943   typedef int (WSAAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength);
944   typedef int (WSAAPI *LPFN_WSAEVENTSELECT)(SOCKET s,WSAEVENT hEventObject,__LONG32 lNetworkEvents);
945   typedef WINBOOL (WSAAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags);
946   typedef WINBOOL (WSAAPI *LPFN_WSAGETQOSBYNAME)(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS);
947   typedef int (WSAAPI *LPFN_WSAHTONL)(SOCKET s,u_long hostlong,u_long *lpnetlong);
948   typedef int (WSAAPI *LPFN_WSAHTONS)(SOCKET s,u_short hostshort,u_short *lpnetshort);
949   typedef int (WSAAPI *LPFN_WSAIOCTL)(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
950   typedef SOCKET (WSAAPI *LPFN_WSAJOINLEAF)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags);
951   typedef int (WSAAPI *LPFN_WSANTOHL)(SOCKET s,u_long netlong,u_long *lphostlong);
952   typedef int (WSAAPI *LPFN_WSANTOHS)(SOCKET s,u_short netshort,u_short *lphostshort);
953   typedef int (WSAAPI *LPFN_WSARECV)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
954   typedef int (WSAAPI *LPFN_WSARECVDISCONNECT)(SOCKET s,LPWSABUF lpInboundDisconnectData);
955   typedef int (WSAAPI *LPFN_WSARECVFROM)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
956   typedef WINBOOL (WSAAPI *LPFN_WSARESETEVENT)(WSAEVENT hEvent);
957   typedef int (WSAAPI *LPFN_WSASEND)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
958   typedef int (WSAAPI *LPFN_WSASENDDISCONNECT)(SOCKET s,LPWSABUF lpOutboundDisconnectData);
959   typedef int (WSAAPI *LPFN_WSASENDTO)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
960   typedef WINBOOL (WSAAPI *LPFN_WSASETEVENT)(WSAEVENT hEvent);
961   typedef SOCKET (WSAAPI *LPFN_WSASOCKETA)(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags);
962   typedef SOCKET (WSAAPI *LPFN_WSASOCKETW)(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags);
963   typedef DWORD (WSAAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD cEvents,const WSAEVENT *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable);
964   typedef INT (WSAAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
965   typedef INT (WSAAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
966   typedef INT (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
967   typedef INT (WSAAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
968   typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
969   typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
970   typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults);
971   typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults);
972   typedef INT (WSAAPI *LPFN_WSANSPIOCTL)(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion);
973   typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE hLookup);
974   typedef INT (WSAAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA lpServiceClassInfo);
975   typedef INT (WSAAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW lpServiceClassInfo);
976   typedef INT (WSAAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID lpServiceClassId);
977   typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo);
978   typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo);
979   typedef INT (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer);
980   typedef INT (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer);
981   typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
982   typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
983   typedef INT (WSAAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
984   typedef INT (WSAAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
985   typedef INT (WSAAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
986 #endif
987 
988 #define WSADuplicateSocket __MINGW_NAME_AW(WSADuplicateSocket)
989 #define WSAEnumProtocols __MINGW_NAME_AW(WSAEnumProtocols)
990 #define WSAAddressToString __MINGW_NAME_AW(WSAAddressToString)
991 #define WSASocket __MINGW_NAME_AW(WSASocket)
992 #define WSAStringToAddress __MINGW_NAME_AW(WSAStringToAddress)
993 #define WSALookupServiceBegin __MINGW_NAME_AW(WSALookupServiceBegin)
994 #define WSALookupServiceNext __MINGW_NAME_AW(WSALookupServiceNext)
995 #define WSAInstallServiceClass __MINGW_NAME_AW(WSAInstallServiceClass)
996 #define WSAGetServiceClassInfo __MINGW_NAME_AW(WSAGetServiceClassInfo)
997 #define WSAEnumNameSpaceProviders __MINGW_NAME_AW(WSAEnumNameSpaceProviders)
998 #define WSAGetServiceClassNameByClassId __MINGW_NAME_AW(WSAGetServiceClassNameByClassId)
999 #define WSASetService __MINGW_NAME_AW(WSASetService)
1000 
1001 #ifndef __WINSOCK_WS1_SHARED
1002 /* these 46 functions have the same prototypes as in winsock2 */
1003   WINSOCK_API_LINKAGE SOCKET WSAAPI accept(SOCKET s,struct sockaddr *addr,int *addrlen);
1004   WINSOCK_API_LINKAGE int WSAAPI bind(SOCKET s,const struct sockaddr *name,int namelen);
1005   WINSOCK_API_LINKAGE int WSAAPI closesocket(SOCKET s);
1006   WINSOCK_API_LINKAGE int WSAAPI connect(SOCKET s,const struct sockaddr *name,int namelen);
1007   WINSOCK_API_LINKAGE int WSAAPI ioctlsocket(SOCKET s,__LONG32 cmd,u_long *argp);
1008   WINSOCK_API_LINKAGE int WSAAPI getpeername(SOCKET s,struct sockaddr *name,int *namelen);
1009   WINSOCK_API_LINKAGE int WSAAPI getsockname(SOCKET s,struct sockaddr *name,int *namelen);
1010   WINSOCK_API_LINKAGE int WSAAPI getsockopt(SOCKET s,int level,int optname,char *optval,int *optlen);
1011 #ifndef __INSIDE_CYGWIN__
1012   WINSOCK_API_LINKAGE u_long WSAAPI htonl(u_long hostlong);
1013   WINSOCK_API_LINKAGE u_short WSAAPI htons(u_short hostshort);
1014 #endif /* !__INSIDE_CYGWIN__ */
1015   WINSOCK_API_LINKAGE unsigned __LONG32 WSAAPI inet_addr(const char *cp);
1016   WINSOCK_API_LINKAGE char *WSAAPI inet_ntoa(struct in_addr in);
1017   WINSOCK_API_LINKAGE int WSAAPI listen(SOCKET s,int backlog);
1018 #ifndef __INSIDE_CYGWIN__
1019   WINSOCK_API_LINKAGE u_long WSAAPI ntohl(u_long netlong);
1020   WINSOCK_API_LINKAGE u_short WSAAPI ntohs(u_short netshort);
1021 #endif /* !__INSIDE_CYGWIN__ */
1022   WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
1023   WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
1024 #ifndef __INSIDE_CYGWIN__
1025   WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
1026 #endif /* !__INSIDE_CYGWIN__ */
1027   WINSOCK_API_LINKAGE int WSAAPI send(SOCKET s,const char *buf,int len,int flags);
1028   WINSOCK_API_LINKAGE int WSAAPI sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
1029   WINSOCK_API_LINKAGE int WSAAPI setsockopt(SOCKET s,int level,int optname,const char *optval,int optlen);
1030   WINSOCK_API_LINKAGE int WSAAPI shutdown(SOCKET s,int how);
1031   WINSOCK_API_LINKAGE SOCKET WSAAPI socket(int af,int type,int protocol);
1032   WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyaddr(const char *addr,int len,int type);
1033   WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyname(const char *name);
1034   WINSOCK_API_LINKAGE int WSAAPI gethostname(char *name,int namelen);
1035   WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyport(int port,const char *proto);
1036   WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyname(const char *name,const char *proto);
1037   WINSOCK_API_LINKAGE struct protoent *WSAAPI getprotobynumber(int number);
1038   WINSOCK_API_LINKAGE struct protoent *WSAAPI getprotobyname(const char *name);
1039   WINSOCK_API_LINKAGE int WSAAPI WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);
1040   WINSOCK_API_LINKAGE int WSAAPI WSACleanup(void);
1041   WINSOCK_API_LINKAGE void WSAAPI WSASetLastError(int iError);
1042   WINSOCK_API_LINKAGE int WSAAPI WSAGetLastError(void);
1043   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAIsBlocking(void);
1044   WINSOCK_API_LINKAGE int WSAAPI WSAUnhookBlockingHook(void);
1045   WINSOCK_API_LINKAGE FARPROC WSAAPI WSASetBlockingHook(FARPROC lpBlockFunc);
1046   WINSOCK_API_LINKAGE int WSAAPI WSACancelBlockingCall(void);
1047   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByName(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen);
1048   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByPort(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen);
1049   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
1050   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByNumber(HWND hWnd,u_int wMsg,int number,char *buf,int buflen);
1051   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
1052   WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByAddr(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen);
1053   WINSOCK_API_LINKAGE int WSAAPI WSACancelAsyncRequest(HANDLE hAsyncTaskHandle);
1054   WINSOCK_API_LINKAGE int WSAAPI WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,__LONG32 lEvent);
1055 #endif /* __WINSOCK_WS1_SHARED */
1056   WINSOCK_API_LINKAGE SOCKET WSAAPI WSAAccept(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData);
1057   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSACloseEvent(WSAEVENT hEvent);
1058   WINSOCK_API_LINKAGE int WSAAPI WSAConnect(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS);
1059   WINSOCK_API_LINKAGE WSAEVENT WSAAPI WSACreateEvent(void);
1060   WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketA(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo);
1061   WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketW(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo);
1062   WINSOCK_API_LINKAGE int WSAAPI WSAEnumNetworkEvents(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents);
1063   WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsA(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength);
1064   WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsW(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength);
1065   WINSOCK_API_LINKAGE int WSAAPI WSAEventSelect(SOCKET s,WSAEVENT hEventObject,__LONG32 lNetworkEvents);
1066   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAGetOverlappedResult(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags);
1067   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAGetQOSByName(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS);
1068   WINSOCK_API_LINKAGE int WSAAPI WSAHtonl(SOCKET s,u_long hostlong,u_long *lpnetlong);
1069   WINSOCK_API_LINKAGE int WSAAPI WSAHtons(SOCKET s,u_short hostshort,u_short *lpnetshort);
1070   WINSOCK_API_LINKAGE int WSAAPI WSAIoctl(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1071   WINSOCK_API_LINKAGE SOCKET WSAAPI WSAJoinLeaf(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags);
1072   WINSOCK_API_LINKAGE int WSAAPI WSANtohl(SOCKET s,u_long netlong,u_long *lphostlong);
1073   WINSOCK_API_LINKAGE int WSAAPI WSANtohs(SOCKET s,u_short netshort,u_short *lphostshort);
1074   WINSOCK_API_LINKAGE int WSAAPI WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1075   WINSOCK_API_LINKAGE int WSAAPI WSARecvDisconnect(SOCKET s,LPWSABUF lpInboundDisconnectData);
1076   WINSOCK_API_LINKAGE int WSAAPI WSARecvFrom(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1077   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAResetEvent(WSAEVENT hEvent);
1078   WINSOCK_API_LINKAGE int WSAAPI WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1079   WINSOCK_API_LINKAGE int WSAAPI WSASendDisconnect(SOCKET s,LPWSABUF lpOutboundDisconnectData);
1080   WINSOCK_API_LINKAGE int WSAAPI WSASendTo(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1081   WINSOCK_API_LINKAGE WINBOOL WSAAPI WSASetEvent(WSAEVENT hEvent);
1082   WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketA(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags);
1083   WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketW(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags);
1084   WINSOCK_API_LINKAGE DWORD WSAAPI WSAWaitForMultipleEvents(DWORD cEvents,const WSAEVENT *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable);
1085   WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringA(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
1086   WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringW(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
1087   WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressA(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
1088   WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressW(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
1089   WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
1090   WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
1091   WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextA(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults);
1092   WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextW(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults);
1093   WINSOCK_API_LINKAGE INT WSAAPI WSANSPIoctl(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion);
1094   WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceEnd(HANDLE hLookup);
1095   WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA lpServiceClassInfo);
1096   WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW lpServiceClassInfo);
1097   WINSOCK_API_LINKAGE INT WSAAPI WSARemoveServiceClass(LPGUID lpServiceClassId);
1098   WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoA(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo);
1099   WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoW(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo);
1100   WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersA(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer);
1101   WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersW(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer);
1102   WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdA(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
1103   WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdW(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
1104   WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
1105   WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceW(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
1106   WINSOCK_API_LINKAGE INT WSAAPI WSAProviderConfigChange(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
1107 
1108 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
1109 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
1110 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
1111 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
1112 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
1113 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
1114 
1115 #if (_WIN32_WINNT >= 0x0600)
1116 typedef struct _WSANAMESPACE_INFOEXA {
1117   GUID NSProviderId;
1118   DWORD dwNameSpace;
1119   WINBOOL fActive;
1120   DWORD dwVersion;
1121   LPSTR lpszIdentifier;
1122   BLOB ProviderSpecific;
1123 } WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA;
1124 
1125 typedef struct _WSANAMESPACE_INFOEXW {
1126   GUID NSProviderId;
1127   DWORD dwNameSpace;
1128   WINBOOL fActive;
1129   DWORD dwVersion;
1130   LPWSTR lpszIdentifier;
1131   BLOB ProviderSpecific;
1132 } WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW;
1133 
1134 __MINGW_TYPEDEF_AW(WSANAMESPACE_INFOEX)
1135 __MINGW_TYPEDEF_AW(PWSANAMESPACE_INFOEX)
1136 __MINGW_TYPEDEF_AW(LPWSANAMESPACE_INFOEX)
1137 
1138 typedef struct _WSAQUERYSET2A {
1139   DWORD         dwSize;
1140   LPSTR         lpszServiceInstanceName;
1141   LPWSAVERSION  lpVersion;
1142   LPSTR         lpszComment;
1143   DWORD         dwNameSpace;
1144   LPGUID        lpNSProviderId;
1145   LPSTR         lpszContext;
1146   DWORD         dwNumberOfProtocols;
1147   LPAFPROTOCOLS lpafpProtocols;
1148   LPSTR         lpszQueryString;
1149   DWORD         dwNumberOfCsAddrs;
1150   LPCSADDR_INFO lpcsaBuffer;
1151   DWORD         dwOutputFlags;
1152   LPBLOB        lpBlob;
1153 } WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A;
1154 
1155 typedef struct _WSAQUERYSET2W {
1156   DWORD         dwSize;
1157   LPWSTR        lpszServiceInstanceName;
1158   LPWSAVERSION  lpVersion;
1159   LPWSTR        lpszComment;
1160   DWORD         dwNameSpace;
1161   LPGUID        lpNSProviderId;
1162   LPTSTR        lpszContext;
1163   DWORD         dwNumberOfProtocols;
1164   LPAFPROTOCOLS lpafpProtocols;
1165   LPWSTR        lpszQueryString;
1166   DWORD         dwNumberOfCsAddrs;
1167   LPCSADDR_INFO lpcsaBuffer;
1168   DWORD         dwOutputFlags;
1169   LPBLOB        lpBlob;
1170 } WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W;
1171 
1172 #define POLLRDNORM 0x0100
1173 #define POLLRDBAND 0x0200
1174 #define POLLIN    (POLLRDNORM | POLLRDBAND)
1175 #define POLLPRI    0x0400
1176 
1177 #define POLLWRNORM 0x0010
1178 #define POLLOUT   (POLLWRNORM)
1179 #define POLLWRBAND 0x0020
1180 
1181 #define POLLERR    0x0001
1182 #define POLLHUP    0x0002
1183 #define POLLNVAL   0x0004
1184 
1185 typedef struct pollfd {
1186   SOCKET fd;
1187   short  events;
1188   short  revents;
1189 } WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD;
1190 
1191 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByList(
1192   SOCKET s,
1193   PSOCKET_ADDRESS_LIST SocketAddressList,
1194   LPDWORD LocalAddressLength,
1195   LPSOCKADDR LocalAddress,
1196   LPDWORD RemoteAddressLength,
1197   LPSOCKADDR RemoteAddress,
1198   const PTIMEVAL timeout,
1199   LPWSAOVERLAPPED Reserved
1200 );
1201 
1202 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByNameA(
1203   SOCKET s,
1204   LPSTR nodename,
1205   LPSTR servicename,
1206   LPDWORD LocalAddressLength,
1207   LPSOCKADDR LocalAddress,
1208   LPDWORD RemoteAddressLength,
1209   LPSOCKADDR RemoteAddress,
1210   const PTIMEVAL timeout,
1211   LPWSAOVERLAPPED Reserved
1212 );
1213 
1214 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByNameW(
1215   SOCKET s,
1216   LPWSTR nodename,
1217   LPWSTR servicename,
1218   LPDWORD LocalAddressLength,
1219   LPSOCKADDR LocalAddress,
1220   LPDWORD RemoteAddressLength,
1221   LPSOCKADDR RemoteAddress,
1222   const PTIMEVAL timeout,
1223   LPWSAOVERLAPPED Reserved
1224 );
1225 #define WSAConnectByName __MINGW_NAME_AW(WSAConnectByName)
1226 
1227 INT WSAAPI WSAEnumNameSpaceProvidersExA(
1228   LPDWORD lpdwBufferLength,
1229   LPWSANAMESPACE_INFOEXA lpnspBuffer
1230 );
1231 
1232 INT WSAAPI WSAEnumNameSpaceProvidersExW(
1233   LPDWORD lpdwBufferLength,
1234   LPWSANAMESPACE_INFOEXW lpnspBuffer
1235 );
1236 #define WSAEnumNameSpaceProvidersEx __MINGW_NAME_AW(WSAEnumNameSpaceProvidersEx)
1237 
1238 int WSAAPI WSAPoll(
1239   WSAPOLLFD fdarray[],
1240   ULONG nfds,
1241   INT timeout
1242 );
1243 
1244 int WSAAPI WSASendMsg(
1245   SOCKET s,
1246   LPWSAMSG lpMsg,
1247   DWORD dwFlags,
1248   LPDWORD lpNumberOfBytesSent,
1249   LPWSAOVERLAPPED lpOverlapped,
1250   LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
1251 );
1252 #endif /*(_WIN32_WINNT >= 0x0600)*/
1253 
1254 #ifdef __cplusplus
1255 }
1256 #endif
1257 
1258 #ifdef _NEED_POPPACK
1259 #include <poppack.h>
1260 #endif
1261 
1262 #ifdef IPV6STRICT
1263 #include <wsipv6ok.h>
1264 #endif
1265 
1266 #ifdef __LP64__
1267 #pragma pop_macro("u_long")
1268 #endif
1269 
1270 #endif /* _WINSOCK2API_ */
1271