3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 Definitions for winsock 2
28 Contributed by the WINE project.
30 Portions Copyright (c) 1980, 1983, 1988, 1993
31 The Regents of the University of California. All rights reserved.
33 Portions Copyright (c) 1993 by Digital Equipment Corporation.
36 #if !(defined _WINSOCK2_H || defined _WINSOCK_H)
38 #define _WINSOCK_H /* to prevent later inclusion of winsock.h */
39 #pragma GCC system_header
41 #define _GNU_H_WINDOWS32_SOCKETS
45 #ifndef WINSOCK_API_LINKAGE
46 #ifdef __W32API_USE_DLLIMPORT__
47 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
49 #define WINSOCK_API_LINKAGE
56 /* Names common to Winsock1.1 and Winsock2 */
57 #if !defined ( _BSDTYPES_DEFINED )
58 /* also defined in gmon.h and in cygwin's sys/types */
59 typedef unsigned char u_char;
60 typedef unsigned short u_short;
61 typedef unsigned int u_int;
62 typedef unsigned long u_long;
63 #define _BSDTYPES_DEFINED
64 #endif /* ! def _BSDTYPES_DEFINED */
70 /* shutdown() how types */
71 #define SD_RECEIVE 0x00
75 #ifndef _SYS_TYPES_FD_SET
76 /* fd_set may be defined by the newlib <sys/types.h>
77 * if __USE_W32_SOCKETS not defined.
82 typedef struct fd_set {
84 SOCKET fd_array[FD_SETSIZE];
86 int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
88 #define FD_CLR(fd,set) do { u_int __i;\
89 for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
90 if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
91 while (__i < ((fd_set *)(set))->fd_count-1) {\
92 ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\
95 ((fd_set*)(set))->fd_count--;\
102 /* this differs from the define in winsock.h and in cygwin sys/types.h */
103 #define FD_SET(fd, set) do { u_int __i;\
104 for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
105 if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
109 if (__i == ((fd_set *)(set))->fd_count) {\
110 if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\
111 ((fd_set *)(set))->fd_array[__i] = (fd);\
112 ((fd_set *)(set))->fd_count++;\
118 #define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
121 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
123 #elif !defined (USE_SYS_TYPES_FD_SET)
124 #warning "fd_set and associated macros have been defined in sys/types. \
125 This may cause runtime problems with W32 sockets"
126 #endif /* ndef _SYS_TYPES_FD_SET */
127 #if !(defined (__INSIDE_CYGWIN__) || (__INSIDE_MSYS__))
128 #ifndef _TIMEVAL_DEFINED /* also in sys/time.h */
129 #define _TIMEVAL_DEFINED
134 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
135 #define timercmp(tvp, uvp, cmp) \
136 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
137 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
138 ((tvp)->tv_usec cmp (uvp)->tv_usec))
139 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
140 #endif /* _TIMEVAL_DEFINED */
147 #define h_addr h_addr_list[0]
153 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
154 #define IOCPARM_MASK 0x7f
155 #define IOC_VOID 0x20000000
156 #define IOC_OUT 0x40000000
157 #define IOC_IN 0x80000000
158 #define IOC_INOUT (IOC_IN|IOC_OUT)
160 #if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
161 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
162 #define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
163 #define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
164 #define FIONBIO _IOW('f', 126, u_long)
165 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
167 #define FIONREAD _IOR('f', 127, u_long)
168 #define FIOASYNC _IOW('f', 125, u_long)
169 #define SIOCSHIWAT _IOW('s', 0, u_long)
170 #define SIOCGHIWAT _IOR('s', 1, u_long)
171 #define SIOCSLOWAT _IOW('s', 2, u_long)
172 #define SIOCGLOWAT _IOR('s', 3, u_long)
173 #define SIOCATMARK _IOR('s', 7, u_long)
175 #if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
193 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
196 #define IPPROTO_ICMP 1
197 #define IPPROTO_IGMP 2
198 #define IPPROTO_GGP 3
199 #define IPPROTO_TCP 6
200 #define IPPROTO_PUP 12
201 #define IPPROTO_UDP 17
202 #define IPPROTO_IDP 22
203 #define IPPROTO_ND 77
204 #define IPPROTO_RAW 255
205 #define IPPROTO_MAX 256
207 #define IPPROTO_HOPOPTS 0 /* IPv6 Hop-by-Hop options */
208 #define IPPROTO_IPV6 41 /* IPv6 header */
209 #define IPPROTO_ROUTING 43 /* IPv6 Routing header */
210 #define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
211 #define IPPROTO_ESP 50 /* encapsulating security payload */
212 #define IPPROTO_AH 51 /* authentication header */
213 #define IPPROTO_ICMPV6 58 /* ICMPv6 */
214 #define IPPROTO_NONE 59 /* IPv6 no next header */
215 #define IPPROTO_DSTOPTS 60 /* IPv6 Destination options */
216 #define IPPORT_ECHO 7
217 #define IPPORT_DISCARD 9
218 #define IPPORT_SYSTAT 11
219 #define IPPORT_DAYTIME 13
220 #define IPPORT_NETSTAT 15
221 #define IPPORT_FTP 21
222 #define IPPORT_TELNET 23
223 #define IPPORT_SMTP 25
224 #define IPPORT_TIMESERVER 37
225 #define IPPORT_NAMESERVER 42
226 #define IPPORT_WHOIS 43
227 #define IPPORT_MTP 57
228 #define IPPORT_TFTP 69
229 #define IPPORT_RJE 77
230 #define IPPORT_FINGER 79
231 #define IPPORT_TTYLINK 87
232 #define IPPORT_SUPDUP 95
233 #define IPPORT_EXECSERVER 512
234 #define IPPORT_LOGINSERVER 513
235 #define IPPORT_CMDSERVER 514
236 #define IPPORT_EFSSERVER 520
237 #define IPPORT_BIFFUDP 512
238 #define IPPORT_WHOSERVER 513
239 #define IPPORT_ROUTESERVER 520
240 #define IPPORT_RESERVED 1024
241 #define IMPLINK_IP 155
242 #define IMPLINK_LOWEXPER 156
243 #define IMPLINK_HIGHEXPER 158
246 struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
247 struct { u_short s_w1,s_w2; } S_un_w;
250 #define s_addr S_un.S_addr
251 #define s_host S_un.S_un_b.s_b2
252 #define s_net S_un.S_un_b.s_b1
253 #define s_imp S_un.S_un_w.s_w2
254 #define s_impno S_un.S_un_b.s_b4
255 #define s_lh S_un.S_un_b.s_b3
257 #define IN_CLASSA(i) (((long)(i)&0x80000000) == 0)
258 #define IN_CLASSA_NET 0xff000000
259 #define IN_CLASSA_NSHIFT 24
260 #define IN_CLASSA_HOST 0x00ffffff
261 #define IN_CLASSA_MAX 128
262 #define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000)
263 #define IN_CLASSB_NET 0xffff0000
264 #define IN_CLASSB_NSHIFT 16
265 #define IN_CLASSB_HOST 0x0000ffff
266 #define IN_CLASSB_MAX 65536
267 #define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000)
268 #define IN_CLASSC_NET 0xffffff00
269 #define IN_CLASSC_NSHIFT 8
270 #define IN_CLASSC_HOST 0xff
271 #define INADDR_ANY (u_long)0
272 #define INADDR_LOOPBACK 0x7f000001
273 #define INADDR_BROADCAST (u_long)0xffffffff
274 #define INADDR_NONE 0xffffffff
278 struct in_addr sin_addr;
281 #define WSADESCRIPTION_LEN 256
282 #define WSASYS_STATUS_LEN 128
283 typedef struct WSAData {
286 char szDescription[WSADESCRIPTION_LEN+1];
287 char szSystemStatus[WSASYS_STATUS_LEN+1];
288 unsigned short iMaxSockets;
289 unsigned short iMaxUdpDg;
292 typedef WSADATA *LPWSADATA;
294 #if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
297 #define SO_ACCEPTCONN 2
298 #define SO_REUSEADDR 4
299 #define SO_KEEPALIVE 8
300 #define SO_DONTROUTE 16
301 #define SO_BROADCAST 32
302 #define SO_USELOOPBACK 64
303 #define SO_LINGER 128
304 #define SO_OOBINLINE 256
305 #define SO_DONTLINGER (u_int)(~SO_LINGER)
306 #define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
307 #define SO_SNDBUF 0x1001
308 #define SO_RCVBUF 0x1002
309 #define SO_SNDLOWAT 0x1003
310 #define SO_RCVLOWAT 0x1004
311 #define SO_SNDTIMEO 0x1005
312 #define SO_RCVTIMEO 0x1006
313 #define SO_ERROR 0x1007
314 #define SO_TYPE 0x1008
315 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
317 #define INVALID_SOCKET (SOCKET)(~0)
318 #define SOCKET_ERROR (-1)
319 #define SOCK_STREAM 1
323 #define SOCK_SEQPACKET 5
324 #define TCP_NODELAY 0x0001
334 #define AF_OSI AF_ISO
343 #define AF_APPLETALK 16
344 #define AF_NETBIOS 17
345 #define AF_VOICEVIEW 18
346 #define AF_FIREFOX 19
347 #define AF_UNKNOWN1 20
351 #define AF_CLUSTER 24
355 #ifndef __INSIDE_MSYS__
362 /* Portable IPv6/IPv4 version of sockaddr. Based on RFC 2553.
363 Pad to force 8 byte alignment and maximum size of 128 bytes. */
366 * Desired design of maximum size and alignment
368 #define _SS_MAXSIZE 128
369 #define _SS_ALIGNSIZE (sizeof (__int64))
371 * Definitions used for sockaddr_storage structure paddings design.
373 #define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
374 #define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) \
377 struct sockaddr_storage {
379 char __ss_pad1[_SS_PAD1SIZE]; /* pad to 8 */
380 __int64 __ss_align; /* force alignment */
381 char __ss_pad2[_SS_PAD2SIZE]; /* pad to 128 */
383 #endif /* !__INSIDE_MSYS__ */
389 #define PF_UNSPEC AF_UNSPEC
390 #define PF_UNIX AF_UNIX
391 #define PF_INET AF_INET
392 #define PF_IMPLINK AF_IMPLINK
393 #define PF_PUP AF_PUP
394 #define PF_CHAOS AF_CHAOS
396 #define PF_IPX AF_IPX
397 #define PF_ISO AF_ISO
398 #define PF_OSI AF_OSI
399 #define PF_ECMA AF_ECMA
400 #define PF_DATAKIT AF_DATAKIT
401 #define PF_CCITT AF_CCITT
402 #define PF_SNA AF_SNA
403 #define PF_DECnet AF_DECnet
404 #define PF_DLI AF_DLI
405 #define PF_LAT AF_LAT
406 #define PF_HYLINK AF_HYLINK
407 #define PF_APPLETALK AF_APPLETALK
408 #define PF_VOICEVIEW AF_VOICEVIEW
409 #define PF_FIREFOX AF_FIREFOX
410 #define PF_UNKNOWN1 AF_UNKNOWN1
411 #define PF_BAN AF_BAN
412 #define PF_ATM AF_ATM
413 #define PF_INET6 AF_INET6
414 #define PF_MAX AF_MAX
415 #define SOL_SOCKET 0xffff
416 #if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
417 #define SOMAXCONN 0x7fffffff /* (5) in WinSock1.1 */
420 #define MSG_DONTROUTE 4
421 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
422 #define MSG_MAXIOVLEN 16
423 #define MSG_PARTIAL 0x8000
424 #define MAXGETHOSTSTRUCT 1024
426 #define FD_READ_BIT 0
427 #define FD_READ (1 << FD_READ_BIT)
428 #define FD_WRITE_BIT 1
429 #define FD_WRITE (1 << FD_WRITE_BIT)
431 #define FD_OOB (1 << FD_OOB_BIT)
432 #define FD_ACCEPT_BIT 3
433 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
434 #define FD_CONNECT_BIT 4
435 #define FD_CONNECT (1 << FD_CONNECT_BIT)
436 #define FD_CLOSE_BIT 5
437 #define FD_CLOSE (1 << FD_CLOSE_BIT)
438 /* winsock1.1 defines stop at FD_CLOSE (32) */
440 #define FD_QOS (1 << FD_QOS_BIT)
441 #define FD_GROUP_QOS_BIT 7
442 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
443 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
444 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
445 #define FD_ADDRESS_LIST_CHANGE_BIT 9
446 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
447 #define FD_MAX_EVENTS 10
448 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
451 #define WSABASEERR 10000
452 #define WSAEINTR (WSABASEERR+4)
453 #define WSAEBADF (WSABASEERR+9)
454 #define WSAEACCES (WSABASEERR+13)
455 #define WSAEFAULT (WSABASEERR+14)
456 #define WSAEINVAL (WSABASEERR+22)
457 #define WSAEMFILE (WSABASEERR+24)
458 #define WSAEWOULDBLOCK (WSABASEERR+35)
459 #define WSAEINPROGRESS (WSABASEERR+36) /* deprecated on WinSock2 */
460 #define WSAEALREADY (WSABASEERR+37)
461 #define WSAENOTSOCK (WSABASEERR+38)
462 #define WSAEDESTADDRREQ (WSABASEERR+39)
463 #define WSAEMSGSIZE (WSABASEERR+40)
464 #define WSAEPROTOTYPE (WSABASEERR+41)
465 #define WSAENOPROTOOPT (WSABASEERR+42)
466 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
467 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
468 #define WSAEOPNOTSUPP (WSABASEERR+45)
469 #define WSAEPFNOSUPPORT (WSABASEERR+46)
470 #define WSAEAFNOSUPPORT (WSABASEERR+47)
471 #define WSAEADDRINUSE (WSABASEERR+48)
472 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
473 #define WSAENETDOWN (WSABASEERR+50)
474 #define WSAENETUNREACH (WSABASEERR+51)
475 #define WSAENETRESET (WSABASEERR+52)
476 #define WSAECONNABORTED (WSABASEERR+53)
477 #define WSAECONNRESET (WSABASEERR+54)
478 #define WSAENOBUFS (WSABASEERR+55)
479 #define WSAEISCONN (WSABASEERR+56)
480 #define WSAENOTCONN (WSABASEERR+57)
481 #define WSAESHUTDOWN (WSABASEERR+58)
482 #define WSAETOOMANYREFS (WSABASEERR+59)
483 #define WSAETIMEDOUT (WSABASEERR+60)
484 #define WSAECONNREFUSED (WSABASEERR+61)
485 #define WSAELOOP (WSABASEERR+62)
486 #define WSAENAMETOOLONG (WSABASEERR+63)
487 #define WSAEHOSTDOWN (WSABASEERR+64)
488 #define WSAEHOSTUNREACH (WSABASEERR+65)
489 #define WSAENOTEMPTY (WSABASEERR+66)
490 #define WSAEPROCLIM (WSABASEERR+67)
491 #define WSAEUSERS (WSABASEERR+68)
492 #define WSAEDQUOT (WSABASEERR+69)
493 #define WSAESTALE (WSABASEERR+70)
494 #define WSAEREMOTE (WSABASEERR+71)
495 #define WSAEDISCON (WSABASEERR+101)
496 #define WSASYSNOTREADY (WSABASEERR+91)
497 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
498 #define WSANOTINITIALISED (WSABASEERR+93)
499 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
500 #define WSATRY_AGAIN (WSABASEERR+1002)
501 #define WSANO_RECOVERY (WSABASEERR+1003)
502 #define WSANO_DATA (WSABASEERR+1004)
504 /* WinSock2 specific error codes */
505 #define WSAENOMORE (WSABASEERR+102)
506 #define WSAECANCELLED (WSABASEERR+103)
507 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
508 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
509 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
510 #define WSASYSCALLFAILURE (WSABASEERR+107)
511 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
512 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
513 #define WSA_E_NO_MORE (WSABASEERR+110)
514 #define WSA_E_CANCELLED (WSABASEERR+111)
515 #define WSAEREFUSED (WSABASEERR+112)
517 /* WS QualityofService errors */
518 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
519 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
520 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
521 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
522 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
523 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
524 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
525 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
526 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
527 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
528 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
529 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
530 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
531 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
532 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
533 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
534 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
535 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
536 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
537 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
538 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
539 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
540 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
541 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
542 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
543 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
544 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
546 #endif /* !WSABASEERR */
548 #define WSANO_ADDRESS WSANO_DATA
549 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
550 #define h_errno WSAGetLastError()
551 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
552 #define TRY_AGAIN WSATRY_AGAIN
553 #define NO_RECOVERY WSANO_RECOVERY
554 #define NO_DATA WSANO_DATA
555 #define NO_ADDRESS WSANO_ADDRESS
556 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
557 WINSOCK_API_LINKAGE SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
558 WINSOCK_API_LINKAGE int PASCAL bind(SOCKET,const struct sockaddr*,int);
559 WINSOCK_API_LINKAGE int PASCAL closesocket(SOCKET);
560 WINSOCK_API_LINKAGE int PASCAL connect(SOCKET,const struct sockaddr*,int);
561 WINSOCK_API_LINKAGE int PASCAL ioctlsocket(SOCKET,long,u_long *);
562 WINSOCK_API_LINKAGE int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
563 WINSOCK_API_LINKAGE int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
564 WINSOCK_API_LINKAGE int PASCAL getsockopt(SOCKET,int,int,char*,int*);
565 WINSOCK_API_LINKAGE unsigned long PASCAL inet_addr(const char*);
566 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
567 WINSOCK_API_LINKAGE int PASCAL listen(SOCKET,int);
568 WINSOCK_API_LINKAGE int PASCAL recv(SOCKET,char*,int,int);
569 WINSOCK_API_LINKAGE int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
570 WINSOCK_API_LINKAGE int PASCAL send(SOCKET,const char*,int,int);
571 WINSOCK_API_LINKAGE int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
572 WINSOCK_API_LINKAGE int PASCAL setsockopt(SOCKET,int,int,const char*,int);
573 WINSOCK_API_LINKAGE int PASCAL shutdown(SOCKET,int);
574 WINSOCK_API_LINKAGE SOCKET PASCAL socket(int,int,int);
575 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
576 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
577 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
578 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
579 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
580 WINSOCK_API_LINKAGE DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
581 typedef SOCKET (PASCAL * LPFN_ACCEPT)(SOCKET, struct sockaddr*,int *);
582 typedef int (PASCAL * LPFN_BIND)(SOCKET, const struct sockaddr*,int);
583 typedef int (PASCAL * LPFN_CLOSESOCKET)(SOCKET);
584 typedef int (PASCAL * LPFN_CONNECT)(SOCKET, const struct sockaddr*,int);
585 typedef int (PASCAL * LPFN_IOCTLSOCKET)(SOCKET, long, u_long*);
586 typedef int (PASCAL * LPFN_GETPEERNAME)(SOCKET, struct sockaddr*, int*);
587 typedef int(PASCAL * LPFN_GETSOCKNAME)(SOCKET, struct sockaddr*, int*);
588 typedef int(PASCAL * LPFN_GETSOCKOPT)(SOCKET, int, int, char*, int*);
589 typedef u_long(PASCAL * LPFN_HTONL)(u_long);
590 typedef u_short(PASCAL * LPFN_HTONS)(u_short);
591 typedef unsigned long(PASCAL * LPFN_INET_ADDR)(const char*);
592 typedef char*(PASCAL * LPFN_INET_NTOA)(struct in_addr);
593 typedef int(PASCAL * LPFN_LISTEN)(SOCKET, int);
594 typedef u_long(PASCAL * LPFN_NTOHL)(u_long);
595 typedef u_short(PASCAL * LPFN_NTOHS)(u_short);
596 typedef int(PASCAL * LPFN_RECV)(SOCKET, char*, int, int);
597 typedef int(PASCAL * LPFN_RECVFROM)(SOCKET, char*, int, int, struct sockaddr*, int*);
598 typedef int(PASCAL * LPFN_SELECT)(int, fd_set*, fd_set*, fd_set*, const struct timeval*);
599 typedef int(PASCAL * LPFN_SEND)(SOCKET, const char*, int, int);
600 typedef int(PASCAL * LPFN_SENDTO)(SOCKET, const char*, int, int, const struct sockaddr*, int);
601 typedef int(PASCAL * LPFN_SETSOCKOPT)(SOCKET, int, int, const char*, int);
602 typedef int(PASCAL * LPFN_SHUTDOWN)(SOCKET, int);
603 typedef SOCKET(PASCAL * LPFN_SOCKET)(int, int, int);
604 typedef struct hostent*(PASCAL * LPFN_GETHOSTBYADDR)( const char*, int, int);
605 typedef struct hostent*(PASCAL * LPFN_GETHOSTBYNAME)( const char*);
606 typedef int(PASCAL * LPFN_GETHOSTNAME)(char*, int);
607 typedef struct servent*(PASCAL * LPFN_GETSERVBYPORT)(int, const char*);
608 typedef struct servent*(PASCAL * LPFN_GETSERVBYNAME)(const char*, const char*);
609 typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNUMBER)(int);
610 typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNAME)(const char*);
612 WINSOCK_API_LINKAGE int PASCAL WSAStartup(WORD,LPWSADATA);
613 WINSOCK_API_LINKAGE int PASCAL WSACleanup(void);
614 WINSOCK_API_LINKAGE void PASCAL WSASetLastError(int);
615 WINSOCK_API_LINKAGE int PASCAL WSAGetLastError(void);
616 WINSOCK_API_LINKAGE typedef int(PASCAL * LPFN_WSASTARTUP)(WORD, LPWSADATA);
617 typedef int(PASCAL * LPFN_WSACLEANUP)(void);
618 typedef void(PASCAL * LPFN_WSASETLASTERROR)(int);
619 typedef int(PASCAL * LPFN_WSAGETLASTERROR)(void);
621 * Pseudo-blocking functions are deprecated in WinSock2
622 * spec. Use threads instead.
624 WINSOCK_API_LINKAGE BOOL PASCAL WSAIsBlocking(void);
625 WINSOCK_API_LINKAGE int PASCAL WSAUnhookBlockingHook(void);
626 WINSOCK_API_LINKAGE FARPROC PASCAL WSASetBlockingHook(FARPROC);
627 WINSOCK_API_LINKAGE int PASCAL WSACancelBlockingCall(void);
628 typedef BOOL(PASCAL * LPFN_WSAISBLOCKING)(void);
629 typedef int(PASCAL * LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
630 typedef FARPROC (PASCAL * LPFN_WSASETBLOCKINGHOOK)(FARPROC);
631 typedef int(PASCAL * LPFN_WSACANCELBLOCKINGCALL)(void);
633 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
634 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
635 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
636 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
637 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
638 WINSOCK_API_LINKAGE HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
639 WINSOCK_API_LINKAGE int PASCAL WSACancelAsyncRequest(HANDLE);
640 WINSOCK_API_LINKAGE int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
641 typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYNAME)(HWND, u_int, const char *, const char *, char *, int);
642 typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYPORT)(HWND, u_int, int, const char *, char *, int);
643 typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNAME)(HWND, u_int, const char*, char*, int);
644 typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND, u_int, int, char*, int);
645 typedef HANDLE(PASCAL * LPFN_WSAASYNCGETHOSTBYADDR)(HWND, u_int, const char*, int, int, char*, int);
646 typedef int(PASCAL * LPFN_WSACANCELASYNCREQUEST)(HANDLE);
647 typedef int(PASCAL * LPFN_WSAASYNCSELECT)(SOCKET, HWND, u_int, long);
648 #if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
649 WINSOCK_API_LINKAGE u_long PASCAL htonl(u_long);
650 WINSOCK_API_LINKAGE u_long PASCAL ntohl(u_long);
651 WINSOCK_API_LINKAGE u_short PASCAL htons(u_short);
652 WINSOCK_API_LINKAGE u_short PASCAL ntohs(u_short);
653 WINSOCK_API_LINKAGE int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
654 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
656 int PASCAL gethostname(char*,int);
658 #define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
659 #define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
660 #define WSAGETASYNCBUFLEN(l) LOWORD(l)
661 #define WSAGETASYNCERROR(l) HIWORD(l)
662 #define WSAGETSELECTEVENT(l) LOWORD(l)
663 #define WSAGETSELECTERROR(l) HIWORD(l)
665 typedef struct sockaddr SOCKADDR;
666 typedef struct sockaddr *PSOCKADDR;
667 typedef struct sockaddr *LPSOCKADDR;
668 typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
669 typedef struct sockaddr_in SOCKADDR_IN;
670 typedef struct sockaddr_in *PSOCKADDR_IN;
671 typedef struct sockaddr_in *LPSOCKADDR_IN;
672 typedef struct linger LINGER;
673 typedef struct linger *PLINGER;
674 typedef struct linger *LPLINGER;
675 typedef struct in_addr IN_ADDR;
676 typedef struct in_addr *PIN_ADDR;
677 typedef struct in_addr *LPIN_ADDR;
678 typedef struct fd_set FD_SET;
679 typedef struct fd_set *PFD_SET;
680 typedef struct fd_set *LPFD_SET;
681 typedef struct hostent HOSTENT;
682 typedef struct hostent *PHOSTENT;
683 typedef struct hostent *LPHOSTENT;
684 typedef struct servent SERVENT;
685 typedef struct servent *PSERVENT;
686 typedef struct servent *LPSERVENT;
687 typedef struct protoent PROTOENT;
688 typedef struct protoent *PPROTOENT;
689 typedef struct protoent *LPPROTOENT;
690 typedef struct timeval TIMEVAL;
691 typedef struct timeval *PTIMEVAL;
692 typedef struct timeval *LPTIMEVAL;
694 /* winsock2 additions */
695 #define ADDR_ANY INADDR_ANY
697 #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
698 #define IN_CLASSD_NET 0xf0000000
699 #define IN_CLASSD_NSHIFT 28
700 #define IN_CLASSD_HOST 0x0fffffff
701 #define IN_MULTICAST(i) IN_CLASSD(i)
703 #define FROM_PROTOCOL_INFO (-1)
705 #define SO_DONTLINGER (u_int)(~SO_LINGER)
706 #define SO_GROUP_ID 0x2001
707 #define SO_GROUP_PRIORITY 0x2002
708 #define SO_MAX_MSG_SIZE 0x2003
709 #define SO_PROTOCOL_INFOA 0x2004
710 #define SO_PROTOCOL_INFOW 0x2005
712 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
714 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
716 #define PVD_CONFIG 0x3001
718 #define MSG_INTERRUPT 0x10
719 #define MSG_MAXIOVLEN 16
721 #define WSAAPI WINAPI
722 #define WSAEVENT HANDLE
723 #define LPWSAEVENT LPHANDLE
724 #define WSAOVERLAPPED OVERLAPPED
725 typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
727 #define WSA_IO_PENDING (ERROR_IO_PENDING)
728 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
729 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
730 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
731 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
732 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
734 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
735 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
736 #define WSA_WAIT_FAILED ((DWORD)-1L)
737 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
738 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
739 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
740 #define WSA_INFINITE (INFINITE)
742 typedef struct _WSABUF {
750 ControlledLoadService,
752 GuaranteedDelayService,
756 /* TODO: FLOWSPEC and related definitions belong in qos.h */
759 Windows Sockets 2 Application Programming Interface,
760 revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
761 and the elements of _flowspec, but the type uint32 is not defined
762 or used anywhere else in the w32api. For now, just use
763 unsigned int, which is 32 bits on _WIN32 and _WIN64.
766 typedef unsigned int SERVICETYPE;
767 typedef struct _flowspec
769 unsigned int TokenRate;
770 unsigned int TokenBucketSize;
771 unsigned int PeakBandwidth;
772 unsigned int Latency;
773 unsigned int DelayVariation;
774 SERVICETYPE ServiceType;
775 unsigned int MaxSduSize;
776 unsigned int MinimumPolicedSize;
777 } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
779 typedef struct _QualityOfService
781 FLOWSPEC SendingFlowspec;
782 FLOWSPEC ReceivingFlowspec;
783 WSABUF ProviderSpecific;
786 #define CF_ACCEPT 0x0000
787 #define CF_REJECT 0x0001
788 #define CF_DEFER 0x0002
789 #define SD_RECEIVE 0x00
792 typedef unsigned int GROUP;
794 #define SG_UNCONSTRAINED_GROUP 0x01
795 #define SG_CONSTRAINED_GROUP 0x02
796 typedef struct _WSANETWORKEVENTS {
798 int iErrorCode[FD_MAX_EVENTS];
799 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
801 #define MAX_PROTOCOL_CHAIN 7
803 #define BASE_PROTOCOL 1
804 #define LAYERED_PROTOCOL 0
806 typedef enum _WSAESETSERVICEOP
808 RNRSERVICE_REGISTER=0,
809 RNRSERVICE_DEREGISTER,
811 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
813 typedef struct _AFPROTOCOLS {
816 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
818 typedef enum _WSAEcomparator
822 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
824 typedef struct _WSAVersion
827 WSAECOMPARATOR ecHow;
828 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
830 #ifndef __CSADDR_T_DEFINED /* also in nspapi.h */
831 #define __CSADDR_T_DEFINED
832 typedef struct _SOCKET_ADDRESS {
833 LPSOCKADDR lpSockaddr;
835 } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
836 typedef struct _CSADDR_INFO {
837 SOCKET_ADDRESS LocalAddr;
838 SOCKET_ADDRESS RemoteAddr;
841 } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
844 typedef struct _SOCKET_ADDRESS_LIST {
846 SOCKET_ADDRESS Address[1];
847 } SOCKET_ADDRESS_LIST, * LPSOCKET_ADDRESS_LIST;
849 #ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
850 #define __BLOB_T_DEFINED
851 typedef struct _BLOB {
854 } BLOB,*PBLOB,*LPBLOB;
857 typedef struct _WSAQuerySetA
860 LPSTR lpszServiceInstanceName;
861 LPGUID lpServiceClassId;
862 LPWSAVERSION lpVersion;
865 LPGUID lpNSProviderId;
867 DWORD dwNumberOfProtocols;
868 LPAFPROTOCOLS lpafpProtocols;
869 LPSTR lpszQueryString;
870 DWORD dwNumberOfCsAddrs;
871 LPCSADDR_INFO lpcsaBuffer;
874 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
876 typedef struct _WSAQuerySetW
879 LPWSTR lpszServiceInstanceName;
880 LPGUID lpServiceClassId;
881 LPWSAVERSION lpVersion;
884 LPGUID lpNSProviderId;
886 DWORD dwNumberOfProtocols;
887 LPAFPROTOCOLS lpafpProtocols;
888 LPWSTR lpszQueryString;
889 DWORD dwNumberOfCsAddrs;
890 LPCSADDR_INFO lpcsaBuffer;
893 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
896 typedef WSAQUERYSETW WSAQUERYSET;
897 typedef PWSAQUERYSETW PWSAQUERYSET;
898 typedef LPWSAQUERYSETW LPWSAQUERYSET;
900 typedef WSAQUERYSETA WSAQUERYSET;
901 typedef PWSAQUERYSETA PWSAQUERYSET;
902 typedef LPWSAQUERYSETA LPWSAQUERYSET;
905 #define LUP_DEEP 0x0001
906 #define LUP_CONTAINERS 0x0002
907 #define LUP_NOCONTAINERS 0x0004
908 #define LUP_NEAREST 0x0008
909 #define LUP_RETURN_NAME 0x0010
910 #define LUP_RETURN_TYPE 0x0020
911 #define LUP_RETURN_VERSION 0x0040
912 #define LUP_RETURN_COMMENT 0x0080
913 #define LUP_RETURN_ADDR 0x0100
914 #define LUP_RETURN_BLOB 0x0200
915 #define LUP_RETURN_ALIASES 0x0400
916 #define LUP_RETURN_QUERY_STRING 0x0800
917 #define LUP_RETURN_ALL 0x0FF0
918 #define LUP_RES_SERVICE 0x8000
919 #define LUP_FLUSHCACHE 0x1000
920 #define LUP_FLUSHPREVIOUS 0x2000
922 typedef struct _WSANSClassInfoA
929 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
931 typedef struct _WSANSClassInfoW
938 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
941 typedef WSANSCLASSINFOW WSANSCLASSINFO;
942 typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
943 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
945 typedef WSANSCLASSINFOA WSANSCLASSINFO;
946 typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
947 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
950 typedef struct _WSAServiceClassInfoA
952 LPGUID lpServiceClassId;
953 LPSTR lpszServiceClassName;
955 LPWSANSCLASSINFOA lpClassInfos;
956 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
958 typedef struct _WSAServiceClassInfoW
960 LPGUID lpServiceClassId;
961 LPWSTR lpszServiceClassName;
963 LPWSANSCLASSINFOW lpClassInfos;
964 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
967 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
968 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
969 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
971 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
972 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
973 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
976 typedef struct _WSANAMESPACE_INFOA {
981 LPSTR lpszIdentifier;
982 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
984 typedef struct _WSANAMESPACE_INFOW {
989 LPWSTR lpszIdentifier;
990 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
993 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
994 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
995 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
997 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
998 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
999 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
1002 typedef struct _WSAPROTOCOLCHAIN {
1004 DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
1005 } WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
1007 #define WSAPROTOCOL_LEN 255
1009 typedef struct _WSAPROTOCOL_INFOA {
1010 DWORD dwServiceFlags1;
1011 DWORD dwServiceFlags2;
1012 DWORD dwServiceFlags3;
1013 DWORD dwServiceFlags4;
1014 DWORD dwProviderFlags;
1016 DWORD dwCatalogEntryId;
1017 WSAPROTOCOLCHAIN ProtocolChain;
1024 int iProtocolMaxOffset;
1025 int iNetworkByteOrder;
1026 int iSecurityScheme;
1027 DWORD dwMessageSize;
1028 DWORD dwProviderReserved;
1029 CHAR szProtocol[WSAPROTOCOL_LEN+1];
1030 } WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
1032 typedef struct _WSAPROTOCOL_INFOW {
1033 DWORD dwServiceFlags1;
1034 DWORD dwServiceFlags2;
1035 DWORD dwServiceFlags3;
1036 DWORD dwServiceFlags4;
1037 DWORD dwProviderFlags;
1039 DWORD dwCatalogEntryId;
1040 WSAPROTOCOLCHAIN ProtocolChain;
1047 int iProtocolMaxOffset;
1048 int iNetworkByteOrder;
1049 int iSecurityScheme;
1050 DWORD dwMessageSize;
1051 DWORD dwProviderReserved;
1052 WCHAR szProtocol[WSAPROTOCOL_LEN+1];
1053 } WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW;
1055 typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
1056 typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
1060 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
1061 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
1063 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
1064 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
1067 /* Needed for XP & .NET Server function WSANSPIoctl. */
1068 typedef enum _WSACOMPLETIONTYPE {
1069 NSP_NOTIFY_IMMEDIATELY = 0,
1074 } WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, * LPWSACOMPLETIONTYPE;
1075 typedef struct _WSACOMPLETION {
1076 WSACOMPLETIONTYPE Type;
1084 LPWSAOVERLAPPED lpOverlapped;
1087 LPWSAOVERLAPPED lpOverlapped;
1088 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
1091 LPWSAOVERLAPPED lpOverlapped;
1096 } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
1098 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
1099 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
1100 #define PFL_HIDDEN 0x00000004
1101 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
1102 #define XP1_CONNECTIONLESS 0x00000001
1103 #define XP1_GUARANTEED_DELIVERY 0x00000002
1104 #define XP1_GUARANTEED_ORDER 0x00000004
1105 #define XP1_MESSAGE_ORIENTED 0x00000008
1106 #define XP1_PSEUDO_STREAM 0x00000010
1107 #define XP1_GRACEFUL_CLOSE 0x00000020
1108 #define XP1_EXPEDITED_DATA 0x00000040
1109 #define XP1_CONNECT_DATA 0x00000080
1110 #define XP1_DISCONNECT_DATA 0x00000100
1111 #define XP1_SUPPORT_BROADCAST 0x00000200
1112 #define XP1_SUPPORT_MULTIPOINT 0x00000400
1113 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
1114 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000
1115 #define XP1_QOS_SUPPORTED 0x00002000
1116 #define XP1_INTERRUPT 0x00004000
1117 #define XP1_UNI_SEND 0x00008000
1118 #define XP1_UNI_RECV 0x00010000
1119 #define XP1_IFS_HANDLES 0x00020000
1120 #define XP1_PARTIAL_MESSAGE 0x00040000
1122 #define BIGENDIAN 0x0000
1123 #define LITTLEENDIAN 0x0001
1125 #define SECURITY_PROTOCOL_NONE 0x0000
1126 #define JL_SENDER_ONLY 0x01
1127 #define JL_RECEIVER_ONLY 0x02
1128 #define JL_BOTH 0x04
1129 #define WSA_FLAG_OVERLAPPED 0x01
1130 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
1131 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
1132 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
1133 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
1134 #define IOC_UNIX 0x00000000
1135 #define IOC_WS2 0x08000000
1136 #define IOC_PROTOCOL 0x10000000
1137 #define IOC_VENDOR 0x18000000
1139 #define _WSAIO(x,y) (IOC_VOID|(x)|(y))
1140 #define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
1141 #define _WSAIOW(x,y) (IOC_IN|(x)|(y))
1142 #define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
1144 #define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
1145 #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
1146 #define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
1147 #define SIO_FLUSH _WSAIO(IOC_WS2,4)
1148 #define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
1149 #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
1150 #define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
1151 #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
1152 #define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
1153 #define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
1154 #define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
1155 #define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
1156 #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
1157 #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
1158 #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
1159 #define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22)
1160 #define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23)
1161 #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
1162 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
1163 #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
1165 #define TH_NETDEV 0x00000001
1166 #define TH_TAPI 0x00000002
1168 WINSOCK_API_LINKAGE SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1169 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1170 WINSOCK_API_LINKAGE INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1171 WINSOCK_API_LINKAGE BOOL WINAPI WSACloseEvent(WSAEVENT);
1172 WINSOCK_API_LINKAGE int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1173 WINSOCK_API_LINKAGE WSAEVENT WINAPI WSACreateEvent(void);
1174 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1175 WINSOCK_API_LINKAGE int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1176 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
1177 WINSOCK_API_LINKAGE INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
1178 WINSOCK_API_LINKAGE int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1179 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1180 WINSOCK_API_LINKAGE int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1181 WINSOCK_API_LINKAGE int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long);
1182 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1183 WINSOCK_API_LINKAGE BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
1184 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1185 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1186 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
1187 WINSOCK_API_LINKAGE INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
1188 WINSOCK_API_LINKAGE int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *);
1189 WINSOCK_API_LINKAGE int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *);
1190 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
1191 WINSOCK_API_LINKAGE INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
1192 WINSOCK_API_LINKAGE int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1193 WINSOCK_API_LINKAGE SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1194 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
1195 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE);
1196 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1197 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1198 WINSOCK_API_LINKAGE INT WINAPI WSALookupServiceEnd(HANDLE);
1199 WINSOCK_API_LINKAGE int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */
1200 WINSOCK_API_LINKAGE int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *);
1201 WINSOCK_API_LINKAGE int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *);
1202 WINSOCK_API_LINKAGE int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1203 WINSOCK_API_LINKAGE int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF);
1204 WINSOCK_API_LINKAGE int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1205 WINSOCK_API_LINKAGE INT WINAPI WSARemoveServiceClass(LPGUID);
1206 WINSOCK_API_LINKAGE BOOL WINAPI WSAResetEvent(WSAEVENT);
1207 WINSOCK_API_LINKAGE int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1208 WINSOCK_API_LINKAGE int WINAPI WSASendDisconnect(SOCKET, LPWSABUF);
1209 WINSOCK_API_LINKAGE int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1210 WINSOCK_API_LINKAGE BOOL WINAPI WSASetEvent(WSAEVENT);
1211 WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1212 WINSOCK_API_LINKAGE INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1213 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1214 WINSOCK_API_LINKAGE SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1215 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1216 WINSOCK_API_LINKAGE INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1217 WINSOCK_API_LINKAGE DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1219 typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1220 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1221 typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1222 typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
1223 typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1224 typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
1225 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1226 typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1227 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD, LPWSANAMESPACE_INFOA);
1228 typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD, LPWSANAMESPACE_INFOW);
1229 typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1230 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1231 typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1232 typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET, WSAEVENT, long);
1233 typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1234 typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME)(SOCKET, LPWSABUF, LPQOS);
1235 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1236 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1237 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID, LPSTR, LPDWORD);
1238 typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID, LPWSTR, LPDWORD);
1239 typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET, unsigned long, unsigned long *);
1240 typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET, unsigned short, unsigned short *);
1241 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
1242 typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
1243 typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1244 typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1245 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA, DWORD, LPHANDLE);
1246 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW, DWORD, LPHANDLE);
1247 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1248 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1249 typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE);
1250 typedef int (WINAPI *LPFN_WSANSPIoctl)(HANDLE, DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
1251 typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET, unsigned long, unsigned long *);
1252 typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET, unsigned short, unsigned short *);
1253 typedef int (WINAPI *LPFN_WSARECV)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1254 typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET, LPWSABUF);
1255 typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1256 typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID);
1257 typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
1258 typedef int (WINAPI *LPFN_WSASEND)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1259 typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET, LPWSABUF);
1260 typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1261 typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
1262 typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1263 typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1264 typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1265 typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1266 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1267 typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1268 typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1271 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1272 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1273 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1274 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1275 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1276 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1277 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1278 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1279 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1280 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1281 #define LPFN_WSASOCKET LPFN_WSASOCKETW
1282 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1283 #define WSAAddressToString WSAAddressToStringW
1284 #define WSADuplicateSocket WSADuplicateSocketW
1285 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
1286 #define WSAEnumProtocols WSAEnumProtocolsW
1287 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
1288 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
1289 #define WSASetService WSASetServiceW
1290 #define WSASocket WSASocketW
1291 #define WSAStringToAddress WSAStringToAddressW
1292 #define WSALookupServiceBegin WSALookupServiceBeginW
1293 #define WSALookupServiceNext WSALookupServiceNextW
1294 #define WSAInstallServiceClass WSAInstallServiceClassW
1296 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1297 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1298 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1299 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1300 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1301 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1302 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1303 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1304 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1305 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1306 #define LPFN_WSASOCKET LPFN_WSASOCKETA
1307 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1308 #define WSAAddressToString WSAAddressToStringA
1309 #define WSADuplicateSocket WSADuplicateSocketA
1310 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
1311 #define WSAEnumProtocols WSAEnumProtocolsA
1312 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
1313 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
1314 #define WSAInstallServiceClass WSAInstallServiceClassA
1315 #define WSALookupServiceBegin WSALookupServiceBeginA
1316 #define WSALookupServiceNext WSALookupServiceNextA
1317 #define WSASocket WSASocketA
1318 #define WSAStringToAddress WSAStringToAddressA
1319 #define WSASetService WSASetServiceA