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.
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
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:
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
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.
35 * Portions Copyright (C) 1980, 1983, 1988, 1993
36 * The Regents of the University of California. All rights reserved.
38 * Portions Copyright (C) 1993 by Digital Equipment Corporation.
41 #if !(defined _WINSOCK2_H || defined _WINSOCK_H)
43 #define _WINSOCK_H /* to prevent later inclusion of winsock.h */
44 #pragma GCC system_header
46 #define _GNU_H_WINDOWS32_SOCKETS
49 #include <sys/bsdtypes.h>
51 #ifndef WINSOCK_API_LINKAGE
52 #ifdef __W32API_USE_DLLIMPORT__
53 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
55 #define WINSOCK_API_LINKAGE
61 /* Names common to Winsock1.1 and Winsock2
69 /* shutdown() how types */
70 #define SD_RECEIVE 0x00
74 #ifndef _SYS_TYPES_FD_SET
75 /* fd_set may have been defined by the newlib <sys/types.h>, if the
76 * internal __USE_W32_SOCKETS feature test has not been enabled.
82 SOCKET fd_array[FD_SETSIZE];
85 int PASCAL __WSAFDIsSet (SOCKET, fd_set *);
88 #define FD_CLR( fd, set ) do \
90 for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) \
91 { if (((fd_set *)(set))->fd_array[__i] == (fd)) \
92 { while (__i < ((fd_set *)(set))->fd_count-1) \
93 { ((fd_set *)(set))->fd_array[__i] \
94 = ((fd_set *)(set))->fd_array[__i + 1]; __i++; \
96 ((fd_set *)(set))->fd_count--; \
101 #endif /* ! defined FD_CLR */
104 /* FIXME: this differs from the original definition in <winsock.h>, and also
105 * from the corresponding definition in Cygwin's <sys/types.h>, (which isn't
106 * compatible with the WinSock fd_set type); which is correct?
108 #define FD_SET( fd, set ) do \
110 for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) \
111 if (((fd_set *)(set))->fd_array[__i] == (fd)) break; \
112 if (__i == ((fd_set *)(set))->fd_count) \
113 { if (((fd_set *)(set))->fd_count < FD_SETSIZE) \
114 { ((fd_set *)(set))->fd_array[__i] = (fd); \
115 ((fd_set *)(set))->fd_count++; \
119 #endif /* ! defined FD_SET */
122 #define FD_ZERO( set ) (((fd_set *)(set))->fd_count = 0)
123 #endif /* ! defined FD_ZERO */
126 #define FD_ISSET( fd, set ) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
127 #endif /* ! defined FD_ISSET */
129 #elif ! defined USE_SYS_TYPES_FD_SET
130 /* Definitions from <sys/types.h> probably aren't what the user wants;
131 * if they know what they are doing, and they are sure that this really
132 * is what they want, then they may enable the USE_SYS_TYPES_FD_SET
133 * feature test macro, to suppress this warning.
135 #warning "fd_set and associated macros have been defined in <sys/types.h>"
136 #warning "Your <sys/types.h> may cause runtime problems with W32 sockets."
137 #endif /* !_SYS_TYPES_FD_SET */
139 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
141 #ifndef _TIMEVAL_DEFINED
142 /* FIXME: These should be factored out; they are properly defined
143 * in <sys/time.h>, whence they should be included.
145 #define _TIMEVAL_DEFINED
151 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
152 #define timercmp(tvp, uvp, cmp) \
153 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
154 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
155 ((tvp)->tv_usec cmp (uvp)->tv_usec))
156 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
157 #endif /* _TIMEVAL_DEFINED */
164 # define h_addr h_addr_list[0]
173 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
175 #define IOCPARM_MASK 0x7F
176 #define IOC_VOID 0x20000000
177 #define IOC_OUT 0x40000000
178 #define IOC_IN 0x80000000
179 #define IOC_INOUT (IOC_IN | IOC_OUT)
181 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
183 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
184 #define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
185 #define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
187 #define FIONBIO _IOW('f', 126, u_long)
189 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
191 #define FIONREAD _IOR('f', 127, u_long)
192 #define FIOASYNC _IOW('f', 125, u_long)
193 #define SIOCSHIWAT _IOW('s', 0, u_long)
194 #define SIOCGHIWAT _IOR('s', 1, u_long)
195 #define SIOCSLOWAT _IOW('s', 2, u_long)
196 #define SIOCGLOWAT _IOR('s', 3, u_long)
197 #define SIOCATMARK _IOR('s', 7, u_long)
199 #if ! ( defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
221 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
224 #define IPPROTO_ICMP 1
225 #define IPPROTO_IGMP 2
226 #define IPPROTO_GGP 3
227 #define IPPROTO_TCP 6
228 #define IPPROTO_PUP 12
229 #define IPPROTO_UDP 17
230 #define IPPROTO_IDP 22
231 #define IPPROTO_ND 77
233 #define IPPROTO_RAW 255
234 #define IPPROTO_MAX 256
237 #define IPPROTO_HOPOPTS 0 /* IPv6 Hop-by-Hop options */
238 #define IPPROTO_IPV6 41 /* IPv6 header */
239 #define IPPROTO_ROUTING 43 /* IPv6 Routing header */
240 #define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
241 #define IPPROTO_ESP 50 /* encapsulating security payload */
242 #define IPPROTO_AH 51 /* authentication header */
243 #define IPPROTO_ICMPV6 58 /* ICMPv6 */
244 #define IPPROTO_NONE 59 /* IPv6 no next header */
245 #define IPPROTO_DSTOPTS 60 /* IPv6 Destination options */
247 #define IPPORT_ECHO 7
248 #define IPPORT_DISCARD 9
249 #define IPPORT_SYSTAT 11
250 #define IPPORT_DAYTIME 13
251 #define IPPORT_NETSTAT 15
252 #define IPPORT_FTP 21
253 #define IPPORT_TELNET 23
254 #define IPPORT_SMTP 25
255 #define IPPORT_TIMESERVER 37
256 #define IPPORT_NAMESERVER 42
257 #define IPPORT_WHOIS 43
258 #define IPPORT_MTP 57
259 #define IPPORT_TFTP 69
260 #define IPPORT_RJE 77
261 #define IPPORT_FINGER 79
262 #define IPPORT_TTYLINK 87
263 #define IPPORT_SUPDUP 95
264 #define IPPORT_EXECSERVER 512
265 #define IPPORT_LOGINSERVER 513
266 #define IPPORT_CMDSERVER 514
267 #define IPPORT_EFSSERVER 520
268 #define IPPORT_BIFFUDP 512
269 #define IPPORT_WHOSERVER 513
270 #define IPPORT_ROUTESERVER 520
271 #define IPPORT_RESERVED 1024
273 #define IMPLINK_IP 155
274 #define IMPLINK_LOWEXPER 156
275 #define IMPLINK_HIGHEXPER 158
278 #define s_addr S_un.S_addr
279 #define s_host S_un.S_un_b.s_b2
280 #define s_net S_un.S_un_b.s_b1
281 #define s_imp S_un.S_un_w.s_w2
282 #define s_impno S_un.S_un_b.s_b4
283 #define s_lh S_un.S_un_b.s_b3
285 { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
286 struct { u_short s_w1,s_w2; } S_un_w;
291 #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
292 #define IN_CLASSA_NET 0xFF000000
293 #define IN_CLASSA_NSHIFT 24
294 #define IN_CLASSA_HOST 0x00FFFFFF
295 #define IN_CLASSA_MAX 128
296 #define IN_CLASSB(i) (((long)(i) & 0xC0000000) == 0x80000000)
297 #define IN_CLASSB_NET 0xFFFF0000
298 #define IN_CLASSB_NSHIFT 16
299 #define IN_CLASSB_HOST 0x0000FFFF
300 #define IN_CLASSB_MAX 65536
301 #define IN_CLASSC(i) (((long)(i) & 0xE0000000) == 0xC0000000)
302 #define IN_CLASSC_NET 0xFFFFFF00
303 #define IN_CLASSC_NSHIFT 8
304 #define IN_CLASSC_HOST 0xFF
305 #define INADDR_ANY (u_long)(0)
306 #define INADDR_LOOPBACK 0x7F000001
307 #define INADDR_BROADCAST (u_long)(0xFFFFFFFF)
308 #define INADDR_NONE 0xFFFFFFFF
313 struct in_addr sin_addr;
317 #define WSADESCRIPTION_LEN 256
318 #define WSASYS_STATUS_LEN 128
324 char szDescription[WSADESCRIPTION_LEN+1];
325 char szSystemStatus[WSASYS_STATUS_LEN+1];
326 unsigned short iMaxSockets;
327 unsigned short iMaxUdpDg;
329 } WSADATA, *LPWSADATA;
331 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
335 #define SO_ACCEPTCONN 2
336 #define SO_REUSEADDR 4
337 #define SO_KEEPALIVE 8
338 #define SO_DONTROUTE 16
339 #define SO_BROADCAST 32
340 #define SO_USELOOPBACK 64
341 #define SO_LINGER 128
342 #define SO_OOBINLINE 256
344 #define SO_DONTLINGER (u_int)(~SO_LINGER)
345 #define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
347 #define SO_SNDBUF 0x1001
348 #define SO_RCVBUF 0x1002
349 #define SO_SNDLOWAT 0x1003
350 #define SO_RCVLOWAT 0x1004
351 #define SO_SNDTIMEO 0x1005
352 #define SO_RCVTIMEO 0x1006
353 #define SO_ERROR 0x1007
354 #define SO_TYPE 0x1008
356 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
358 #define INVALID_SOCKET (SOCKET)(~0)
359 #define SOCKET_ERROR (-1)
360 #define SOCK_STREAM 1
364 #define SOCK_SEQPACKET 5
365 #define TCP_NODELAY 0x0001
376 #define AF_OSI AF_ISO
386 #define AF_APPLETALK 16
387 #define AF_NETBIOS 17
388 #define AF_VOICEVIEW 18
389 #define AF_FIREFOX 19
390 #define AF_UNKNOWN1 20
395 #define AF_CLUSTER 24
400 #ifndef __INSIDE_MSYS__
409 /* Portable IPv6/IPv4 version of sockaddr. Based on RFC 2553.
410 * Pad to force 8 byte alignment and maximum size of 128 bytes.
412 * Desired design of maximum size and alignment
414 #define _SS_MAXSIZE 128
415 #define _SS_ALIGNSIZE sizeof(__int64)
417 /* Definitions used for sockaddr_storage structure padding.
419 #define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(short))
420 #define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof(short) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
422 struct sockaddr_storage
424 char __ss_pad1[_SS_PAD1SIZE]; /* pad to 8 */
425 __int64 __ss_align; /* force alignment */
426 char __ss_pad2[_SS_PAD2SIZE]; /* pad to 128 */
429 #endif /* !__INSIDE_MSYS__ */
436 #define PF_UNSPEC AF_UNSPEC
437 #define PF_UNIX AF_UNIX
438 #define PF_INET AF_INET
439 #define PF_IMPLINK AF_IMPLINK
440 #define PF_PUP AF_PUP
441 #define PF_CHAOS AF_CHAOS
443 #define PF_IPX AF_IPX
444 #define PF_ISO AF_ISO
445 #define PF_OSI AF_OSI
446 #define PF_ECMA AF_ECMA
447 #define PF_DATAKIT AF_DATAKIT
448 #define PF_CCITT AF_CCITT
449 #define PF_SNA AF_SNA
450 #define PF_DECnet AF_DECnet
451 #define PF_DLI AF_DLI
452 #define PF_LAT AF_LAT
453 #define PF_HYLINK AF_HYLINK
454 #define PF_APPLETALK AF_APPLETALK
455 #define PF_VOICEVIEW AF_VOICEVIEW
456 #define PF_FIREFOX AF_FIREFOX
457 #define PF_UNKNOWN1 AF_UNKNOWN1
458 #define PF_BAN AF_BAN
459 #define PF_ATM AF_ATM
460 #define PF_INET6 AF_INET6
461 #define PF_MAX AF_MAX
463 #define SOL_SOCKET 0xFFFF
465 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
467 #define SOMAXCONN 0x7FFFFFFF /* (5) in WinSock1.1 */
471 #define MSG_DONTROUTE 4
473 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
475 #define MSG_MAXIOVLEN 16
476 #define MSG_PARTIAL 0x8000
477 #define MAXGETHOSTSTRUCT 1024
479 #define FD_READ_BIT 0
480 #define FD_READ (1 << FD_READ_BIT)
481 #define FD_WRITE_BIT 1
482 #define FD_WRITE (1 << FD_WRITE_BIT)
484 #define FD_OOB (1 << FD_OOB_BIT)
485 #define FD_ACCEPT_BIT 3
486 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
487 #define FD_CONNECT_BIT 4
488 #define FD_CONNECT (1 << FD_CONNECT_BIT)
489 #define FD_CLOSE_BIT 5
490 #define FD_CLOSE (1 << FD_CLOSE_BIT)
491 /* WinSock v1.1 defines no further events, beyond FD_CLOSE (32);
492 * the following are specific to WinSock v2.
495 #define FD_QOS (1 << FD_QOS_BIT)
496 #define FD_GROUP_QOS_BIT 7
497 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
498 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
499 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
500 #define FD_ADDRESS_LIST_CHANGE_BIT 9
501 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
503 #define FD_MAX_EVENTS 10
504 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
507 /* FIXME: WinSock error codes are properly defined in <winerror.h>,
508 * whence we should include them selectively, rather than incurring
509 * the maintenance burden of duplicating them here.
511 #define WSABASEERR 10000
512 #define WSAEINTR (WSABASEERR + 4)
513 #define WSAEBADF (WSABASEERR + 9)
514 #define WSAEACCES (WSABASEERR + 13)
515 #define WSAEFAULT (WSABASEERR + 14)
516 #define WSAEINVAL (WSABASEERR + 22)
517 #define WSAEMFILE (WSABASEERR + 24)
518 #define WSAEWOULDBLOCK (WSABASEERR + 35)
519 #define WSAEINPROGRESS (WSABASEERR + 36) /* deprecated in WinSock v2 */
520 #define WSAEALREADY (WSABASEERR + 37)
521 #define WSAENOTSOCK (WSABASEERR + 38)
522 #define WSAEDESTADDRREQ (WSABASEERR + 39)
523 #define WSAEMSGSIZE (WSABASEERR + 40)
524 #define WSAEPROTOTYPE (WSABASEERR + 41)
525 #define WSAENOPROTOOPT (WSABASEERR + 42)
526 #define WSAEPROTONOSUPPORT (WSABASEERR + 43)
527 #define WSAESOCKTNOSUPPORT (WSABASEERR + 44)
528 #define WSAEOPNOTSUPP (WSABASEERR + 45)
529 #define WSAEPFNOSUPPORT (WSABASEERR + 46)
530 #define WSAEAFNOSUPPORT (WSABASEERR + 47)
531 #define WSAEADDRINUSE (WSABASEERR + 48)
532 #define WSAEADDRNOTAVAIL (WSABASEERR + 49)
533 #define WSAENETDOWN (WSABASEERR + 50)
534 #define WSAENETUNREACH (WSABASEERR + 51)
535 #define WSAENETRESET (WSABASEERR + 52)
536 #define WSAECONNABORTED (WSABASEERR + 53)
537 #define WSAECONNRESET (WSABASEERR + 54)
538 #define WSAENOBUFS (WSABASEERR + 55)
539 #define WSAEISCONN (WSABASEERR + 56)
540 #define WSAENOTCONN (WSABASEERR + 57)
541 #define WSAESHUTDOWN (WSABASEERR + 58)
542 #define WSAETOOMANYREFS (WSABASEERR + 59)
543 #define WSAETIMEDOUT (WSABASEERR + 60)
544 #define WSAECONNREFUSED (WSABASEERR + 61)
545 #define WSAELOOP (WSABASEERR + 62)
546 #define WSAENAMETOOLONG (WSABASEERR + 63)
547 #define WSAEHOSTDOWN (WSABASEERR + 64)
548 #define WSAEHOSTUNREACH (WSABASEERR + 65)
549 #define WSAENOTEMPTY (WSABASEERR + 66)
550 #define WSAEPROCLIM (WSABASEERR + 67)
551 #define WSAEUSERS (WSABASEERR + 68)
552 #define WSAEDQUOT (WSABASEERR + 69)
553 #define WSAESTALE (WSABASEERR + 70)
554 #define WSAEREMOTE (WSABASEERR + 71)
555 #define WSAEDISCON (WSABASEERR + 101)
556 #define WSASYSNOTREADY (WSABASEERR + 91)
557 #define WSAVERNOTSUPPORTED (WSABASEERR + 92)
558 #define WSANOTINITIALISED (WSABASEERR + 93)
559 #define WSAHOST_NOT_FOUND (WSABASEERR + 1001)
560 #define WSATRY_AGAIN (WSABASEERR + 1002)
561 #define WSANO_RECOVERY (WSABASEERR + 1003)
562 #define WSANO_DATA (WSABASEERR + 1004)
564 /* WinSock2 specific error codes */
565 #define WSAENOMORE (WSABASEERR + 102)
566 #define WSAECANCELLED (WSABASEERR + 103)
567 #define WSAEINVALIDPROCTABLE (WSABASEERR + 104)
568 #define WSAEINVALIDPROVIDER (WSABASEERR + 105)
569 #define WSAEPROVIDERFAILEDINIT (WSABASEERR + 106)
570 #define WSASYSCALLFAILURE (WSABASEERR + 107)
571 #define WSASERVICE_NOT_FOUND (WSABASEERR + 108)
572 #define WSATYPE_NOT_FOUND (WSABASEERR + 109)
573 #define WSA_E_NO_MORE (WSABASEERR + 110)
574 #define WSA_E_CANCELLED (WSABASEERR + 111)
575 #define WSAEREFUSED (WSABASEERR + 112)
577 /* WS QualityofService errors */
578 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
579 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
580 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
581 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
582 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
583 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
584 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
585 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
586 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
587 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
588 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
589 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
590 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
591 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
592 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
593 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
594 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
595 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
596 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
597 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
598 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
599 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
600 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
601 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
602 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
603 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
604 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
606 #endif /* ! WSABASEERR */
608 #define WSANO_ADDRESS WSANO_DATA
610 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
612 #define h_errno WSAGetLastError()
613 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
614 #define TRY_AGAIN WSATRY_AGAIN
615 #define NO_RECOVERY WSANO_RECOVERY
616 #define NO_DATA WSANO_DATA
617 #define NO_ADDRESS WSANO_ADDRESS
619 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
621 WINSOCK_API_LINKAGE SOCKET PASCAL accept (SOCKET, struct sockaddr *, int *);
623 WINSOCK_API_LINKAGE int PASCAL bind (SOCKET, const struct sockaddr *, int);
624 WINSOCK_API_LINKAGE int PASCAL closesocket (SOCKET);
625 WINSOCK_API_LINKAGE int PASCAL connect (SOCKET, const struct sockaddr *, int);
626 WINSOCK_API_LINKAGE int PASCAL ioctlsocket (SOCKET, long, u_long *);
627 WINSOCK_API_LINKAGE int PASCAL getpeername (SOCKET, struct sockaddr *, int *);
628 WINSOCK_API_LINKAGE int PASCAL getsockname (SOCKET, struct sockaddr *, int *);
629 WINSOCK_API_LINKAGE int PASCAL getsockopt (SOCKET, int, int, char *, int *);
631 WINSOCK_API_LINKAGE unsigned long PASCAL inet_addr (const char *);
633 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (char *) inet_ntoa (struct in_addr);
635 WINSOCK_API_LINKAGE int PASCAL listen (SOCKET, int);
636 WINSOCK_API_LINKAGE int PASCAL recv (SOCKET, char *, int, int);
637 WINSOCK_API_LINKAGE int PASCAL recvfrom (SOCKET, char *, int, int, struct sockaddr *, int *);
638 WINSOCK_API_LINKAGE int PASCAL send (SOCKET, const char *, int, int);
639 WINSOCK_API_LINKAGE int PASCAL sendto (SOCKET, const char *, int, int, const struct sockaddr *, int);
640 WINSOCK_API_LINKAGE int PASCAL setsockopt (SOCKET, int, int, const char *, int);
641 WINSOCK_API_LINKAGE int PASCAL shutdown (SOCKET, int);
643 WINSOCK_API_LINKAGE SOCKET PASCAL socket (int, int, int);
645 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct hostent *) gethostbyaddr (const char *, int, int);
646 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct hostent *) gethostbyname (const char *);
647 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct servent *) getservbyport (int, const char *);
648 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct servent *) getservbyname (const char *, const char *);
649 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct protoent *) getprotobynumber (int);
650 WINSOCK_API_LINKAGE DECLARE_STDCALL_P (struct protoent *) getprotobyname (const char *);
653 typedef SOCKET (PASCAL *LPFN_ACCEPT) (SOCKET, struct sockaddr *, int *);
655 typedef int (PASCAL *LPFN_BIND) (SOCKET, const struct sockaddr *, int);
656 typedef int (PASCAL *LPFN_CLOSESOCKET) (SOCKET);
657 typedef int (PASCAL *LPFN_CONNECT) (SOCKET, const struct sockaddr *, int);
658 typedef int (PASCAL *LPFN_IOCTLSOCKET) (SOCKET, long, u_long *);
659 typedef int (PASCAL *LPFN_GETPEERNAME) (SOCKET, struct sockaddr *, int *);
660 typedef int (PASCAL *LPFN_GETSOCKNAME) (SOCKET, struct sockaddr *, int *);
661 typedef int (PASCAL *LPFN_GETSOCKOPT) (SOCKET, int, int, char *, int *);
663 typedef u_long (PASCAL *LPFN_HTONL) (u_long);
664 typedef u_short (PASCAL *LPFN_HTONS) (u_short);
666 typedef unsigned long (PASCAL *LPFN_INET_ADDR) (const char *);
668 typedef char *(PASCAL *LPFN_INET_NTOA) (struct in_addr);
670 typedef int (PASCAL *LPFN_LISTEN) (SOCKET, int);
672 typedef u_long (PASCAL *LPFN_NTOHL) (u_long);
673 typedef u_short (PASCAL *LPFN_NTOHS) (u_short);
675 typedef int (PASCAL *LPFN_RECV) (SOCKET, char *, int, int);
676 typedef int (PASCAL *LPFN_RECVFROM) (SOCKET, char *, int, int, struct sockaddr *, int *);
677 typedef int (PASCAL *LPFN_SELECT) (int, fd_set *, fd_set *, fd_set *, const struct timeval *);
678 typedef int (PASCAL *LPFN_SEND) (SOCKET, const char *, int, int);
679 typedef int (PASCAL *LPFN_SENDTO) (SOCKET, const char *, int, int, const struct sockaddr *, int);
680 typedef int (PASCAL *LPFN_SETSOCKOPT) (SOCKET, int, int, const char *, int);
681 typedef int (PASCAL *LPFN_SHUTDOWN) (SOCKET, int);
683 typedef SOCKET (PASCAL *LPFN_SOCKET) (int, int, int);
685 typedef struct hostent *(PASCAL *LPFN_GETHOSTBYADDR) ( const char *, int, int);
686 typedef struct hostent *(PASCAL *LPFN_GETHOSTBYNAME) ( const char *);
688 typedef int (PASCAL *LPFN_GETHOSTNAME) (char *, int);
690 typedef struct servent *(PASCAL *LPFN_GETSERVBYPORT) (int, const char *);
691 typedef struct servent *(PASCAL *LPFN_GETSERVBYNAME) (const char *, const char *);
692 typedef struct protoent *(PASCAL *LPFN_GETPROTOBYNUMBER) (int);
693 typedef struct protoent *(PASCAL *LPFN_GETPROTOBYNAME) (const char *);
695 WINSOCK_API_LINKAGE int PASCAL WSAStartup (WORD, LPWSADATA);
696 WINSOCK_API_LINKAGE int PASCAL WSACleanup (void);
697 WINSOCK_API_LINKAGE void PASCAL WSASetLastError (int);
698 WINSOCK_API_LINKAGE int PASCAL WSAGetLastError (void);
700 WINSOCK_API_LINKAGE typedef int (PASCAL *LPFN_WSASTARTUP) (WORD, LPWSADATA);
701 typedef int (PASCAL *LPFN_WSACLEANUP) (void);
702 typedef int (PASCAL *LPFN_WSAGETLASTERROR) (void);
703 typedef void (PASCAL *LPFN_WSASETLASTERROR) (int);
705 /* Pseudo-blocking functions are deprecated in WinSock v2.
706 * Use threads instead of these!
708 WINSOCK_API_LINKAGE BOOL PASCAL WSAIsBlocking (void);
709 WINSOCK_API_LINKAGE int PASCAL WSAUnhookBlockingHook (void);
710 WINSOCK_API_LINKAGE FARPROC PASCAL WSASetBlockingHook (FARPROC);
711 WINSOCK_API_LINKAGE int PASCAL WSACancelBlockingCall (void);
713 typedef BOOL (PASCAL *LPFN_WSAISBLOCKING) (void);
714 typedef int (PASCAL *LPFN_WSAUNHOOKBLOCKINGHOOK) (void);
715 typedef FARPROC (PASCAL *LPFN_WSASETBLOCKINGHOOK) (FARPROC);
716 typedef int (PASCAL *LPFN_WSACANCELBLOCKINGCALL) (void);
718 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByName (HWND, u_int, const char *, const char *, char *, int);
719 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByPort (HWND, u_int, int, const char *, char *, int);
720 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByName (HWND, u_int, const char *, char *, int);
721 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByNumber (HWND, u_int, int, char *, int);
722 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByName (HWND, u_int, const char *, char *, int);
723 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByAddr (HWND, u_int, const char *, int, int, char *, int);
725 WINSOCK_API_LINKAGE int PASCAL WSACancelAsyncRequest (HANDLE);
726 WINSOCK_API_LINKAGE int PASCAL WSAAsyncSelect (SOCKET, HWND, u_int, long);
728 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETSERVBYNAME) (HWND, u_int, const char *, const char *, char *, int);
729 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETSERVBYPORT) (HWND, u_int, int, const char *, char *, int);
730 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETPROTOBYNAME) (HWND, u_int, const char*, char*, int);
731 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETPROTOBYNUMBER) (HWND, u_int, int, char*, int);
732 typedef HANDLE (PASCAL *LPFN_WSAASYNCGETHOSTBYADDR) (HWND, u_int, const char*, int, int, char*, int);
734 typedef int (PASCAL *LPFN_WSACANCELASYNCREQUEST) (HANDLE);
735 typedef int (PASCAL *LPFN_WSAASYNCSELECT) (SOCKET, HWND, u_int, long);
737 #if ! (defined __INSIDE_CYGWIN__ || defined __INSIDE_MSYS__)
739 WINSOCK_API_LINKAGE u_long PASCAL htonl (u_long);
740 WINSOCK_API_LINKAGE u_long PASCAL ntohl (u_long);
741 WINSOCK_API_LINKAGE u_short PASCAL htons (u_short);
742 WINSOCK_API_LINKAGE u_short PASCAL ntohs (u_short);
743 WINSOCK_API_LINKAGE int PASCAL select (int nfds, fd_set *, fd_set *, fd_set *, const struct timeval *);
745 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
747 int PASCAL gethostname (char *, int);
749 #define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
750 #define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
751 #define WSAGETASYNCBUFLEN(l) LOWORD(l)
752 #define WSAGETASYNCERROR(l) HIWORD(l)
753 #define WSAGETSELECTEVENT(l) LOWORD(l)
754 #define WSAGETSELECTERROR(l) HIWORD(l)
756 typedef struct sockaddr SOCKADDR, *PSOCKADDR, *LPSOCKADDR;
757 typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
758 typedef struct sockaddr_in SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN;
759 typedef struct linger LINGER, *PLINGER, *LPLINGER;
760 typedef struct in_addr IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
761 typedef struct fd_set FD_SET, *PFD_SET, *LPFD_SET;
762 typedef struct hostent HOSTENT, *PHOSTENT, *LPHOSTENT;
763 typedef struct servent SERVENT, *PSERVENT, *LPSERVENT;
764 typedef struct protoent PROTOENT, *PPROTOENT, *LPPROTOENT;
765 typedef struct timeval TIMEVAL, *PTIMEVAL, *LPTIMEVAL;
767 /* winsock2 additions */
768 #define ADDR_ANY INADDR_ANY
770 #define IN_CLASSD(i) (((long)(i) & 0xF0000000) == 0xE0000000)
771 #define IN_CLASSD_NET 0xF0000000
772 #define IN_CLASSD_NSHIFT 28
773 #define IN_CLASSD_HOST 0x0FFFFFFF
774 #define IN_MULTICAST(i) IN_CLASSD(i)
776 #define FROM_PROTOCOL_INFO (-1)
778 #define SO_GROUP_ID 0x2001
779 #define SO_GROUP_PRIORITY 0x2002
780 #define SO_MAX_MSG_SIZE 0x2003
782 #define SO_PROTOCOL_INFO __AW_SUFFIXED__(SO_PROTOCOL_INFO)
783 #define SO_PROTOCOL_INFOA 0x2004
784 #define SO_PROTOCOL_INFOW 0x2005
786 #define PVD_CONFIG 0x3001
788 #define MSG_INTERRUPT 0x10
790 #define WSAAPI WINAPI
791 #define WSAEVENT HANDLE
792 #define LPWSAEVENT LPHANDLE
793 #define WSAOVERLAPPED OVERLAPPED
795 typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
797 #define WSA_IO_PENDING (ERROR_IO_PENDING)
798 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
799 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
800 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
801 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
802 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
804 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
805 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
806 #define WSA_WAIT_FAILED ((DWORD)-1L)
807 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
808 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
809 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
810 #define WSA_INFINITE (INFINITE)
820 ControlledLoadService,
822 GuaranteedDelayService,
826 /* FIXME: FLOWSPEC and related definitions belong in qos.h */
828 /* Windows Sockets 2 Application Programming Interface,
829 * revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
830 * and the elements of _flowspec, but the type uint32 is not defined
831 * or used anywhere else in the w32api. For now, just use
832 * unsigned int, which is 32 bits on _WIN32 and _WIN64.
834 typedef unsigned int SERVICETYPE;
838 { unsigned int TokenRate;
839 unsigned int TokenBucketSize;
840 unsigned int PeakBandwidth;
841 unsigned int Latency;
842 unsigned int DelayVariation;
843 SERVICETYPE ServiceType;
844 unsigned int MaxSduSize;
845 unsigned int MinimumPolicedSize;
846 } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
849 struct _QualityOfService
850 { FLOWSPEC SendingFlowspec;
851 FLOWSPEC ReceivingFlowspec;
852 WSABUF ProviderSpecific;
855 #define CF_ACCEPT 0x0000
856 #define CF_REJECT 0x0001
857 #define CF_DEFER 0x0002
859 typedef unsigned int GROUP;
861 #define SG_UNCONSTRAINED_GROUP 0x01
862 #define SG_CONSTRAINED_GROUP 0x02
865 struct _WSANETWORKEVENTS
866 { long lNetworkEvents;
867 int iErrorCode[FD_MAX_EVENTS];
868 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
870 #define MAX_PROTOCOL_CHAIN 7
872 #define BASE_PROTOCOL 1
873 #define LAYERED_PROTOCOL 0
876 enum _WSAESETSERVICEOP
877 { RNRSERVICE_REGISTER = 0,
878 RNRSERVICE_DEREGISTER,
880 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
884 { INT iAddressFamily;
886 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
892 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
897 WSAECOMPARATOR ecHow;
898 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
900 #ifndef __CSADDR_T_DEFINED
901 /* FIXME: This content is also defined in <nspapi.h>; it should be
902 * factored out to a single shared location.
905 struct _SOCKET_ADDRESS
906 { LPSOCKADDR lpSockaddr;
908 } SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
912 { SOCKET_ADDRESS LocalAddr;
913 SOCKET_ADDRESS RemoteAddr;
916 } CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO;
918 #define __CSADDR_T_DEFINED
922 struct _SOCKET_ADDRESS_LIST
924 SOCKET_ADDRESS Address[1];
925 } SOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST;
927 #ifndef __BLOB_T_DEFINED
928 /* FIXME: This is also in <wtypes.h> and <nspapi.h>; once again,
929 * it should be similarly factored out.
935 } BLOB, *PBLOB, *LPBLOB;
937 #define __BLOB_T_DEFINED
943 LPSTR lpszServiceInstanceName;
944 LPGUID lpServiceClassId;
945 LPWSAVERSION lpVersion;
948 LPGUID lpNSProviderId;
950 DWORD dwNumberOfProtocols;
951 LPAFPROTOCOLS lpafpProtocols;
952 LPSTR lpszQueryString;
953 DWORD dwNumberOfCsAddrs;
954 LPCSADDR_INFO lpcsaBuffer;
957 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
962 LPWSTR lpszServiceInstanceName;
963 LPGUID lpServiceClassId;
964 LPWSAVERSION lpVersion;
967 LPGUID lpNSProviderId;
969 DWORD dwNumberOfProtocols;
970 LPAFPROTOCOLS lpafpProtocols;
971 LPWSTR lpszQueryString;
972 DWORD dwNumberOfCsAddrs;
973 LPCSADDR_INFO lpcsaBuffer;
976 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
978 typedef __AW_ALIAS__( WSAQUERYSET );
979 typedef __AW_ALIAS__( PWSAQUERYSET );
980 typedef __AW_ALIAS__( LPWSAQUERYSET );
982 #define LUP_DEEP 0x0001
983 #define LUP_CONTAINERS 0x0002
984 #define LUP_NOCONTAINERS 0x0004
985 #define LUP_NEAREST 0x0008
986 #define LUP_RETURN_NAME 0x0010
987 #define LUP_RETURN_TYPE 0x0020
988 #define LUP_RETURN_VERSION 0x0040
989 #define LUP_RETURN_COMMENT 0x0080
990 #define LUP_RETURN_ADDR 0x0100
991 #define LUP_RETURN_BLOB 0x0200
992 #define LUP_RETURN_ALIASES 0x0400
993 #define LUP_RETURN_QUERY_STRING 0x0800
994 #define LUP_RETURN_ALL 0x0FF0
995 #define LUP_RES_SERVICE 0x8000
996 #define LUP_FLUSHCACHE 0x1000
997 #define LUP_FLUSHPREVIOUS 0x2000
1000 struct _WSANSClassInfoA
1006 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
1009 struct _WSANSClassInfoW
1015 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
1017 typedef __AW_ALIAS__( WSANSCLASSINFO );
1018 typedef __AW_ALIAS__( PWSANSCLASSINFO );
1019 typedef __AW_ALIAS__( LPWSANSCLASSINFO );
1022 struct _WSAServiceClassInfoA
1023 { LPGUID lpServiceClassId;
1024 LPSTR lpszServiceClassName;
1026 LPWSANSCLASSINFOA lpClassInfos;
1027 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
1030 struct _WSAServiceClassInfoW
1031 { LPGUID lpServiceClassId;
1032 LPWSTR lpszServiceClassName;
1034 LPWSANSCLASSINFOW lpClassInfos;
1035 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
1037 typedef __AW_ALIAS__( WSASERVICECLASSINFO );
1038 typedef __AW_ALIAS__( PWSASERVICECLASSINFO );
1039 typedef __AW_ALIAS__( LPWSASERVICECLASSINFO );
1042 struct _WSANAMESPACE_INFOA
1043 { GUID NSProviderId;
1047 LPSTR lpszIdentifier;
1048 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
1051 struct _WSANAMESPACE_INFOW
1052 { GUID NSProviderId;
1056 LPWSTR lpszIdentifier;
1057 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
1059 typedef __AW_ALIAS__( WSANAMESPACE_INFO );
1060 typedef __AW_ALIAS__( PWSANAMESPACE_INFO );
1061 typedef __AW_ALIAS__( LPWSANAMESPACE_INFO );
1064 struct _WSAPROTOCOLCHAIN
1066 DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
1067 } WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
1069 #define WSAPROTOCOL_LEN 255
1072 struct _WSAPROTOCOL_INFOA
1073 { DWORD dwServiceFlags1;
1074 DWORD dwServiceFlags2;
1075 DWORD dwServiceFlags3;
1076 DWORD dwServiceFlags4;
1077 DWORD dwProviderFlags;
1079 DWORD dwCatalogEntryId;
1080 WSAPROTOCOLCHAIN ProtocolChain;
1087 int iProtocolMaxOffset;
1088 int iNetworkByteOrder;
1089 int iSecurityScheme;
1090 DWORD dwMessageSize;
1091 DWORD dwProviderReserved;
1092 CHAR szProtocol[WSAPROTOCOL_LEN+1];
1093 } WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
1096 struct _WSAPROTOCOL_INFOW
1097 { DWORD dwServiceFlags1;
1098 DWORD dwServiceFlags2;
1099 DWORD dwServiceFlags3;
1100 DWORD dwServiceFlags4;
1101 DWORD dwProviderFlags;
1103 DWORD dwCatalogEntryId;
1104 WSAPROTOCOLCHAIN ProtocolChain;
1111 int iProtocolMaxOffset;
1112 int iNetworkByteOrder;
1113 int iSecurityScheme;
1114 DWORD dwMessageSize;
1115 DWORD dwProviderReserved;
1116 WCHAR szProtocol[WSAPROTOCOL_LEN+1];
1117 } WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
1119 typedef __AW_ALIAS__( WSAPROTOCOL_INFO );
1120 typedef __AW_ALIAS__( LPWSAPROTOCOL_INFO );
1122 typedef int (CALLBACK *LPCONDITIONPROC) (LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
1123 typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
1125 /* Needed for XP & .NET Server function WSANSPIoctl. */
1128 enum _WSACOMPLETIONTYPE
1129 { NSP_NOTIFY_IMMEDIATELY = 0,
1134 } WSACOMPLETIONTYPE, *PWSACOMPLETIONTYPE, *LPWSACOMPLETIONTYPE;
1137 struct _WSACOMPLETION
1138 { WSACOMPLETIONTYPE Type;
1146 { LPWSAOVERLAPPED lpOverlapped;
1149 { LPWSAOVERLAPPED lpOverlapped;
1150 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
1153 { LPWSAOVERLAPPED lpOverlapped;
1158 } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
1160 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
1161 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
1162 #define PFL_HIDDEN 0x00000004
1163 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
1164 #define XP1_CONNECTIONLESS 0x00000001
1165 #define XP1_GUARANTEED_DELIVERY 0x00000002
1166 #define XP1_GUARANTEED_ORDER 0x00000004
1167 #define XP1_MESSAGE_ORIENTED 0x00000008
1168 #define XP1_PSEUDO_STREAM 0x00000010
1169 #define XP1_GRACEFUL_CLOSE 0x00000020
1170 #define XP1_EXPEDITED_DATA 0x00000040
1171 #define XP1_CONNECT_DATA 0x00000080
1172 #define XP1_DISCONNECT_DATA 0x00000100
1173 #define XP1_SUPPORT_BROADCAST 0x00000200
1174 #define XP1_SUPPORT_MULTIPOINT 0x00000400
1175 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
1176 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000
1177 #define XP1_QOS_SUPPORTED 0x00002000
1178 #define XP1_INTERRUPT 0x00004000
1179 #define XP1_UNI_SEND 0x00008000
1180 #define XP1_UNI_RECV 0x00010000
1181 #define XP1_IFS_HANDLES 0x00020000
1182 #define XP1_PARTIAL_MESSAGE 0x00040000
1184 #define BIGENDIAN 0x0000
1185 #define LITTLEENDIAN 0x0001
1187 #define SECURITY_PROTOCOL_NONE 0x0000
1188 #define JL_SENDER_ONLY 0x01
1189 #define JL_RECEIVER_ONLY 0x02
1190 #define JL_BOTH 0x04
1191 #define WSA_FLAG_OVERLAPPED 0x01
1192 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
1193 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
1194 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
1195 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
1196 #define IOC_UNIX 0x00000000
1197 #define IOC_WS2 0x08000000
1198 #define IOC_PROTOCOL 0x10000000
1199 #define IOC_VENDOR 0x18000000
1201 #define _WSAIO(x,y) (IOC_VOID|(x)|(y))
1202 #define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
1203 #define _WSAIOW(x,y) (IOC_IN|(x)|(y))
1204 #define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
1206 #define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
1207 #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
1208 #define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
1209 #define SIO_FLUSH _WSAIO(IOC_WS2,4)
1210 #define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
1211 #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
1212 #define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
1213 #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
1214 #define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
1215 #define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
1216 #define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
1217 #define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
1218 #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
1219 #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
1220 #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
1221 #define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22)
1222 #define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23)
1223 #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
1224 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
1225 #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
1227 #define TH_NETDEV 0x00000001
1228 #define TH_TAPI 0x00000002
1230 WINSOCK_API_LINKAGE SOCKET WINAPI WSAAccept (SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1232 #define WSAAddressToString __AW_SUFFIXED__(WSAAddressToString)
1233 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringA (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1234 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringW (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1236 WINSOCK_API_LINKAGE BOOL WINAPI WSACloseEvent (WSAEVENT);
1237 WINSOCK_API_LINKAGE int WINAPI WSAConnect (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1238 WINSOCK_API_LINKAGE WSAEVENT WINAPI WSACreateEvent (void);
1240 #define WSADuplicateSocket __AW_SUFFIXED__(WSADuplicateSocket)
1241 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketA (SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1242 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketW (SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1244 #define WSAEnumNameSpaceProviders __AW_SUFFIXED__(WSAEnumNameSpaceProviders)
1245 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersA (LPDWORD, LPWSANAMESPACE_INFOA);
1246 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersW (LPDWORD, LPWSANAMESPACE_INFOW);
1248 WINSOCK_API_LINKAGE int WINAPI WSAEnumNetworkEvents (SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1250 #define WSAEnumProtocols __AW_SUFFIXED__(WSAEnumProtocols)
1251 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsA (LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1252 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsW (LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1254 WINSOCK_API_LINKAGE int WINAPI WSAEventSelect (SOCKET, WSAEVENT, long);
1255 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetOverlappedResult (SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1256 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetQOSByName (SOCKET, LPWSABUF, LPQOS);
1258 #define WSAGetServiceClassInfo __AW_SUFFIXED__(WSAGetServiceClassInfo)
1259 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoA (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1260 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoW (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1262 #define WSAGetServiceClassNameByClassId __AW_SUFFIXED__(WSAGetServiceClassNameByClassId)
1263 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdA (LPGUID, LPSTR, LPDWORD);
1264 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdW (LPGUID, LPWSTR, LPDWORD);
1266 WINSOCK_API_LINKAGE int WINAPI WSAHtonl (SOCKET, unsigned long, unsigned long *);
1267 WINSOCK_API_LINKAGE int WINAPI WSAHtons (SOCKET, unsigned short, unsigned short *);
1269 #define WSAInstallServiceClass __AW_SUFFIXED__(WSAInstallServiceClass)
1270 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassA (LPWSASERVICECLASSINFOA);
1271 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassW (LPWSASERVICECLASSINFOW);
1273 WINSOCK_API_LINKAGE int WINAPI WSAIoctl (SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1274 WINSOCK_API_LINKAGE SOCKET WINAPI WSAJoinLeaf (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1276 #define WSALookupServiceBegin __AW_SUFFIXED__(WSALookupServiceBegin)
1277 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginA (LPWSAQUERYSETA, DWORD, LPHANDLE);
1278 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginW (LPWSAQUERYSETW, DWORD, LPHANDLE);
1280 #define WSALookupServiceNext __AW_SUFFIXED__(WSALookupServiceNext)
1281 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextA (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1282 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextW (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1284 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceEnd (HANDLE);
1285 WINSOCK_API_LINKAGE int WINAPI WSANSPIoctl (HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION); /* XP or .NET Server */
1286 WINSOCK_API_LINKAGE int WINAPI WSANtohl (SOCKET, unsigned long, unsigned long *);
1287 WINSOCK_API_LINKAGE int WINAPI WSANtohs (SOCKET, unsigned short, unsigned short *);
1288 WINSOCK_API_LINKAGE int WINAPI WSARecv (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1289 WINSOCK_API_LINKAGE int WINAPI WSARecvDisconnect (SOCKET, LPWSABUF);
1290 WINSOCK_API_LINKAGE int WINAPI WSARecvFrom (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1291 WINSOCK_API_LINKAGE INT WINAPI WSARemoveServiceClass (LPGUID);
1292 WINSOCK_API_LINKAGE BOOL WINAPI WSAResetEvent (WSAEVENT);
1293 WINSOCK_API_LINKAGE int WINAPI WSASend (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1294 WINSOCK_API_LINKAGE int WINAPI WSASendDisconnect (SOCKET, LPWSABUF);
1295 WINSOCK_API_LINKAGE int WINAPI WSASendTo (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1296 WINSOCK_API_LINKAGE BOOL WINAPI WSASetEvent (WSAEVENT);
1298 #define WSASetService __AW_SUFFIXED__(WSASetService)
1299 WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA (LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1300 WINSOCK_API_LINKAGE INT WINAPI WSASetServiceW (LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1302 #define WSASocket __AW_SUFFIXED__(WSASocket)
1303 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketA (int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1304 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketW (int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1306 #define WSAStringToAddress __AW_SUFFIXED__(WSAStringToAddress)
1307 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressA (LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1308 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressW (LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1310 WINSOCK_API_LINKAGE DWORD WINAPI WSAWaitForMultipleEvents (DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1312 typedef SOCKET (WINAPI *LPFN_WSAACCEPT) (SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1314 #define LPFN_WSAADDRESSTOSTRING __AW_SUFFIXED__(LPFN_WSAADDRESSTOSTRING)
1315 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA) (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1316 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW) (LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1318 typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT) (WSAEVENT);
1319 typedef int (WINAPI *LPFN_WSACONNECT) (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1320 typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT) (void);
1322 #define LPFN_WSADUPLICATESOCKET __AW_SUFFIXED__(LPFN_WSADUPLICATESOCKET)
1323 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA) (SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1324 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW) (SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1326 #define LPFN_WSAENUMNAMESPACEPROVIDERS __AW_SUFFIXED__(LPFN_WSAENUMNAMESPACEPROVIDERS)
1327 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA) (LPDWORD, LPWSANAMESPACE_INFOA);
1328 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW) (LPDWORD, LPWSANAMESPACE_INFOW);
1330 typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS) (SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1332 #define LPFN_WSAENUMPROTOCOLS __AW_SUFFIXED__(LPFN_WSAENUMPROTOCOLS)
1333 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA) (LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1334 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW) (LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1336 typedef int (WINAPI *LPFN_WSAEVENTSELECT) (SOCKET, WSAEVENT, long);
1337 typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT) (SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1338 typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME) (SOCKET, LPWSABUF, LPQOS);
1340 #define LPFN_WSAGETSERVICECLASSINFO __AW_SUFFIXED__(LPFN_WSAGETSERVICECLASSINFO)
1341 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA) (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1342 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW) (LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1344 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID __AW_SUFFIXED__(LPFN_WSAGETSERVICECLASSNAMEBYCLASSID)
1345 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA) (LPGUID, LPSTR, LPDWORD);
1346 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW) (LPGUID, LPWSTR, LPDWORD);
1348 typedef int (WINAPI *LPFN_WSAHTONL) (SOCKET, unsigned long, unsigned long *);
1349 typedef int (WINAPI *LPFN_WSAHTONS) (SOCKET, unsigned short, unsigned short *);
1351 #define LPFN_WSAINSTALLSERVICECLASS __AW_SUFFIXED__(LPFN_WSAINSTALLSERVICECLASS)
1352 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA) (LPWSASERVICECLASSINFOA);
1353 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW) (LPWSASERVICECLASSINFOW);
1355 typedef int (WINAPI *LPFN_WSAIOCTL) (SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1356 typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF) (SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1358 #define LPFN_WSALOOKUPSERVICEBEGIN __AW_SUFFIXED__(LPFN_WSALOOKUPSERVICEBEGIN)
1359 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA) (LPWSAQUERYSETA, DWORD, LPHANDLE);
1360 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW) (LPWSAQUERYSETW, DWORD, LPHANDLE);
1362 #define LPFN_WSALOOKUPSERVICENEXT __AW_SUFFIXED__(LPFN_WSALOOKUPSERVICENEXT)
1363 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA) (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1364 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW) (HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1366 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND) (HANDLE);
1367 typedef int (WINAPI *LPFN_WSANSPIoctl) (HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION);
1368 typedef int (WINAPI *LPFN_WSANTOHL) (SOCKET, unsigned long, unsigned long *);
1369 typedef int (WINAPI *LPFN_WSANTOHS) (SOCKET, unsigned short, unsigned short *);
1370 typedef int (WINAPI *LPFN_WSARECV) (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1371 typedef int (WINAPI *LPFN_WSARECVDISCONNECT) (SOCKET, LPWSABUF);
1372 typedef int (WINAPI *LPFN_WSARECVFROM) (SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1373 typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS) (LPGUID);
1374 typedef BOOL (WINAPI *LPFN_WSARESETEVENT) (WSAEVENT);
1375 typedef int (WINAPI *LPFN_WSASEND) (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1376 typedef int (WINAPI *LPFN_WSASENDDISCONNECT) (SOCKET, LPWSABUF);
1377 typedef int (WINAPI *LPFN_WSASENDTO) (SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1378 typedef BOOL (WINAPI *LPFN_WSASETEVENT) (WSAEVENT);
1380 #define LPFN_WSASETSERVICE __AW_SUFFIXED__(LPFN_WSASETSERVICE)
1381 typedef INT (WINAPI *LPFN_WSASETSERVICEA) (LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1382 typedef INT (WINAPI *LPFN_WSASETSERVICEW) (LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1384 #define LPFN_WSASOCKET __AW_SUFFIXED__(LPFN_WSASOCKET)
1385 typedef SOCKET (WINAPI *LPFN_WSASOCKETA) (int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1386 typedef SOCKET (WINAPI *LPFN_WSASOCKETW) (int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1388 #define LPFN_WSASTRINGTOADDRESS __AW_SUFFIXED__(LPFN_WSASTRINGTOADDRESS)
1389 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA) (LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1390 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW) (LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1392 typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS) (DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1396 #endif /* _WINSOCK2_H: $RCSfile$: end of file */