source: vendor/w32api/current/include/winsock2.h

Last change on this file was 2720, checked in by bird, 19 years ago

w32api v3.6

File size: 46.4 KB
Line 
1/*
2
3 Definitions for winsock 2
4
5 Contributed by the WINE project.
6
7 Portions Copyright (c) 1980, 1983, 1988, 1993
8 The Regents of the University of California. All rights reserved.
9
10 Portions Copyright (c) 1993 by Digital Equipment Corporation.
11 */
12
13#if !(defined _WINSOCK2_H || defined _WINSOCK_H)
14#define _WINSOCK2_H
15#define _WINSOCK_H /* to prevent later inclusion of winsock.h */
16#if __GNUC__ >=3
17#pragma GCC system_header
18#endif
19
20#define _GNU_H_WINDOWS32_SOCKETS
21
22#include <windows.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27/* Names common to Winsock1.1 and Winsock2 */
28#if !defined ( _BSDTYPES_DEFINED )
29/* also defined in gmon.h and in cygwin's sys/types */
30typedef unsigned char u_char;
31typedef unsigned short u_short;
32typedef unsigned int u_int;
33typedef unsigned long u_long;
34#define _BSDTYPES_DEFINED
35#endif /* ! def _BSDTYPES_DEFINED */
36typedef u_int SOCKET;
37#ifndef FD_SETSIZE
38#define FD_SETSIZE 64
39#endif
40
41/* shutdown() how types */
42#define SD_RECEIVE 0x00
43#define SD_SEND 0x01
44#define SD_BOTH 0x02
45
46#ifndef _SYS_TYPES_FD_SET
47/* fd_set may be defined by the newlib <sys/types.h>
48 * if __USE_W32_SOCKETS not defined.
49 */
50#ifdef fd_set
51#undef fd_set
52#endif
53typedef struct fd_set {
54 u_int fd_count;
55 SOCKET fd_array[FD_SETSIZE];
56} fd_set;
57int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
58#ifndef FD_CLR
59#define FD_CLR(fd,set) do { u_int __i;\
60for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
61 if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
62 while (__i < ((fd_set *)(set))->fd_count-1) {\
63 ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\
64 __i++;\
65 }\
66 ((fd_set*)(set))->fd_count--;\
67 break;\
68 }\
69}\
70} while (0)
71#endif
72#ifndef FD_SET
73/* this differs from the define in winsock.h and in cygwin sys/types.h */
74#define FD_SET(fd, set) do { u_int __i;\
75for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
76 if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
77 break;\
78 }\
79}\
80if (__i == ((fd_set *)(set))->fd_count) {\
81 if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\
82 ((fd_set *)(set))->fd_array[__i] = (fd);\
83 ((fd_set *)(set))->fd_count++;\
84 }\
85}\
86} while(0)
87#endif
88#ifndef FD_ZERO
89#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
90#endif
91#ifndef FD_ISSET
92#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
93#endif
94#elif !defined (USE_SYS_TYPES_FD_SET)
95#warning "fd_set and associated macros have been defined in sys/types. \
96 This may cause runtime problems with W32 sockets"
97#endif /* ndef _SYS_TYPES_FD_SET */
98#if !(defined (__INSIDE_CYGWIN__) || (__INSIDE_MSYS__))
99#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */
100#define _TIMEVAL_DEFINED
101struct timeval {
102 long tv_sec;
103 long tv_usec;
104};
105#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
106#define timercmp(tvp, uvp, cmp) \
107 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
108 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
109 ((tvp)->tv_usec cmp (uvp)->tv_usec))
110#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
111#endif /* _TIMEVAL_DEFINED */
112struct hostent {
113 char *h_name;
114 char **h_aliases;
115 short h_addrtype;
116 short h_length;
117 char **h_addr_list;
118#define h_addr h_addr_list[0]
119};
120struct linger {
121 u_short l_onoff;
122 u_short l_linger;
123};
124#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
125#define IOCPARM_MASK 0x7f
126#define IOC_VOID 0x20000000
127#define IOC_OUT 0x40000000
128#define IOC_IN 0x80000000
129#define IOC_INOUT (IOC_IN|IOC_OUT)
130
131#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
132#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
133#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
134#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
135#define FIONBIO _IOW('f', 126, u_long)
136#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
137
138#define FIONREAD _IOR('f', 127, u_long)
139#define FIOASYNC _IOW('f', 125, u_long)
140#define SIOCSHIWAT _IOW('s', 0, u_long)
141#define SIOCGHIWAT _IOR('s', 1, u_long)
142#define SIOCSLOWAT _IOW('s', 2, u_long)
143#define SIOCGLOWAT _IOR('s', 3, u_long)
144#define SIOCATMARK _IOR('s', 7, u_long)
145
146#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
147struct netent {
148 char * n_name;
149 char **n_aliases;
150 short n_addrtype;
151 u_long n_net;
152};
153struct servent {
154 char *s_name;
155 char **s_aliases;
156 short s_port;
157 char *s_proto;
158};
159struct protoent {
160 char *p_name;
161 char **p_aliases;
162 short p_proto;
163};
164#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
165
166#define IPPROTO_IP 0
167#define IPPROTO_ICMP 1
168#define IPPROTO_IGMP 2
169#define IPPROTO_GGP 3
170#define IPPROTO_TCP 6
171#define IPPROTO_PUP 12
172#define IPPROTO_UDP 17
173#define IPPROTO_IDP 22
174#define IPPROTO_ND 77
175#define IPPROTO_RAW 255
176#define IPPROTO_MAX 256
177/* IPv6 options */
178#define IPPROTO_HOPOPTS 0 /* IPv6 Hop-by-Hop options */
179#define IPPROTO_IPV6 41 /* IPv6 header */
180#define IPPROTO_ROUTING 43 /* IPv6 Routing header */
181#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
182#define IPPROTO_ESP 50 /* encapsulating security payload */
183#define IPPROTO_AH 51 /* authentication header */
184#define IPPROTO_ICMPV6 58 /* ICMPv6 */
185#define IPPROTO_NONE 59 /* IPv6 no next header */
186#define IPPROTO_DSTOPTS 60 /* IPv6 Destination options */
187#define IPPORT_ECHO 7
188#define IPPORT_DISCARD 9
189#define IPPORT_SYSTAT 11
190#define IPPORT_DAYTIME 13
191#define IPPORT_NETSTAT 15
192#define IPPORT_FTP 21
193#define IPPORT_TELNET 23
194#define IPPORT_SMTP 25
195#define IPPORT_TIMESERVER 37
196#define IPPORT_NAMESERVER 42
197#define IPPORT_WHOIS 43
198#define IPPORT_MTP 57
199#define IPPORT_TFTP 69
200#define IPPORT_RJE 77
201#define IPPORT_FINGER 79
202#define IPPORT_TTYLINK 87
203#define IPPORT_SUPDUP 95
204#define IPPORT_EXECSERVER 512
205#define IPPORT_LOGINSERVER 513
206#define IPPORT_CMDSERVER 514
207#define IPPORT_EFSSERVER 520
208#define IPPORT_BIFFUDP 512
209#define IPPORT_WHOSERVER 513
210#define IPPORT_ROUTESERVER 520
211#define IPPORT_RESERVED 1024
212#define IMPLINK_IP 155
213#define IMPLINK_LOWEXPER 156
214#define IMPLINK_HIGHEXPER 158
215struct in_addr {
216 union {
217 struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
218 struct { u_short s_w1,s_w2; } S_un_w;
219 u_long S_addr;
220 } S_un;
221#define s_addr S_un.S_addr
222#define s_host S_un.S_un_b.s_b2
223#define s_net S_un.S_un_b.s_b1
224#define s_imp S_un.S_un_w.s_w2
225#define s_impno S_un.S_un_b.s_b4
226#define s_lh S_un.S_un_b.s_b3
227};
228#define IN_CLASSA(i) (((long)(i)&0x80000000) == 0)
229#define IN_CLASSA_NET 0xff000000
230#define IN_CLASSA_NSHIFT 24
231#define IN_CLASSA_HOST 0x00ffffff
232#define IN_CLASSA_MAX 128
233#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000)
234#define IN_CLASSB_NET 0xffff0000
235#define IN_CLASSB_NSHIFT 16
236#define IN_CLASSB_HOST 0x0000ffff
237#define IN_CLASSB_MAX 65536
238#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000)
239#define IN_CLASSC_NET 0xffffff00
240#define IN_CLASSC_NSHIFT 8
241#define IN_CLASSC_HOST 0xff
242#define INADDR_ANY (u_long)0
243#define INADDR_LOOPBACK 0x7f000001
244#define INADDR_BROADCAST (u_long)0xffffffff
245#define INADDR_NONE 0xffffffff
246struct sockaddr_in {
247 short sin_family;
248 u_short sin_port;
249 struct in_addr sin_addr;
250 char sin_zero[8];
251};
252#define WSADESCRIPTION_LEN 256
253#define WSASYS_STATUS_LEN 128
254typedef struct WSAData {
255 WORD wVersion;
256 WORD wHighVersion;
257 char szDescription[WSADESCRIPTION_LEN+1];
258 char szSystemStatus[WSASYS_STATUS_LEN+1];
259 unsigned short iMaxSockets;
260 unsigned short iMaxUdpDg;
261 char * lpVendorInfo;
262} WSADATA;
263typedef WSADATA *LPWSADATA;
264
265#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
266#define IP_OPTIONS 1
267#define SO_DEBUG 1
268#define SO_ACCEPTCONN 2
269#define SO_REUSEADDR 4
270#define SO_KEEPALIVE 8
271#define SO_DONTROUTE 16
272#define SO_BROADCAST 32
273#define SO_USELOOPBACK 64
274#define SO_LINGER 128
275#define SO_OOBINLINE 256
276#define SO_DONTLINGER (u_int)(~SO_LINGER)
277#define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
278#define SO_SNDBUF 0x1001
279#define SO_RCVBUF 0x1002
280#define SO_SNDLOWAT 0x1003
281#define SO_RCVLOWAT 0x1004
282#define SO_SNDTIMEO 0x1005
283#define SO_RCVTIMEO 0x1006
284#define SO_ERROR 0x1007
285#define SO_TYPE 0x1008
286#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
287
288#define INVALID_SOCKET (SOCKET)(~0)
289#define SOCKET_ERROR (-1)
290#define SOCK_STREAM 1
291#define SOCK_DGRAM 2
292#define SOCK_RAW 3
293#define SOCK_RDM 4
294#define SOCK_SEQPACKET 5
295#define TCP_NODELAY 0x0001
296#define AF_UNSPEC 0
297#define AF_UNIX 1
298#define AF_INET 2
299#define AF_IMPLINK 3
300#define AF_PUP 4
301#define AF_CHAOS 5
302#define AF_IPX 6
303#define AF_NS 6
304#define AF_ISO 7
305#define AF_OSI AF_ISO
306#define AF_ECMA 8
307#define AF_DATAKIT 9
308#define AF_CCITT 10
309#define AF_SNA 11
310#define AF_DECnet 12
311#define AF_DLI 13
312#define AF_LAT 14
313#define AF_HYLINK 15
314#define AF_APPLETALK 16
315#define AF_NETBIOS 17
316#define AF_VOICEVIEW 18
317#define AF_FIREFOX 19
318#define AF_UNKNOWN1 20
319#define AF_BAN 21
320#define AF_ATM 22
321#define AF_INET6 23
322#define AF_CLUSTER 24
323#define AF_12844 25
324#define AF_IRDA 26
325#define AF_NETDES 28
326#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
327#define AF_MAX 29
328struct sockaddr {
329 u_short sa_family;
330 char sa_data[14];
331};
332
333/* Portable IPv6/IPv4 version of sockaddr. Based on RFC 2553.
334 Pad to force 8 byte alignment and maximum size of 128 bytes. */
335
336/*
337 * Desired design of maximum size and alignment
338 */
339#define _SS_MAXSIZE 128
340#define _SS_ALIGNSIZE (sizeof (__int64))
341/*
342 * Definitions used for sockaddr_storage structure paddings design.
343 */
344#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
345#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) \
346 + _SS_PAD1SIZE \
347 + _SS_ALIGNSIZE))
348struct sockaddr_storage {
349 short ss_family;
350 char __ss_pad1[_SS_PAD1SIZE]; /* pad to 8 */
351 __int64 __ss_align; /* force alignment */
352 char __ss_pad2[_SS_PAD2SIZE]; /* pad to 128 */
353};
354#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
355
356struct sockproto {
357 u_short sp_family;
358 u_short sp_protocol;
359};
360#define PF_UNSPEC AF_UNSPEC
361#define PF_UNIX AF_UNIX
362#define PF_INET AF_INET
363#define PF_IMPLINK AF_IMPLINK
364#define PF_PUP AF_PUP
365#define PF_CHAOS AF_CHAOS
366#define PF_NS AF_NS
367#define PF_IPX AF_IPX
368#define PF_ISO AF_ISO
369#define PF_OSI AF_OSI
370#define PF_ECMA AF_ECMA
371#define PF_DATAKIT AF_DATAKIT
372#define PF_CCITT AF_CCITT
373#define PF_SNA AF_SNA
374#define PF_DECnet AF_DECnet
375#define PF_DLI AF_DLI
376#define PF_LAT AF_LAT
377#define PF_HYLINK AF_HYLINK
378#define PF_APPLETALK AF_APPLETALK
379#define PF_VOICEVIEW AF_VOICEVIEW
380#define PF_FIREFOX AF_FIREFOX
381#define PF_UNKNOWN1 AF_UNKNOWN1
382#define PF_BAN AF_BAN
383#define PF_ATM AF_ATM
384#define PF_INET6 AF_INET6
385#define PF_MAX AF_MAX
386#define SOL_SOCKET 0xffff
387#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
388#define SOMAXCONN 0x7fffffff /* (5) in WinSock1.1 */
389#define MSG_OOB 1
390#define MSG_PEEK 2
391#define MSG_DONTROUTE 4
392#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
393#define MSG_MAXIOVLEN 16
394#define MSG_PARTIAL 0x8000
395#define MAXGETHOSTSTRUCT 1024
396
397#define FD_READ_BIT 0
398#define FD_READ (1 << FD_READ_BIT)
399#define FD_WRITE_BIT 1
400#define FD_WRITE (1 << FD_WRITE_BIT)
401#define FD_OOB_BIT 2
402#define FD_OOB (1 << FD_OOB_BIT)
403#define FD_ACCEPT_BIT 3
404#define FD_ACCEPT (1 << FD_ACCEPT_BIT)
405#define FD_CONNECT_BIT 4
406#define FD_CONNECT (1 << FD_CONNECT_BIT)
407#define FD_CLOSE_BIT 5
408#define FD_CLOSE (1 << FD_CLOSE_BIT)
409/* winsock1.1 defines stop at FD_CLOSE (32) */
410#define FD_QOS_BIT 6
411#define FD_QOS (1 << FD_QOS_BIT)
412#define FD_GROUP_QOS_BIT 7
413#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
414#define FD_ROUTING_INTERFACE_CHANGE_BIT 8
415#define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
416#define FD_ADDRESS_LIST_CHANGE_BIT 9
417#define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
418#define FD_MAX_EVENTS 10
419#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
420
421#ifndef WSABASEERR
422#define WSABASEERR 10000
423#define WSAEINTR (WSABASEERR+4)
424#define WSAEBADF (WSABASEERR+9)
425#define WSAEACCES (WSABASEERR+13)
426#define WSAEFAULT (WSABASEERR+14)
427#define WSAEINVAL (WSABASEERR+22)
428#define WSAEMFILE (WSABASEERR+24)
429#define WSAEWOULDBLOCK (WSABASEERR+35)
430#define WSAEINPROGRESS (WSABASEERR+36) /* deprecated on WinSock2 */
431#define WSAEALREADY (WSABASEERR+37)
432#define WSAENOTSOCK (WSABASEERR+38)
433#define WSAEDESTADDRREQ (WSABASEERR+39)
434#define WSAEMSGSIZE (WSABASEERR+40)
435#define WSAEPROTOTYPE (WSABASEERR+41)
436#define WSAENOPROTOOPT (WSABASEERR+42)
437#define WSAEPROTONOSUPPORT (WSABASEERR+43)
438#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
439#define WSAEOPNOTSUPP (WSABASEERR+45)
440#define WSAEPFNOSUPPORT (WSABASEERR+46)
441#define WSAEAFNOSUPPORT (WSABASEERR+47)
442#define WSAEADDRINUSE (WSABASEERR+48)
443#define WSAEADDRNOTAVAIL (WSABASEERR+49)
444#define WSAENETDOWN (WSABASEERR+50)
445#define WSAENETUNREACH (WSABASEERR+51)
446#define WSAENETRESET (WSABASEERR+52)
447#define WSAECONNABORTED (WSABASEERR+53)
448#define WSAECONNRESET (WSABASEERR+54)
449#define WSAENOBUFS (WSABASEERR+55)
450#define WSAEISCONN (WSABASEERR+56)
451#define WSAENOTCONN (WSABASEERR+57)
452#define WSAESHUTDOWN (WSABASEERR+58)
453#define WSAETOOMANYREFS (WSABASEERR+59)
454#define WSAETIMEDOUT (WSABASEERR+60)
455#define WSAECONNREFUSED (WSABASEERR+61)
456#define WSAELOOP (WSABASEERR+62)
457#define WSAENAMETOOLONG (WSABASEERR+63)
458#define WSAEHOSTDOWN (WSABASEERR+64)
459#define WSAEHOSTUNREACH (WSABASEERR+65)
460#define WSAENOTEMPTY (WSABASEERR+66)
461#define WSAEPROCLIM (WSABASEERR+67)
462#define WSAEUSERS (WSABASEERR+68)
463#define WSAEDQUOT (WSABASEERR+69)
464#define WSAESTALE (WSABASEERR+70)
465#define WSAEREMOTE (WSABASEERR+71)
466#define WSAEDISCON (WSABASEERR+101)
467#define WSASYSNOTREADY (WSABASEERR+91)
468#define WSAVERNOTSUPPORTED (WSABASEERR+92)
469#define WSANOTINITIALISED (WSABASEERR+93)
470#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
471#define WSATRY_AGAIN (WSABASEERR+1002)
472#define WSANO_RECOVERY (WSABASEERR+1003)
473#define WSANO_DATA (WSABASEERR+1004)
474
475/* WinSock2 specific error codes */
476#define WSAENOMORE (WSABASEERR+102)
477#define WSAECANCELLED (WSABASEERR+103)
478#define WSAEINVALIDPROCTABLE (WSABASEERR+104)
479#define WSAEINVALIDPROVIDER (WSABASEERR+105)
480#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
481#define WSASYSCALLFAILURE (WSABASEERR+107)
482#define WSASERVICE_NOT_FOUND (WSABASEERR+108)
483#define WSATYPE_NOT_FOUND (WSABASEERR+109)
484#define WSA_E_NO_MORE (WSABASEERR+110)
485#define WSA_E_CANCELLED (WSABASEERR+111)
486#define WSAEREFUSED (WSABASEERR+112)
487
488/* WS QualityofService errors */
489#define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
490#define WSA_QOS_SENDERS (WSABASEERR + 1006)
491#define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
492#define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
493#define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
494#define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
495#define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
496#define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
497#define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
498#define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
499#define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
500#define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
501#define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
502#define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
503#define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
504#define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
505#define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
506#define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
507#define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
508#define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
509#define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
510#define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
511#define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
512#define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
513#define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
514#define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
515#define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
516
517#endif /* !WSABASEERR */
518
519#define WSANO_ADDRESS WSANO_DATA
520#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
521#define h_errno WSAGetLastError()
522#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
523#define TRY_AGAIN WSATRY_AGAIN
524#define NO_RECOVERY WSANO_RECOVERY
525#define NO_DATA WSANO_DATA
526#define NO_ADDRESS WSANO_ADDRESS
527#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
528SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
529int PASCAL bind(SOCKET,const struct sockaddr*,int);
530int PASCAL closesocket(SOCKET);
531int PASCAL connect(SOCKET,const struct sockaddr*,int);
532int PASCAL ioctlsocket(SOCKET,long,u_long *);
533int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
534int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
535int PASCAL getsockopt(SOCKET,int,int,char*,int*);
536unsigned long PASCAL inet_addr(const char*);
537DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
538int PASCAL listen(SOCKET,int);
539int PASCAL recv(SOCKET,char*,int,int);
540int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
541int PASCAL send(SOCKET,const char*,int,int);
542int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
543int PASCAL setsockopt(SOCKET,int,int,const char*,int);
544int PASCAL shutdown(SOCKET,int);
545SOCKET PASCAL socket(int,int,int);
546DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
547DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
548DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
549DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
550DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
551DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
552typedef SOCKET (PASCAL * LPFN_ACCEPT)(SOCKET, struct sockaddr*,int *);
553typedef int (PASCAL * LPFN_BIND)(SOCKET, const struct sockaddr*,int);
554typedef int (PASCAL * LPFN_CLOSESOCKET)(SOCKET);
555typedef int (PASCAL * LPFN_CONNECT)(SOCKET, const struct sockaddr*,int);
556typedef int (PASCAL * LPFN_IOCTLSOCKET)(SOCKET, long, u_long*);
557typedef int (PASCAL * LPFN_GETPEERNAME)(SOCKET, struct sockaddr*, int*);
558typedef int(PASCAL * LPFN_GETSOCKNAME)(SOCKET, struct sockaddr*, int*);
559typedef int(PASCAL * LPFN_GETSOCKOPT)(SOCKET, int, int, char*, int*);
560typedef u_long(PASCAL * LPFN_HTONL)(u_long);
561typedef u_short(PASCAL * LPFN_HTONS)(u_short);
562typedef unsigned long(PASCAL * LPFN_INET_ADDR)(const char*);
563typedef char*(PASCAL * LPFN_INET_NTOA)(struct in_addr);
564typedef int(PASCAL * LPFN_LISTEN)(SOCKET, int);
565typedef u_long(PASCAL * LPFN_NTOHL)(u_long);
566typedef u_short(PASCAL * LPFN_NTOHS)(u_short);
567typedef int(PASCAL * LPFN_RECV)(SOCKET, char*, int, int);
568typedef int(PASCAL * LPFN_RECVFROM)(SOCKET, char*, int, int, struct sockaddr*, int*);
569typedef int(PASCAL * LPFN_SELECT)(int, fd_set*, fd_set*, fd_set*, const struct timeval*);
570typedef int(PASCAL * LPFN_SEND)(SOCKET, const char*, int, int);
571typedef int(PASCAL * LPFN_SENDTO)(SOCKET, const char*, int, int, const struct sockaddr*, int);
572typedef int(PASCAL * LPFN_SETSOCKOPT)(SOCKET, int, int, const char*, int);
573typedef int(PASCAL * LPFN_SHUTDOWN)(SOCKET, int);
574typedef SOCKET(PASCAL * LPFN_SOCKET)(int, int, int);
575typedef struct hostent*(PASCAL * LPFN_GETHOSTBYADDR)( const char*, int, int);
576typedef struct hostent*(PASCAL * LPFN_GETHOSTBYNAME)( const char*);
577typedef int(PASCAL * LPFN_GETHOSTNAME)(char*, int);
578typedef struct servent*(PASCAL * LPFN_GETSERVBYPORT)(int, const char*);
579typedef struct servent*(PASCAL * LPFN_GETSERVBYNAME)(const char*, const char*);
580typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNUMBER)(int);
581typedef struct protoent*(PASCAL * LPFN_GETPROTOBYNAME)(const char*);
582
583int PASCAL WSAStartup(WORD,LPWSADATA);
584int PASCAL WSACleanup(void);
585void PASCAL WSASetLastError(int);
586int PASCAL WSAGetLastError(void);
587typedef int(PASCAL * LPFN_WSASTARTUP)(WORD, LPWSADATA);
588typedef int(PASCAL * LPFN_WSACLEANUP)(void);
589typedef void(PASCAL * LPFN_WSASETLASTERROR)(int);
590typedef int(PASCAL * LPFN_WSAGETLASTERROR)(void);
591/*
592 * Pseudo-blocking functions are deprecated in WinSock2
593 * spec. Use threads instead.
594 */
595BOOL PASCAL WSAIsBlocking(void);
596int PASCAL WSAUnhookBlockingHook(void);
597FARPROC PASCAL WSASetBlockingHook(FARPROC);
598int PASCAL WSACancelBlockingCall(void);
599typedef BOOL(PASCAL * LPFN_WSAISBLOCKING)(void);
600typedef int(PASCAL * LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
601typedef FARPROC (PASCAL * LPFN_WSASETBLOCKINGHOOK)(FARPROC);
602typedef int(PASCAL * LPFN_WSACANCELBLOCKINGCALL)(void);
603
604HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
605HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
606HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
607HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
608HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
609HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
610int PASCAL WSACancelAsyncRequest(HANDLE);
611int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
612typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYNAME)(HWND, u_int, const char *, const char *, char *, int);
613typedef HANDLE(PASCAL * LPFN_WSAASYNCGETSERVBYPORT)(HWND, u_int, int, const char *, char *, int);
614typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNAME)(HWND, u_int, const char*, char*, int);
615typedef HANDLE(PASCAL * LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND, u_int, int, char*, int);
616typedef HANDLE(PASCAL * LPFN_WSAASYNCGETHOSTBYADDR)(HWND, u_int, const char*, int, int, char*, int);
617typedef int(PASCAL * LPFN_WSACANCELASYNCREQUEST)(HANDLE);
618typedef int(PASCAL * LPFN_WSAASYNCSELECT)(SOCKET, HWND, u_int, long);
619#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
620u_long PASCAL htonl(u_long);
621u_long PASCAL ntohl(u_long);
622u_short PASCAL htons(u_short);
623u_short PASCAL ntohs(u_short);
624int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
625#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
626
627int PASCAL gethostname(char*,int);
628
629#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
630#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
631#define WSAGETASYNCBUFLEN(l) LOWORD(l)
632#define WSAGETASYNCERROR(l) HIWORD(l)
633#define WSAGETSELECTEVENT(l) LOWORD(l)
634#define WSAGETSELECTERROR(l) HIWORD(l)
635
636typedef struct sockaddr SOCKADDR;
637typedef struct sockaddr *PSOCKADDR;
638typedef struct sockaddr *LPSOCKADDR;
639typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
640typedef struct sockaddr_in SOCKADDR_IN;
641typedef struct sockaddr_in *PSOCKADDR_IN;
642typedef struct sockaddr_in *LPSOCKADDR_IN;
643typedef struct linger LINGER;
644typedef struct linger *PLINGER;
645typedef struct linger *LPLINGER;
646typedef struct in_addr IN_ADDR;
647typedef struct in_addr *PIN_ADDR;
648typedef struct in_addr *LPIN_ADDR;
649typedef struct fd_set FD_SET;
650typedef struct fd_set *PFD_SET;
651typedef struct fd_set *LPFD_SET;
652typedef struct hostent HOSTENT;
653typedef struct hostent *PHOSTENT;
654typedef struct hostent *LPHOSTENT;
655typedef struct servent SERVENT;
656typedef struct servent *PSERVENT;
657typedef struct servent *LPSERVENT;
658typedef struct protoent PROTOENT;
659typedef struct protoent *PPROTOENT;
660typedef struct protoent *LPPROTOENT;
661typedef struct timeval TIMEVAL;
662typedef struct timeval *PTIMEVAL;
663typedef struct timeval *LPTIMEVAL;
664
665/* winsock2 additions */
666#define ADDR_ANY INADDR_ANY
667
668#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
669#define IN_CLASSD_NET 0xf0000000
670#define IN_CLASSD_NSHIFT 28
671#define IN_CLASSD_HOST 0x0fffffff
672#define IN_MULTICAST(i) IN_CLASSD(i)
673
674#define FROM_PROTOCOL_INFO (-1)
675
676#define SO_DONTLINGER (u_int)(~SO_LINGER)
677#define SO_GROUP_ID 0x2001
678#define SO_GROUP_PRIORITY 0x2002
679#define SO_MAX_MSG_SIZE 0x2003
680#define SO_PROTOCOL_INFOA 0x2004
681#define SO_PROTOCOL_INFOW 0x2005
682#ifdef UNICODE
683#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
684#else
685#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
686#endif
687#define PVD_CONFIG 0x3001
688
689#define MSG_INTERRUPT 0x10
690#define MSG_MAXIOVLEN 16
691
692#define WSAAPI WINAPI
693#define WSAEVENT HANDLE
694#define LPWSAEVENT LPHANDLE
695#define WSAOVERLAPPED OVERLAPPED
696typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
697
698#define WSA_IO_PENDING (ERROR_IO_PENDING)
699#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
700#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
701#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
702#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
703#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
704
705#define WSA_INVALID_EVENT ((WSAEVENT)NULL)
706#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
707#define WSA_WAIT_FAILED ((DWORD)-1L)
708#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
709#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
710#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
711#define WSA_INFINITE (INFINITE)
712
713typedef struct _WSABUF {
714 unsigned long len;
715 char *buf;
716} WSABUF, *LPWSABUF;
717
718typedef enum
719{
720 BestEffortService,
721 ControlledLoadService,
722 PredictiveService,
723 GuaranteedDelayService,
724 GuaranteedService
725} GUARANTEE;
726
727/* TODO: FLOWSPEC and related definitions belong in qos.h */
728
729/*
730 Windows Sockets 2 Application Programming Interface,
731 revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
732 and the elements of _flowspec, but the type uint32 is not defined
733 or used anywhere else in the w32api. For now, just use
734 unsigned int, which is 32 bits on _WIN32 and _WIN64.
735*/
736
737typedef unsigned int SERVICETYPE;
738typedef struct _flowspec
739{
740 unsigned int TokenRate;
741 unsigned int TokenBucketSize;
742 unsigned int PeakBandwidth;
743 unsigned int Latency;
744 unsigned int DelayVariation;
745 SERVICETYPE ServiceType;
746 unsigned int MaxSduSize;
747 unsigned int MinimumPolicedSize;
748 } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;
749
750typedef struct _QualityOfService
751{
752 FLOWSPEC SendingFlowspec;
753 FLOWSPEC ReceivingFlowspec;
754 WSABUF ProviderSpecific;
755} QOS, *LPQOS;
756
757#define CF_ACCEPT 0x0000
758#define CF_REJECT 0x0001
759#define CF_DEFER 0x0002
760#define SD_RECEIVE 0x00
761#define SD_SEND 0x01
762#define SD_BOTH 0x02
763typedef unsigned int GROUP;
764
765#define SG_UNCONSTRAINED_GROUP 0x01
766#define SG_CONSTRAINED_GROUP 0x02
767typedef struct _WSANETWORKEVENTS {
768 long lNetworkEvents;
769 int iErrorCode[FD_MAX_EVENTS];
770} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
771
772#define MAX_PROTOCOL_CHAIN 7
773
774#define BASE_PROTOCOL 1
775#define LAYERED_PROTOCOL 0
776
777typedef enum _WSAESETSERVICEOP
778{
779 RNRSERVICE_REGISTER=0,
780 RNRSERVICE_DEREGISTER,
781 RNRSERVICE_DELETE
782} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
783
784typedef struct _AFPROTOCOLS {
785 INT iAddressFamily;
786 INT iProtocol;
787} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
788
789typedef enum _WSAEcomparator
790{
791 COMP_EQUAL = 0,
792 COMP_NOTLESS
793} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
794
795typedef struct _WSAVersion
796{
797 DWORD dwVersion;
798 WSAECOMPARATOR ecHow;
799} WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
800
801#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */
802#define __CSADDR_T_DEFINED
803typedef struct _SOCKET_ADDRESS {
804 LPSOCKADDR lpSockaddr;
805 INT iSockaddrLength;
806} SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
807typedef struct _CSADDR_INFO {
808 SOCKET_ADDRESS LocalAddr;
809 SOCKET_ADDRESS RemoteAddr;
810 INT iSocketType;
811 INT iProtocol;
812} CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
813#endif
814
815typedef struct _SOCKET_ADDRESS_LIST {
816 INT iAddressCount;
817 SOCKET_ADDRESS Address[1];
818} SOCKET_ADDRESS_LIST, * LPSOCKET_ADDRESS_LIST;
819
820#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
821#define __BLOB_T_DEFINED
822typedef struct _BLOB {
823 ULONG cbSize;
824 BYTE *pBlobData;
825} BLOB,*PBLOB,*LPBLOB;
826#endif
827
828typedef struct _WSAQuerySetA
829{
830 DWORD dwSize;
831 LPSTR lpszServiceInstanceName;
832 LPGUID lpServiceClassId;
833 LPWSAVERSION lpVersion;
834 LPSTR lpszComment;
835 DWORD dwNameSpace;
836 LPGUID lpNSProviderId;
837 LPSTR lpszContext;
838 DWORD dwNumberOfProtocols;
839 LPAFPROTOCOLS lpafpProtocols;
840 LPSTR lpszQueryString;
841 DWORD dwNumberOfCsAddrs;
842 LPCSADDR_INFO lpcsaBuffer;
843 DWORD dwOutputFlags;
844 LPBLOB lpBlob;
845} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
846
847typedef struct _WSAQuerySetW
848{
849 DWORD dwSize;
850 LPWSTR lpszServiceInstanceName;
851 LPGUID lpServiceClassId;
852 LPWSAVERSION lpVersion;
853 LPWSTR lpszComment;
854 DWORD dwNameSpace;
855 LPGUID lpNSProviderId;
856 LPWSTR lpszContext;
857 DWORD dwNumberOfProtocols;
858 LPAFPROTOCOLS lpafpProtocols;
859 LPWSTR lpszQueryString;
860 DWORD dwNumberOfCsAddrs;
861 LPCSADDR_INFO lpcsaBuffer;
862 DWORD dwOutputFlags;
863 LPBLOB lpBlob;
864} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
865
866#ifdef UNICODE
867typedef WSAQUERYSETW WSAQUERYSET;
868typedef PWSAQUERYSETW PWSAQUERYSET;
869typedef LPWSAQUERYSETW LPWSAQUERYSET;
870#else
871typedef WSAQUERYSETA WSAQUERYSET;
872typedef PWSAQUERYSETA PWSAQUERYSET;
873typedef LPWSAQUERYSETA LPWSAQUERYSET;
874#endif
875
876#define LUP_DEEP 0x0001
877#define LUP_CONTAINERS 0x0002
878#define LUP_NOCONTAINERS 0x0004
879#define LUP_NEAREST 0x0008
880#define LUP_RETURN_NAME 0x0010
881#define LUP_RETURN_TYPE 0x0020
882#define LUP_RETURN_VERSION 0x0040
883#define LUP_RETURN_COMMENT 0x0080
884#define LUP_RETURN_ADDR 0x0100
885#define LUP_RETURN_BLOB 0x0200
886#define LUP_RETURN_ALIASES 0x0400
887#define LUP_RETURN_QUERY_STRING 0x0800
888#define LUP_RETURN_ALL 0x0FF0
889#define LUP_RES_SERVICE 0x8000
890#define LUP_FLUSHCACHE 0x1000
891#define LUP_FLUSHPREVIOUS 0x2000
892
893typedef struct _WSANSClassInfoA
894{
895 LPSTR lpszName;
896 DWORD dwNameSpace;
897 DWORD dwValueType;
898 DWORD dwValueSize;
899 LPVOID lpValue;
900} WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
901
902typedef struct _WSANSClassInfoW
903{
904 LPWSTR lpszName;
905 DWORD dwNameSpace;
906 DWORD dwValueType;
907 DWORD dwValueSize;
908 LPVOID lpValue;
909} WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
910
911#ifdef UNICODE
912typedef WSANSCLASSINFOW WSANSCLASSINFO;
913typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
914typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
915#else
916typedef WSANSCLASSINFOA WSANSCLASSINFO;
917typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
918typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
919#endif
920
921typedef struct _WSAServiceClassInfoA
922{
923 LPGUID lpServiceClassId;
924 LPSTR lpszServiceClassName;
925 DWORD dwCount;
926 LPWSANSCLASSINFOA lpClassInfos;
927} WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
928
929typedef struct _WSAServiceClassInfoW
930{
931 LPGUID lpServiceClassId;
932 LPWSTR lpszServiceClassName;
933 DWORD dwCount;
934 LPWSANSCLASSINFOW lpClassInfos;
935} WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
936
937#ifdef UNICODE
938typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
939typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
940typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
941#else
942typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
943typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
944typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
945#endif
946
947typedef struct _WSANAMESPACE_INFOA {
948 GUID NSProviderId;
949 DWORD dwNameSpace;
950 BOOL fActive;
951 DWORD dwVersion;
952 LPSTR lpszIdentifier;
953} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
954
955typedef struct _WSANAMESPACE_INFOW {
956 GUID NSProviderId;
957 DWORD dwNameSpace;
958 BOOL fActive;
959 DWORD dwVersion;
960 LPWSTR lpszIdentifier;
961} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
962
963#ifdef UNICODE
964typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
965typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
966typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
967#else
968typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
969typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
970typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
971#endif
972
973typedef struct _WSAPROTOCOLCHAIN {
974 int ChainLen;
975 DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
976} WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
977
978#define WSAPROTOCOL_LEN 255
979
980typedef struct _WSAPROTOCOL_INFOA {
981 DWORD dwServiceFlags1;
982 DWORD dwServiceFlags2;
983 DWORD dwServiceFlags3;
984 DWORD dwServiceFlags4;
985 DWORD dwProviderFlags;
986 GUID ProviderId;
987 DWORD dwCatalogEntryId;
988 WSAPROTOCOLCHAIN ProtocolChain;
989 int iVersion;
990 int iAddressFamily;
991 int iMaxSockAddr;
992 int iMinSockAddr;
993 int iSocketType;
994 int iProtocol;
995 int iProtocolMaxOffset;
996 int iNetworkByteOrder;
997 int iSecurityScheme;
998 DWORD dwMessageSize;
999 DWORD dwProviderReserved;
1000 CHAR szProtocol[WSAPROTOCOL_LEN+1];
1001} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
1002
1003typedef struct _WSAPROTOCOL_INFOW {
1004 DWORD dwServiceFlags1;
1005 DWORD dwServiceFlags2;
1006 DWORD dwServiceFlags3;
1007 DWORD dwServiceFlags4;
1008 DWORD dwProviderFlags;
1009 GUID ProviderId;
1010 DWORD dwCatalogEntryId;
1011 WSAPROTOCOLCHAIN ProtocolChain;
1012 int iVersion;
1013 int iAddressFamily;
1014 int iMaxSockAddr;
1015 int iMinSockAddr;
1016 int iSocketType;
1017 int iProtocol;
1018 int iProtocolMaxOffset;
1019 int iNetworkByteOrder;
1020 int iSecurityScheme;
1021 DWORD dwMessageSize;
1022 DWORD dwProviderReserved;
1023 WCHAR szProtocol[WSAPROTOCOL_LEN+1];
1024} WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW;
1025
1026typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
1027typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
1028
1029
1030#ifdef UNICODE
1031typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
1032typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
1033#else
1034typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
1035typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
1036#endif
1037
1038/* Needed for XP & .NET Server function WSANSPIoctl. */
1039typedef enum _WSACOMPLETIONTYPE {
1040 NSP_NOTIFY_IMMEDIATELY = 0,
1041 NSP_NOTIFY_HWND,
1042 NSP_NOTIFY_EVENT,
1043 NSP_NOTIFY_PORT,
1044 NSP_NOTIFY_APC
1045} WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, * LPWSACOMPLETIONTYPE;
1046typedef struct _WSACOMPLETION {
1047 WSACOMPLETIONTYPE Type;
1048 union {
1049 struct {
1050 HWND hWnd;
1051 UINT uMsg;
1052 WPARAM context;
1053 } WindowMessage;
1054 struct {
1055 LPWSAOVERLAPPED lpOverlapped;
1056 } Event;
1057 struct {
1058 LPWSAOVERLAPPED lpOverlapped;
1059 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
1060 } Apc;
1061 struct {
1062 LPWSAOVERLAPPED lpOverlapped;
1063 HANDLE hPort;
1064 ULONG_PTR Key;
1065 } Port;
1066 } Parameters;
1067} WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
1068
1069#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
1070#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
1071#define PFL_HIDDEN 0x00000004
1072#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
1073#define XP1_CONNECTIONLESS 0x00000001
1074#define XP1_GUARANTEED_DELIVERY 0x00000002
1075#define XP1_GUARANTEED_ORDER 0x00000004
1076#define XP1_MESSAGE_ORIENTED 0x00000008
1077#define XP1_PSEUDO_STREAM 0x00000010
1078#define XP1_GRACEFUL_CLOSE 0x00000020
1079#define XP1_EXPEDITED_DATA 0x00000040
1080#define XP1_CONNECT_DATA 0x00000080
1081#define XP1_DISCONNECT_DATA 0x00000100
1082#define XP1_SUPPORT_BROADCAST 0x00000200
1083#define XP1_SUPPORT_MULTIPOINT 0x00000400
1084#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
1085#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
1086#define XP1_QOS_SUPPORTED 0x00002000
1087#define XP1_INTERRUPT 0x00004000
1088#define XP1_UNI_SEND 0x00008000
1089#define XP1_UNI_RECV 0x00010000
1090#define XP1_IFS_HANDLES 0x00020000
1091#define XP1_PARTIAL_MESSAGE 0x00040000
1092
1093#define BIGENDIAN 0x0000
1094#define LITTLEENDIAN 0x0001
1095
1096#define SECURITY_PROTOCOL_NONE 0x0000
1097#define JL_SENDER_ONLY 0x01
1098#define JL_RECEIVER_ONLY 0x02
1099#define JL_BOTH 0x04
1100#define WSA_FLAG_OVERLAPPED 0x01
1101#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
1102#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
1103#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
1104#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
1105#define IOC_UNIX 0x00000000
1106#define IOC_WS2 0x08000000
1107#define IOC_PROTOCOL 0x10000000
1108#define IOC_VENDOR 0x18000000
1109
1110#define _WSAIO(x,y) (IOC_VOID|(x)|(y))
1111#define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
1112#define _WSAIOW(x,y) (IOC_IN|(x)|(y))
1113#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
1114
1115#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
1116#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
1117#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
1118#define SIO_FLUSH _WSAIO(IOC_WS2,4)
1119#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
1120#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
1121#define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
1122#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
1123#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
1124#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
1125#define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
1126#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
1127#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
1128#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
1129#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
1130#define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22)
1131#define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23)
1132#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
1133#define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
1134
1135#define TH_NETDEV 0x00000001
1136#define TH_TAPI 0x00000002
1137
1138SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1139INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1140INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1141BOOL WINAPI WSACloseEvent(WSAEVENT);
1142int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1143WSAEVENT WINAPI WSACreateEvent(void);
1144int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1145int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1146INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
1147INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
1148int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1149int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1150int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1151int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long);
1152BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1153BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
1154INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1155INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1156INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
1157INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
1158int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *);
1159int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *);
1160INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
1161INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
1162int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1163SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1164INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
1165INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE);
1166INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1167INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1168INT WINAPI WSALookupServiceEnd(HANDLE);
1169int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */
1170int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *);
1171int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *);
1172int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1173int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF);
1174int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1175INT WINAPI WSARemoveServiceClass(LPGUID);
1176BOOL WINAPI WSAResetEvent(WSAEVENT);
1177int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1178int WINAPI WSASendDisconnect(SOCKET, LPWSABUF);
1179int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1180BOOL WINAPI WSASetEvent(WSAEVENT);
1181INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1182INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1183SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1184SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1185INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1186INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1187DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1188typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
1189typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
1190typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
1191typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
1192typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
1193typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
1194typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
1195typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
1196typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD, LPWSANAMESPACE_INFOA);
1197typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD, LPWSANAMESPACE_INFOW);
1198typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
1199typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
1200typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
1201typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET, WSAEVENT, long);
1202typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
1203typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME)(SOCKET, LPWSABUF, LPQOS);
1204typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
1205typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
1206typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID, LPSTR, LPDWORD);
1207typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID, LPWSTR, LPDWORD);
1208typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET, unsigned long, unsigned long *);
1209typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET, unsigned short, unsigned short *);
1210typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
1211typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
1212typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1213typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
1214typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA, DWORD, LPHANDLE);
1215typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW, DWORD, LPHANDLE);
1216typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
1217typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
1218typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE);
1219typedef int (WINAPI *LPFN_WSANSPIoctl)(HANDLE, DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
1220typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET, unsigned long, unsigned long *);
1221typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET, unsigned short, unsigned short *);
1222typedef int (WINAPI *LPFN_WSARECV)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1223typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET, LPWSABUF);
1224typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1225typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID);
1226typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
1227typedef int (WINAPI *LPFN_WSASEND)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1228typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET, LPWSABUF);
1229typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
1230typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
1231typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
1232typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
1233typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
1234typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
1235typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
1236typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
1237typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
1238
1239#ifdef UNICODE
1240#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1241#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1242#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1243#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1244#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1245#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1246#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1247#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1248#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1249#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1250#define LPFN_WSASOCKET LPFN_WSASOCKETW
1251#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1252#define WSAAddressToString WSAAddressToStringW
1253#define WSADuplicateSocket WSADuplicateSocketW
1254#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
1255#define WSAEnumProtocols WSAEnumProtocolsW
1256#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
1257#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
1258#define WSASetService WSASetServiceW
1259#define WSASocket WSASocketW
1260#define WSAStringToAddress WSAStringToAddressW
1261#define WSALookupServiceBegin WSALookupServiceBeginW
1262#define WSALookupServiceNext WSALookupServiceNextW
1263#define WSAInstallServiceClass WSAInstallServiceClassW
1264#else
1265#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1266#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1267#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1268#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1269#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1270#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1271#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1272#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1273#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1274#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1275#define LPFN_WSASOCKET LPFN_WSASOCKETA
1276#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1277#define WSAAddressToString WSAAddressToStringA
1278#define WSADuplicateSocket WSADuplicateSocketA
1279#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
1280#define WSAEnumProtocols WSAEnumProtocolsA
1281#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
1282#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
1283#define WSAInstallServiceClass WSAInstallServiceClassA
1284#define WSALookupServiceBegin WSALookupServiceBeginA
1285#define WSALookupServiceNext WSALookupServiceNextA
1286#define WSASocket WSASocketA
1287#define WSAStringToAddress WSAStringToAddressA
1288#define WSASetService WSASetServiceA
1289#endif
1290
1291#ifdef __cplusplus
1292}
1293#endif
1294#endif
Note: See TracBrowser for help on using the repository browser.