History

win32/include/winsock2.h (look previous commit)

seyko committed 11 years ago

Commit 7b96ddd1 parent 351e2ec1 file · +1290 −0Browse files

Unified · Split

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

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t