[PSDK]
[reactos.git] / include / psdk / winsock2.h
1 #pragma once
2
3 #if !(defined _WINSOCK2API_ || defined _WINSOCK_H)
4 #define _WINSOCK2API_
5 #define _WINSOCKAPI_ /* to prevent later inclusion of winsock.h */
6
7 #define _GNU_H_WINDOWS32_SOCKETS
8
9 #if (!defined(_WIN64) && !defined(WIN32))
10 #include <pshpack4.h>
11 #define _NEED_POPPACK
12 #endif
13
14 #ifndef INCL_WINSOCK_API_PROTOTYPES
15 #define INCL_WINSOCK_API_PROTOTYPES 1
16 #endif
17
18 #ifndef INCL_WINSOCK_API_TYPEDEFS
19 #define INCL_WINSOCK_API_TYPEDEFS 0
20 #endif
21
22 #ifndef _INC_WINDOWS
23 #include <windows.h>
24 #endif
25
26 #if !defined(MAKEWORD)
27 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
28 #endif
29
30 #ifndef WINSOCK_VERSION
31 #define WINSOCK_VERSION MAKEWORD(2,2)
32 #endif
33
34 #ifndef WINSOCK_API_LINKAGE
35 #ifdef DECLSPEC_IMPORT
36 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
37 #else
38 #define WINSOCK_API_LINKAGE
39 #endif
40 #endif
41
42 #ifndef _M_AMD64
43 #if !defined(__ROS_LONG64__)
44 #ifdef __WINESRC__
45 #define __ROS_LONG64__
46 #endif
47 #endif
48 #endif
49
50 #ifdef __cplusplus
51 extern "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 */
57 typedef unsigned char u_char;
58 typedef unsigned short u_short;
59 typedef unsigned int u_int;
60 #ifndef __ROS_LONG64__
61 typedef unsigned long u_long;
62 #else
63 typedef unsigned int u_long;
64 #endif
65 #define _BSDTYPES_DEFINED
66 #endif /* ! def _BSDTYPES_DEFINED */
67
68 #if(_WIN32_WINNT >= 0x0501)
69 typedef unsigned __int64 u_int64;
70 #endif /* (_WIN32_WINNT >= 0x0501) */
71
72 #include <ws2def.h>
73
74 typedef UINT_PTR SOCKET;
75
76 #ifndef FD_SETSIZE
77 #define FD_SETSIZE 64
78 #endif
79
80 #ifndef _SYS_TYPES_FD_SET
81
82 /* fd_set may be defined by the newlib <sys/types.h>
83 * if __USE_W32_SOCKETS not defined.
84 */
85 #ifdef fd_set
86 #undef fd_set
87 #endif
88
89 typedef struct fd_set {
90 u_int fd_count;
91 SOCKET fd_array[FD_SETSIZE];
92 } fd_set;
93
94 extern int PASCAL FAR __WSAFDIsSet(SOCKET,fd_set FAR*);
95
96 #ifndef FD_CLR
97 #define FD_CLR(fd, set) do { \
98 u_int __i; \
99 for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count ; __i++) { \
100 if (((fd_set FAR*)(set))->fd_array[__i] == fd) { \
101 while (__i < ((fd_set FAR*)(set))->fd_count-1) { \
102 ((fd_set FAR*)(set))->fd_array[__i] = \
103 ((fd_set FAR*)(set))->fd_array[__i+1]; \
104 __i++; \
105 } \
106 ((fd_set FAR*)(set))->fd_count--; \
107 break; \
108 } \
109 } \
110 } while(0)
111 #endif
112
113 #ifndef FD_SET
114 /* this differs from the define in winsock.h and in cygwin sys/types.h */
115 #define FD_SET(fd, set) do { \
116 u_int __i; \
117 for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
118 if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
119 break; \
120 } \
121 } \
122 if (__i == ((fd_set FAR *)(set))->fd_count) { \
123 if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
124 ((fd_set FAR *)(set))->fd_array[__i] = (fd); \
125 ((fd_set FAR *)(set))->fd_count++; \
126 } \
127 } \
128 } while(0)
129 #endif
130
131 #ifndef FD_ZERO
132 #define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count=0)
133 #endif
134
135 #ifndef FD_ISSET
136 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR*)(set))
137 #endif
138
139 #elif !defined (USE_SYS_TYPES_FD_SET)
140 #warning "fd_set and associated macros have been defined in sys/types. \
141 This may cause runtime problems with W32 sockets"
142 #endif /* ndef _SYS_TYPES_FD_SET */
143
144 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
145
146 #ifndef _TIMEVAL_DEFINED
147
148 /* also in sys/time.h */
149 #define _TIMEVAL_DEFINED
150 #define _STRUCT_TIMEVAL
151 struct timeval {
152 LONG tv_sec;
153 LONG tv_usec;
154 };
155
156 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
157
158 #define timercmp(tvp, uvp, cmp) \
159 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
160 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
161 ((tvp)->tv_usec cmp (uvp)->tv_usec))
162
163 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
164
165 #endif /* _TIMEVAL_DEFINED */
166
167 #define h_addr h_addr_list[0]
168
169 struct hostent {
170 char *h_name;
171 char **h_aliases;
172 short h_addrtype;
173 short h_length;
174 char **h_addr_list;
175 };
176
177 struct linger {
178 u_short l_onoff;
179 u_short l_linger;
180 };
181
182 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
183 #define _IOR(x,y,t) (IOC_OUT|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
184 #define _IOW(x,y,t) (IOC_IN|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
185 #define FIONBIO _IOW('f', 126, u_long)
186
187 struct netent {
188 char * n_name;
189 char **n_aliases;
190 short n_addrtype;
191 u_long n_net;
192 };
193
194 struct servent {
195 char *s_name;
196 char **s_aliases;
197 #ifdef _WIN64
198 char *s_proto;
199 short s_port;
200 #else
201 short s_port;
202 char *s_proto;
203 };
204
205 struct protoent {
206 char *p_name;
207 char **p_aliases;
208 short p_proto;
209 };
210
211 #define SO_CONDITIONAL_ACCEPT 0x3002
212
213 #define SOMAXCONN 0x7fffffff
214 #define MSG_OOB 1
215 #define MSG_PEEK 2
216 #define MSG_DONTROUTE 4
217 #if(_WIN32_WINNT >= 0x0502)
218 #define MSG_WAITALL 8
219 #endif
220
221 #define h_errno WSAGetLastError()
222 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
223 #define TRY_AGAIN WSATRY_AGAIN
224 #define NO_RECOVERY WSANO_RECOVERY
225 #define NO_DATA WSANO_DATA
226 #define NO_ADDRESS WSANO_ADDRESS
227
228 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
229
230 #define IOCPARM_MASK 0x7f
231 #define IOC_VOID 0x20000000
232 #define IOC_OUT 0x40000000
233 #define IOC_IN 0x80000000
234 #define IOC_INOUT (IOC_IN|IOC_OUT)
235
236 #define FIONREAD _IOR('f', 127, u_long)
237 #define FIOASYNC _IOW('f', 125, u_long)
238 #define SIOCSHIWAT _IOW('s', 0, u_long)
239 #define SIOCGHIWAT _IOR('s', 1, u_long)
240 #define SIOCSLOWAT _IOW('s', 2, u_long)
241 #define SIOCGLOWAT _IOR('s', 3, u_long)
242 #define SIOCATMARK _IOR('s', 7, u_long)
243
244 #define IPPORT_ECHO 7
245 #define IPPORT_DISCARD 9
246 #define IPPORT_SYSTAT 11
247 #define IPPORT_DAYTIME 13
248 #define IPPORT_NETSTAT 15
249 #define IPPORT_FTP 21
250 #define IPPORT_TELNET 23
251 #define IPPORT_SMTP 25
252 #define IPPORT_TIMESERVER 37
253 #define IPPORT_NAMESERVER 42
254 #define IPPORT_WHOIS 43
255 #define IPPORT_MTP 57
256 #define IPPORT_TFTP 69
257 #define IPPORT_RJE 77
258 #define IPPORT_FINGER 79
259 #define IPPORT_TTYLINK 87
260 #define IPPORT_SUPDUP 95
261 #define IPPORT_EXECSERVER 512
262 #define IPPORT_LOGINSERVER 513
263 #define IPPORT_CMDSERVER 514
264 #define IPPORT_EFSSERVER 520
265 #define IPPORT_BIFFUDP 512
266 #define IPPORT_WHOSERVER 513
267 #define IPPORT_ROUTESERVER 520
268 #define IPPORT_RESERVED 1024
269 #define IMPLINK_IP 155
270 #define IMPLINK_LOWEXPER 156
271 #define IMPLINK_HIGHEXPER 158
272
273 #define ADDR_ANY INADDR_ANY
274
275 #define WSADESCRIPTION_LEN 256
276 #define WSASYS_STATUS_LEN 128
277
278 #define INVALID_SOCKET (SOCKET)(~0)
279
280 #define SOCKET_ERROR (-1)
281
282 #define FROM_PROTOCOL_INFO (-1)
283
284 #define SOCK_STREAM 1
285 #define SOCK_DGRAM 2
286 #define SOCK_RAW 3
287 #define SOCK_RDM 4
288 #define SOCK_SEQPACKET 5
289
290 #define SO_DEBUG 1
291 #define SO_ACCEPTCONN 2
292 #define SO_REUSEADDR 4
293 #define SO_KEEPALIVE 8
294 #define SO_DONTROUTE 16
295 #define SO_BROADCAST 32
296 #define SO_USELOOPBACK 64
297 #define SO_LINGER 128
298 #define SO_OOBINLINE 256
299 #define SO_DONTLINGER (int)(~SO_LINGER)
300 #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR))
301
302 #define SO_SNDBUF 0x1001
303 #define SO_RCVBUF 0x1002
304 #define SO_SNDLOWAT 0x1003
305 #define SO_RCVLOWAT 0x1004
306 #define SO_SNDTIMEO 0x1005
307 #define SO_RCVTIMEO 0x1006
308 #define SO_ERROR 0x1007
309 #define SO_TYPE 0x1008
310
311 #define SO_GROUP_ID 0x2001
312 #define SO_GROUP_PRIORITY 0x2002
313 #define SO_MAX_MSG_SIZE 0x2003
314 #define SO_PROTOCOL_INFOA 0x2004
315 #define SO_PROTOCOL_INFOW 0x2005
316 #ifdef UNICODE
317 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
318 #else
319 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
320 #endif
321 #define PVD_CONFIG 0x3001
322
323 #define PF_UNSPEC AF_UNSPEC
324 #define PF_UNIX AF_UNIX
325 #define PF_INET AF_INET
326 #define PF_IMPLINK AF_IMPLINK
327 #define PF_PUP AF_PUP
328 #define PF_CHAOS AF_CHAOS
329 #define PF_NS AF_NS
330 #define PF_IPX AF_IPX
331 #define PF_ISO AF_ISO
332 #define PF_OSI AF_OSI
333 #define PF_ECMA AF_ECMA
334 #define PF_DATAKIT AF_DATAKIT
335 #define PF_CCITT AF_CCITT
336 #define PF_SNA AF_SNA
337 #define PF_DECnet AF_DECnet
338 #define PF_DLI AF_DLI
339 #define PF_LAT AF_LAT
340 #define PF_HYLINK AF_HYLINK
341 #define PF_APPLETALK AF_APPLETALK
342 #define PF_VOICEVIEW AF_VOICEVIEW
343 #define PF_FIREFOX AF_FIREFOX
344 #define PF_UNKNOWN1 AF_UNKNOWN1
345 #define PF_BAN AF_BAN
346 #define PF_ATM AF_ATM
347 #define PF_INET6 AF_INET6
348 #if(_WIN32_WINNT >= 0x0600)
349 #define PF_BTH AF_BTH
350 #endif
351 #define PF_MAX AF_MAX
352
353 #define SOL_SOCKET 0xffff
354
355 #define MSG_PARTIAL 0x8000
356 #define MSG_INTERRUPT 0x10
357 #define MSG_MAXIOVLEN 16
358
359 #define MAXGETHOSTSTRUCT 1024
360
361 #define FD_READ_BIT 0
362 #define FD_READ (1 << FD_READ_BIT)
363 #define FD_WRITE_BIT 1
364 #define FD_WRITE (1 << FD_WRITE_BIT)
365 #define FD_OOB_BIT 2
366 #define FD_OOB (1 << FD_OOB_BIT)
367 #define FD_ACCEPT_BIT 3
368 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
369 #define FD_CONNECT_BIT 4
370 #define FD_CONNECT (1 << FD_CONNECT_BIT)
371 #define FD_CLOSE_BIT 5
372 #define FD_CLOSE (1 << FD_CLOSE_BIT)
373 #define FD_QOS_BIT 6
374 #define FD_QOS (1 << FD_QOS_BIT)
375 #define FD_GROUP_QOS_BIT 7
376 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
377 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
378 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
379 #define FD_ADDRESS_LIST_CHANGE_BIT 9
380 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
381 #define FD_MAX_EVENTS 10
382 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
383
384 #ifndef WSABASEERR
385
386 #define WSABASEERR 10000
387 #define WSAEINTR (WSABASEERR+4)
388 #define WSAEBADF (WSABASEERR+9)
389 #define WSAEACCES (WSABASEERR+13)
390 #define WSAEFAULT (WSABASEERR+14)
391 #define WSAEINVAL (WSABASEERR+22)
392 #define WSAEMFILE (WSABASEERR+24)
393 #define WSAEWOULDBLOCK (WSABASEERR+35)
394 #define WSAEINPROGRESS (WSABASEERR+36)
395 #define WSAEALREADY (WSABASEERR+37)
396 #define WSAENOTSOCK (WSABASEERR+38)
397 #define WSAEDESTADDRREQ (WSABASEERR+39)
398 #define WSAEMSGSIZE (WSABASEERR+40)
399 #define WSAEPROTOTYPE (WSABASEERR+41)
400 #define WSAENOPROTOOPT (WSABASEERR+42)
401 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
402 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
403 #define WSAEOPNOTSUPP (WSABASEERR+45)
404 #define WSAEPFNOSUPPORT (WSABASEERR+46)
405 #define WSAEAFNOSUPPORT (WSABASEERR+47)
406 #define WSAEADDRINUSE (WSABASEERR+48)
407 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
408 #define WSAENETDOWN (WSABASEERR+50)
409 #define WSAENETUNREACH (WSABASEERR+51)
410 #define WSAENETRESET (WSABASEERR+52)
411 #define WSAECONNABORTED (WSABASEERR+53)
412 #define WSAECONNRESET (WSABASEERR+54)
413 #define WSAENOBUFS (WSABASEERR+55)
414 #define WSAEISCONN (WSABASEERR+56)
415 #define WSAENOTCONN (WSABASEERR+57)
416 #define WSAESHUTDOWN (WSABASEERR+58)
417 #define WSAETOOMANYREFS (WSABASEERR+59)
418 #define WSAETIMEDOUT (WSABASEERR+60)
419 #define WSAECONNREFUSED (WSABASEERR+61)
420 #define WSAELOOP (WSABASEERR+62)
421 #define WSAENAMETOOLONG (WSABASEERR+63)
422 #define WSAEHOSTDOWN (WSABASEERR+64)
423 #define WSAEHOSTUNREACH (WSABASEERR+65)
424 #define WSAENOTEMPTY (WSABASEERR+66)
425 #define WSAEPROCLIM (WSABASEERR+67)
426 #define WSAEUSERS (WSABASEERR+68)
427 #define WSAEDQUOT (WSABASEERR+69)
428 #define WSAESTALE (WSABASEERR+70)
429 #define WSAEREMOTE (WSABASEERR+71)
430 #define WSASYSNOTREADY (WSABASEERR+91)
431 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
432 #define WSANOTINITIALISED (WSABASEERR+93)
433 #define WSAEDISCON (WSABASEERR+101)
434 #define WSAENOMORE (WSABASEERR+102)
435 #define WSAECANCELLED (WSABASEERR+103)
436 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
437 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
438 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
439 #define WSASYSCALLFAILURE (WSABASEERR+107)
440 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
441 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
442 #define WSA_E_NO_MORE (WSABASEERR+110)
443 #define WSA_E_CANCELLED (WSABASEERR+111)
444 #define WSAEREFUSED (WSABASEERR+112)
445 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
446 #define WSATRY_AGAIN (WSABASEERR+1002)
447 #define WSANO_RECOVERY (WSABASEERR+1003)
448 #define WSANO_DATA (WSABASEERR+1004)
449 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
450 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
451 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
452 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
453 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
454 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
455 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
456 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
457 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
458 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
459 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
460 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
461 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
462 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
463 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
464 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
465 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
466 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
467 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
468 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
469 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
470 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
471 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
472 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
473 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
474 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
475 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
476
477 #endif /* !WSABASEERR */
478
479 #define CF_ACCEPT 0x0000
480 #define CF_REJECT 0x0001
481 #define CF_DEFER 0x0002
482 #define SD_RECEIVE 0x00
483 #define SD_SEND 0x01
484 #define SD_BOTH 0x02
485
486 #define SG_UNCONSTRAINED_GROUP 0x01
487 #define SG_CONSTRAINED_GROUP 0x02
488
489 #define MAX_PROTOCOL_CHAIN 7
490
491 #define BASE_PROTOCOL 1
492 #define LAYERED_PROTOCOL 0
493
494 #define WSAPROTOCOL_LEN 255
495
496 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
497 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
498 #define PFL_HIDDEN 0x00000004
499 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
500 #define PFL_NETWORKDIRECT_PROVIDER 0x00000010
501
502 #define XP1_CONNECTIONLESS 0x00000001
503 #define XP1_GUARANTEED_DELIVERY 0x00000002
504 #define XP1_GUARANTEED_ORDER 0x00000004
505 #define XP1_MESSAGE_ORIENTED 0x00000008
506 #define XP1_PSEUDO_STREAM 0x00000010
507 #define XP1_GRACEFUL_CLOSE 0x00000020
508 #define XP1_EXPEDITED_DATA 0x00000040
509 #define XP1_CONNECT_DATA 0x00000080
510 #define XP1_DISCONNECT_DATA 0x00000100
511 #define XP1_SUPPORT_BROADCAST 0x00000200
512 #define XP1_SUPPORT_MULTIPOINT 0x00000400
513 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
514 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000
515 #define XP1_QOS_SUPPORTED 0x00002000
516 #define XP1_INTERRUPT 0x00004000
517 #define XP1_UNI_SEND 0x00008000
518 #define XP1_UNI_RECV 0x00010000
519 #define XP1_IFS_HANDLES 0x00020000
520 #define XP1_PARTIAL_MESSAGE 0x00040000
521 #define XP1_SAN_SUPPORT_SDP 0x00080000
522
523 #define BIGENDIAN 0x0000
524 #define LITTLEENDIAN 0x0001
525
526 #define SECURITY_PROTOCOL_NONE 0x0000
527
528 #define JL_SENDER_ONLY 0x01
529 #define JL_RECEIVER_ONLY 0x02
530 #define JL_BOTH 0x04
531
532 #define WSA_FLAG_OVERLAPPED 0x01
533 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
534 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
535 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
536 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
537 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
538
539 #define TH_NETDEV 0x00000001
540 #define TH_TAPI 0x00000002
541
542 #define SERVICE_MULTIPLE 0x00000001
543
544 #define NS_ALL 0
545 #define NS_SAP 1
546 #define NS_NDS 2
547 #define NS_PEER_BROWSE 3
548 #define NS_SLP 5
549 #define NS_DHCP 6
550 #define NS_TCPIP_LOCAL 10
551 #define NS_TCPIP_HOSTS 11
552 #define NS_DNS 12
553 #define NS_NETBT 13
554 #define NS_WINS 14
555 #if(_WIN32_WINNT >= 0x0501)
556 #define NS_NLA 15
557 #endif
558 #if(_WIN32_WINNT >= 0x0600)
559 #define NS_BTH 16
560 #endif
561 #define NS_NBP 20
562 #define NS_MS 30
563 #define NS_STDA 31
564 #define NS_NTDS 32
565 #if(_WIN32_WINNT >= 0x0600)
566 #define NS_EMAIL 37
567 #define NS_PNRPNAME 38
568 #define NS_PNRPCLOUD 39
569 #endif
570 #define NS_X500 40
571 #define NS_NIS 41
572 #define NS_NISPLUS 42
573 #define NS_WRQ 50
574 #define NS_NETDES 60
575
576 #define RES_UNUSED_1 0x00000001
577 #define RES_FLUSH_CACHE 0x00000002
578 #ifndef RES_SERVICE
579 #define RES_SERVICE 0x00000004
580 #endif
581
582 #define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
583 #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
584 #define SERVICE_TYPE_VALUE_SAPIDA "SapId"
585 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
586
587 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
588 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
589
590 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
591 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
592
593 #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
594 #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
595
596 #ifdef UNICODE
597 #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
598 #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
599 #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
600 #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
601 #else
602 #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
603 #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
604 #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
605 #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
606 #endif
607
608 #define LUP_DEEP 0x0001
609 #define LUP_CONTAINERS 0x0002
610 #define LUP_NOCONTAINERS 0x0004
611 #define LUP_NEAREST 0x0008
612 #define LUP_RETURN_NAME 0x0010
613 #define LUP_RETURN_TYPE 0x0020
614 #define LUP_RETURN_VERSION 0x0040
615 #define LUP_RETURN_COMMENT 0x0080
616 #define LUP_RETURN_ADDR 0x0100
617 #define LUP_RETURN_BLOB 0x0200
618 #define LUP_RETURN_ALIASES 0x0400
619 #define LUP_RETURN_QUERY_STRING 0x0800
620 #define LUP_RETURN_ALL 0x0FF0
621 #define LUP_RES_SERVICE 0x8000
622 #define LUP_FLUSHCACHE 0x1000
623 #define LUP_FLUSHPREVIOUS 0x2000
624 #define LUP_NON_AUTHORITATIVE 0x4000
625 #define LUP_SECURE 0x8000
626 #define LUP_RETURN_PREFERRED_NAMES 0x10000
627 #define LUP_ADDRCONFIG 0x00100000
628 #define LUP_DUAL_ADDR 0x00200000
629 #define LUP_FILESERVER 0x00400000
630
631 #define RESULT_IS_ALIAS 0x0001
632 #if(_WIN32_WINNT >= 0x0501)
633 #define RESULT_IS_ADDED 0x0010
634 #define RESULT_IS_CHANGED 0x0020
635 #define RESULT_IS_DELETED 0x0040
636 #endif
637
638
639
640
641
642
643 #ifndef s_addr
644
645 #define s_addr S_un.S_addr
646 #define s_host S_un.S_un_b.s_b2
647 #define s_net S_un.S_un_b.s_b1
648 #define s_imp S_un.S_un_w.s_w2
649 #define s_impno S_un.S_un_b.s_b4
650 #define s_lh S_un.S_un_b.s_b3
651
652 typedef struct in_addr {
653 union {
654 struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
655 struct { u_short s_w1,s_w2; } S_un_w;
656 u_long S_addr;
657 } S_un;
658 } IN_ADDR, *PIN_ADDR;
659
660 #endif /* s_addr */
661
662 typedef struct WSAData {
663 WORD wVersion;
664 WORD wHighVersion;
665 #ifdef _WIN64
666 unsigned short iMaxSockets;
667 unsigned short iMaxUdpDg;
668 char *lpVendorInfo;
669 char szDescription[WSADESCRIPTION_LEN+1];
670 char szSystemStatus[WSASYS_STATUS_LEN+1];
671 #else
672 char szDescription[WSADESCRIPTION_LEN+1];
673 char szSystemStatus[WSASYS_STATUS_LEN+1];
674 unsigned short iMaxSockets;
675 unsigned short iMaxUdpDg;
676 char *lpVendorInfo;
677 } WSADATA, FAR *LPWSADATA;
678
679 struct sockproto {
680 u_short sp_family;
681 u_short sp_protocol;
682 };
683
684 #ifdef WIN32
685
686 #define WSAAPI FAR PASCAL
687 #define WSAEVENT HANDLE
688 #define LPWSAEVENT LPHANDLE
689 #define WSAOVERLAPPED OVERLAPPED
690 typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
691 #define WSA_IO_PENDING (ERROR_IO_PENDING)
692 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
693 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
694 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
695 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
696 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
697 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
698 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
699 #define WSA_WAIT_FAILED ((DWORD)-1L)
700 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
701 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
702 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
703 #define WSA_INFINITE (INFINITE)
704
705 #else /* WIN16 */
706
707 #define WSAAPI FAR PASCAL
708 typedef DWORD WSAEVENT, FAR * LPWSAEVENT;
709
710 typedef struct _WSAOVERLAPPED {
711 DWORD Internal;
712 DWORD InternalHigh;
713 DWORD Offset;
714 DWORD OffsetHigh;
715 WSAEVENT hEvent;
716 } WSAOVERLAPPED, FAR * LPWSAOVERLAPPED;
717
718 #define WSA_IO_PENDING (WSAEWOULDBLOCK)
719 #define WSA_IO_INCOMPLETE (WSAEWOULDBLOCK)
720 #define WSA_INVALID_HANDLE (WSAENOTSOCK)
721 #define WSA_INVALID_PARAMETER (WSAEINVAL)
722 #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS)
723 #define WSA_OPERATION_ABORTED (WSAEINTR)
724
725 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
726 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
727 #define WSA_WAIT_FAILED ((DWORD)-1L)
728 #define WSA_WAIT_EVENT_0 ((DWORD)0)
729 #define WSA_WAIT_TIMEOUT ((DWORD)0x102L)
730 #define WSA_INFINITE ((DWORD)-1L)
731
732 #endif /* WIN32 */
733
734 #include <qos.h>
735
736 typedef struct _QualityOfService {
737 FLOWSPEC SendingFlowspec;
738 FLOWSPEC ReceivingFlowspec;
739 WSABUF ProviderSpecific;
740 } QOS, *LPQOS;
741
742 typedef unsigned int GROUP;
743
744 typedef struct _WSANETWORKEVENTS {
745 LONG lNetworkEvents;
746 int iErrorCode[FD_MAX_EVENTS];
747 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
748
749 #ifndef GUID_DEFINED
750 #include <guiddef.h>
751 #endif
752
753 typedef struct _WSAPROTOCOLCHAIN {
754 int ChainLen;
755 DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
756 } WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
757
758 typedef struct _WSAPROTOCOL_INFOA {
759 DWORD dwServiceFlags1;
760 DWORD dwServiceFlags2;
761 DWORD dwServiceFlags3;
762 DWORD dwServiceFlags4;
763 DWORD dwProviderFlags;
764 GUID ProviderId;
765 DWORD dwCatalogEntryId;
766 WSAPROTOCOLCHAIN ProtocolChain;
767 int iVersion;
768 int iAddressFamily;
769 int iMaxSockAddr;
770 int iMinSockAddr;
771 int iSocketType;
772 int iProtocol;
773 int iProtocolMaxOffset;
774 int iNetworkByteOrder;
775 int iSecurityScheme;
776 DWORD dwMessageSize;
777 DWORD dwProviderReserved;
778 CHAR szProtocol[WSAPROTOCOL_LEN+1];
779 } WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
780
781 typedef struct _WSAPROTOCOL_INFOW {
782 DWORD dwServiceFlags1;
783 DWORD dwServiceFlags2;
784 DWORD dwServiceFlags3;
785 DWORD dwServiceFlags4;
786 DWORD dwProviderFlags;
787 GUID ProviderId;
788 DWORD dwCatalogEntryId;
789 WSAPROTOCOLCHAIN ProtocolChain;
790 int iVersion;
791 int iAddressFamily;
792 int iMaxSockAddr;
793 int iMinSockAddr;
794 int iSocketType;
795 int iProtocol;
796 int iProtocolMaxOffset;
797 int iNetworkByteOrder;
798 int iSecurityScheme;
799 DWORD dwMessageSize;
800 DWORD dwProviderReserved;
801 WCHAR szProtocol[WSAPROTOCOL_LEN+1];
802 } WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW;
803
804 #ifdef UNICODE
805 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
806 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
807 #else
808 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
809 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
810 #endif
811
812 typedef int
813 (CALLBACK *LPCONDITIONPROC)(
814 IN LPWSABUF lpCallerId,
815 IN LPWSABUF lpCallerData,
816 IN OUT LPQOS lpSQOS,
817 IN OUT LPQOS lpGQOS,
818 IN LPWSABUF lpCalleeId,
819 IN LPWSABUF lpCalleeData,
820 OUT GROUP FAR *g,
821 IN DWORD_PTR dwCallbackData);
822
823 typedef void
824 (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
825 IN DWORD dwError,
826 IN DWORD cbTransferred,
827 IN LPWSAOVERLAPPED lpOverlapped,
828 IN DWORD dwFlags);
829
830 #if(_WIN32_WINNT >= 0x0501)
831
832 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
833
834 typedef enum _WSACOMPLETIONTYPE {
835 NSP_NOTIFY_IMMEDIATELY = 0,
836 NSP_NOTIFY_HWND,
837 NSP_NOTIFY_EVENT,
838 NSP_NOTIFY_PORT,
839 NSP_NOTIFY_APC
840 } WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, *LPWSACOMPLETIONTYPE;
841
842 typedef struct _WSACOMPLETION {
843 WSACOMPLETIONTYPE Type;
844 union {
845 struct {
846 HWND hWnd;
847 UINT uMsg;
848 WPARAM context;
849 } WindowMessage;
850 struct {
851 LPWSAOVERLAPPED lpOverlapped;
852 } Event;
853 struct {
854 LPWSAOVERLAPPED lpOverlapped;
855 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
856 } Apc;
857 struct {
858 LPWSAOVERLAPPED lpOverlapped;
859 HANDLE hPort;
860 ULONG_PTR Key;
861 } Port;
862 } Parameters;
863 } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
864
865 #endif /* (_WIN32_WINNT >= 0x0501) */
866
867 #ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
868 #define __BLOB_T_DEFINED
869 /* wine is using a diff define */
870 #ifndef _tagBLOB_DEFINED
871 #define _tagBLOB_DEFINED
872 #define _BLOB_DEFINED
873 #define _LPBLOB_DEFINED
874
875 typedef struct _BLOB {
876 ULONG cbSize;
877 BYTE *pBlobData;
878 } BLOB,*PBLOB,*LPBLOB;
879
880 #endif /* _tagBLOB_DEFINED */
881
882 #endif /* __BLOB_T_DEFINED */
883
884 typedef struct _AFPROTOCOLS {
885 INT iAddressFamily;
886 INT iProtocol;
887 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
888
889 typedef enum _WSAEcomparator {
890 COMP_EQUAL = 0,
891 COMP_NOTLESS
892 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
893
894 typedef struct _WSAVersion {
895 DWORD dwVersion;
896 WSAECOMPARATOR ecHow;
897 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
898
899 typedef struct _WSAQuerySetA {
900 DWORD dwSize;
901 LPSTR lpszServiceInstanceName;
902 LPGUID lpServiceClassId;
903 LPWSAVERSION lpVersion;
904 LPSTR lpszComment;
905 DWORD dwNameSpace;
906 LPGUID lpNSProviderId;
907 LPSTR lpszContext;
908 DWORD dwNumberOfProtocols;
909 LPAFPROTOCOLS lpafpProtocols;
910 LPSTR lpszQueryString;
911 DWORD dwNumberOfCsAddrs;
912 LPCSADDR_INFO lpcsaBuffer;
913 DWORD dwOutputFlags;
914 LPBLOB lpBlob;
915 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
916
917 typedef struct _WSAQuerySetW {
918 DWORD dwSize;
919 LPWSTR lpszServiceInstanceName;
920 LPGUID lpServiceClassId;
921 LPWSAVERSION lpVersion;
922 LPWSTR lpszComment;
923 DWORD dwNameSpace;
924 LPGUID lpNSProviderId;
925 LPWSTR lpszContext;
926 DWORD dwNumberOfProtocols;
927 LPAFPROTOCOLS lpafpProtocols;
928 LPWSTR lpszQueryString;
929 DWORD dwNumberOfCsAddrs;
930 LPCSADDR_INFO lpcsaBuffer;
931 DWORD dwOutputFlags;
932 LPBLOB lpBlob;
933 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
934
935 typedef struct _WSAQuerySet2A {
936 DWORD dwSize;
937 LPSTR lpszServiceInstanceName;
938 LPWSAVERSION lpVersion;
939 LPSTR lpszComment;
940 DWORD dwNameSpace;
941 LPGUID lpNSProviderId;
942 LPSTR lpszContext;
943 DWORD dwNumberOfProtocols;
944 LPAFPROTOCOLS lpafpProtocols;
945 LPSTR lpszQueryString;
946 DWORD dwNumberOfCsAddrs;
947 LPCSADDR_INFO lpcsaBuffer;
948 DWORD dwOutputFlags;
949 LPBLOB lpBlob;
950 } WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A;
951
952 typedef struct _WSAQuerySet2W {
953 DWORD dwSize;
954 LPWSTR lpszServiceInstanceName;
955 LPWSAVERSION lpVersion;
956 LPWSTR lpszComment;
957 DWORD dwNameSpace;
958 LPGUID lpNSProviderId;
959 LPWSTR lpszContext;
960 DWORD dwNumberOfProtocols;
961 LPAFPROTOCOLS lpafpProtocols;
962 LPWSTR lpszQueryString;
963 DWORD dwNumberOfCsAddrs;
964 LPCSADDR_INFO lpcsaBuffer;
965 DWORD dwOutputFlags;
966 LPBLOB lpBlob;
967 } WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W;
968
969 #ifdef UNICODE
970 typedef WSAQUERYSETW WSAQUERYSET;
971 typedef PWSAQUERYSETW PWSAQUERYSET;
972 typedef LPWSAQUERYSETW LPWSAQUERYSET;
973 typedef WSAQUERYSET2W WSAQUERYSET2;
974 typedef PWSAQUERYSET2W PWSAQUERYSET2;
975 typedef LPWSAQUERYSET2W LPWSAQUERYSET2;
976 #else
977 typedef WSAQUERYSETA WSAQUERYSET;
978 typedef PWSAQUERYSETA PWSAQUERYSET;
979 typedef LPWSAQUERYSETA LPWSAQUERYSET;
980 typedef WSAQUERYSET2A WSAQUERYSET2;
981 typedef PWSAQUERYSET2A PWSAQUERYSET2;
982 typedef LPWSAQUERYSET2A LPWSAQUERYSET2;
983 #endif /* UNICODE */
984
985 typedef enum _WSAESETSERVICEOP {
986 RNRSERVICE_REGISTER=0,
987 RNRSERVICE_DEREGISTER,
988 RNRSERVICE_DELETE
989 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
990
991 typedef struct _WSANSClassInfoA {
992 LPSTR lpszName;
993 DWORD dwNameSpace;
994 DWORD dwValueType;
995 DWORD dwValueSize;
996 LPVOID lpValue;
997 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
998
999 typedef struct _WSANSClassInfoW {
1000 LPWSTR lpszName;
1001 DWORD dwNameSpace;
1002 DWORD dwValueType;
1003 DWORD dwValueSize;
1004 LPVOID lpValue;
1005 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
1006
1007 #ifdef UNICODE
1008 typedef WSANSCLASSINFOW WSANSCLASSINFO;
1009 typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
1010 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
1011 #else
1012 typedef WSANSCLASSINFOA WSANSCLASSINFO;
1013 typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
1014 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
1015 #endif
1016
1017 typedef struct _WSAServiceClassInfoA {
1018 LPGUID lpServiceClassId;
1019 LPSTR lpszServiceClassName;
1020 DWORD dwCount;
1021 LPWSANSCLASSINFOA lpClassInfos;
1022 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
1023
1024 typedef struct _WSAServiceClassInfoW {
1025 LPGUID lpServiceClassId;
1026 LPWSTR lpszServiceClassName;
1027 DWORD dwCount;
1028 LPWSANSCLASSINFOW lpClassInfos;
1029 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
1030
1031 #ifdef UNICODE
1032 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
1033 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
1034 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
1035 #else
1036 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
1037 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
1038 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
1039 #endif
1040
1041 typedef struct _WSANAMESPACE_INFOA {
1042 GUID NSProviderId;
1043 DWORD dwNameSpace;
1044 BOOL fActive;
1045 DWORD dwVersion;
1046 LPSTR lpszIdentifier;
1047 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
1048
1049 typedef struct _WSANAMESPACE_INFOW {
1050 GUID NSProviderId;
1051 DWORD dwNameSpace;
1052 BOOL fActive;
1053 DWORD dwVersion;
1054 LPWSTR lpszIdentifier;
1055 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
1056
1057 typedef struct _WSANAMESPACE_INFOEXA {
1058 GUID NSProviderId;
1059 DWORD dwNameSpace;
1060 BOOL fActive;
1061 DWORD dwVersion;
1062 LPSTR lpszIdentifier;
1063 BLOB ProviderSpecific;
1064 } WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA;
1065
1066 typedef struct _WSANAMESPACE_INFOEXW {
1067 GUID NSProviderId;
1068 DWORD dwNameSpace;
1069 BOOL fActive;
1070 DWORD dwVersion;
1071 LPWSTR lpszIdentifier;
1072 BLOB ProviderSpecific;
1073 } WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW;
1074
1075 #ifdef UNICODE
1076 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
1077 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
1078 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
1079 typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX;
1080 typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX;
1081 typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX;
1082 #else
1083 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
1084 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
1085 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
1086 typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX;
1087 typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX;
1088 typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX;
1089 #endif /* UNICODE */
1090
1091 #if(_WIN32_WINNT >= 0x0600)
1092
1093 #define POLLRDNORM 0x0100
1094 #define POLLRDBAND 0x0200
1095 #define POLLIN (POLLRDNORM | POLLRDBAND)
1096 #define POLLPRI 0x0400
1097
1098 #define POLLWRNORM 0x0010
1099 #define POLLOUT (POLLWRNORM)
1100 #define POLLWRBAND 0x0020
1101
1102 #define POLLERR 0x0001
1103 #define POLLHUP 0x0002
1104 #define POLLNVAL 0x0004
1105
1106 typedef struct pollfd {
1107 SOCKET fd;
1108 SHORT events;
1109 SHORT revents;
1110 } WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
1111
1112 #endif /* (_WIN32_WINNT >= 0x0600) */
1113
1114 #if INCL_WINSOCK_API_TYPEDEFS
1115
1116 typedef SOCKET
1117 (WSAAPI *LPFN_ACCEPT)(
1118 IN SOCKET s,
1119 OUT struct sockaddr FAR *addr OPTIONAL,
1120 IN OUT int FAR *addrlen OPTIONAL);
1121
1122 typedef int
1123 (WSAAPI *LPFN_BIND)(
1124 IN SOCKET s,
1125 IN const struct sockaddr FAR *name,
1126 IN int namelen);
1127
1128 typedef int
1129 (WSAAPI *LPFN_CLOSESOCKET)(
1130 IN SOCKET s);
1131
1132 typedef int
1133 (WSAAPI *LPFN_CONNECT)(
1134 IN SOCKET s,
1135 IN const struct sockaddr FAR *name,
1136 IN int namelen);
1137
1138 typedef int
1139 (WSAAPI *LPFN_IOCTLSOCKET)(
1140 IN SOCKET s,
1141 IN long cmd,
1142 IN OUT u_long FAR *argp);
1143
1144 typedef int
1145 (WSAAPI *LPFN_GETPEERNAME)(
1146 IN SOCKET s,
1147 OUT struct sockaddr FAR *name,
1148 IN OUT int FAR *namelen);
1149
1150 typedef int
1151 (WSAAPI *LPFN_GETSOCKNAME)(
1152 IN SOCKET s,
1153 OUT struct sockaddr FAR *name,
1154 IN OUT int FAR *namelen);
1155
1156 typedef int
1157 (WSAAPI *LPFN_GETSOCKOPT)(
1158 IN SOCKET s,
1159 IN int level,
1160 IN int optname,
1161 OUT char FAR *optval,
1162 IN OUT int FAR *optlen);
1163
1164 typedef u_long
1165 (WSAAPI *LPFN_HTONL)(
1166 IN u_long hostlong);
1167
1168 typedef u_short
1169 (WSAAPI *LPFN_HTONS)(
1170 IN u_short hostshort);
1171
1172 typedef unsigned long
1173 (WSAAPI *LPFN_INET_ADDR)(
1174 IN const char FAR *cp);
1175
1176 typedef char FAR *
1177 (WSAAPI *LPFN_INET_NTOA)(
1178 IN struct in_addr in);
1179
1180 typedef int
1181 (WSAAPI *LPFN_LISTEN)(
1182 IN SOCKET s,
1183 IN int backlog);
1184
1185 typedef u_long
1186 (WSAAPI *LPFN_NTOHL)(
1187 IN u_long netlong);
1188
1189 typedef u_short
1190 (WSAAPI *LPFN_NTOHS)(
1191 IN u_short netshort);
1192
1193 typedef int
1194 (WSAAPI *LPFN_RECV)(
1195 IN SOCKET s,
1196 OUT char FAR *buf,
1197 IN int len,
1198 IN int flags);
1199
1200 typedef int
1201 (WSAAPI *LPFN_RECVFROM)(
1202 IN SOCKET s,
1203 OUT char FAR *buf,
1204 IN int len,
1205 IN int flags,
1206 OUT struct sockaddr FAR *from OPTIONAL,
1207 IN OUY int FAR * fromlen OPTIONAL);
1208
1209 typedef int
1210 (WSAAPI *LPFN_SELECT)(
1211 IN int nfds,
1212 IN OUT fd_set FAR *readfds OPTIONAL,
1213 IN OUT fd_set FAR *writefds OPTIONAL,
1214 IN OUT fd_set FAR *exceptfds OPTIONAL,
1215 IN const struct timeval FAR *timeout OPTIONAL);
1216
1217 typedef int
1218 (WSAAPI *LPFN_SEND)(
1219 IN SOCKET s,
1220 IN const char FAR *buf,
1221 IN int len,
1222 IN int flags);
1223
1224 typedef int
1225 (WSAAPI *LPFN_SENDTO)(
1226 IN SOCKET s,
1227 IN const char FAR *buf,
1228 IN int len,
1229 IN int flags,
1230 IN const struct sockaddr FAR *to OPTIONAL,
1231 IN int tolen);
1232
1233 typedef int
1234 (WSAAPI *LPFN_SETSOCKOPT)(
1235 IN SOCKET s,
1236 IN int level,
1237 IN int optname,
1238 IN const char FAR *optval OPTIONAL,
1239 IN int optlen);
1240
1241 typedef int
1242 (WSAAPI *LPFN_SHUTDOWN)(
1243 IN SOCKET s,
1244 IN int how);
1245
1246 typedef SOCKET
1247 (WSAAPI *LPFN_SOCKET)(
1248 IN int af,
1249 IN int type,
1250 IN int protocol);
1251
1252 typedef struct hostent FAR *
1253 (WSAAPI *LPFN_GETHOSTBYADDR)(
1254 IN const char FAR *addr,
1255 IN int len,
1256 IN int type);
1257
1258 typedef struct hostent FAR *
1259 (WSAAPI *LPFN_GETHOSTBYNAME)(
1260 IN const char FAR *name);
1261
1262 typedef int
1263 (WSAAPI *LPFN_GETHOSTNAME)(
1264 OUT char FAR *name,
1265 IN int namelen);
1266
1267 typedef struct servent FAR *
1268 (WSAAPI *LPFN_GETSERVBYPORT)(
1269 IN int port,
1270 IN const char FAR *proto);
1271
1272 typedef struct servent FAR *
1273 (WSAAPI *LPFN_GETSERVBYNAME)(
1274 IN const char FAR *name,
1275 IN const char FAR *proto);
1276
1277 typedef struct protoent FAR *
1278 (WSAAPI *LPFN_GETPROTOBYNUMBER)(
1279 IN int number);
1280
1281 typedef struct protoent FAR *
1282 (WSAAPI *LPFN_GETPROTOBYNAME)(
1283 IN const char FAR *name);
1284
1285 typedef int
1286 (WSAAPI *LPFN_WSASTARTUP)(
1287 IN WORD wVersionRequired,
1288 OUT LPWSADATA lpWSAData);
1289
1290 typedef int
1291 (WSAAPI *LPFN_WSACLEANUP)(void);
1292
1293 typedef void
1294 (WSAAPI *LPFN_WSASETLASTERROR)(
1295 IN int iError);
1296
1297 typedef int
1298 (WSAAPI *LPFN_WSAGETLASTERROR)(void);
1299
1300 typedef BOOL
1301 (WSAAPI *LPFN_WSAISBLOCKING)(void);
1302
1303 typedef int
1304 (WSAAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
1305
1306 typedef FARPROC
1307 (WSAAPI *LPFN_WSASETBLOCKINGHOOK)(
1308 IN FARPROC lpBlockFunc);
1309
1310 typedef int
1311 (WSAAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
1312
1313 typedef HANDLE
1314 (WSAAPI *LPFN_WSAASYNCGETSERVBYNAME)(
1315 IN HWND hWnd,
1316 IN u_int wMsg,
1317 IN const char FAR *name,
1318 IN const char FAR *proto,
1319 OUT char FAR *buf,
1320 IN int buflen);
1321
1322 typedef HANDLE
1323 (WSAAPI *LPFN_WSAASYNCGETSERVBYPORT)(
1324 IN HWND hWnd,
1325 IN u_int wMsg,
1326 IN int port,
1327 IN const char FAR *proto,
1328 OUT char FAR *buf,
1329 IN int buflen);
1330
1331 typedef HANDLE
1332 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(
1333 IN HWND hWnd,
1334 IN u_int wMsg,
1335 IN const char FAR *name,
1336 OUT char FAR *buf,
1337 IN int buflen);
1338
1339 typedef HANDLE
1340 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(
1341 IN HWND hWnd,
1342 IN u_int wMsg,
1343 IN int number,
1344 OUT char FAR *buf,
1345 IN int buflen);
1346
1347 typedef HANDLE
1348 (WSAAPI *LPFN_WSAASYNCGETHOSTBYNAME)(
1349 IN HWND hWnd,
1350 IN u_int wMsg,
1351 IN const char FAR *name,
1352 OUT char FAR *buf,
1353 IN int buflen);
1354
1355 typedef HANDLE
1356 (WSAAPI *LPFN_WSAASYNCGETHOSTBYADDR)(
1357 IN HWND hWnd,
1358 IN u_int wMsg,
1359 IN const char FAR *addr,
1360 IN int len,
1361 IN int type,
1362 OUT char FAR *buf,
1363 IN int buflen);
1364
1365 typedef int
1366 (WSAAPI *LPFN_WSACANCELASYNCREQUEST)(
1367 IN HANDLE hAsyncTaskHandle);
1368
1369 typedef int
1370 (WSAAPI *LPFN_WSAASYNCSELECT)(
1371 IN SOCKET s,
1372 IN HWND hWnd,
1373 IN u_int wMsg,
1374 IN long lEvent);
1375
1376 typedef SOCKET
1377 (WSAAPI *LPFN_WSAACCEPT)(
1378 IN SOCKET s,
1379 OUT struct sockaddr FAR *addr OPTIONAL,
1380 IN OUT LPINT addrlen OPTIONAL,
1381 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
1382 IN DWORD_PTR dwCallbackData OPTIONAL);
1383
1384 typedef BOOL
1385 (WSAAPI *LPFN_WSACLOSEEVENT)(
1386 IN WSAEVENT hEvent);
1387
1388 typedef int
1389 (WSAAPI *LPFN_WSACONNECT)(
1390 IN SOCKET s,
1391 IN const struct sockaddr FAR *name,
1392 IN int namelen,
1393 IN LPWSABUF lpCallerData OPTIONAL,
1394 OUT LPWSABUF lpCalleeData OPTIONAL,
1395 IN LPQOS lpSQOS OPTIONAL,
1396 IN LPQOS lpGQOS OPTIONAL);
1397
1398 typedef WSAEVENT
1399 (WSAAPI *LPFN_WSACREATEEVENT)(void);
1400
1401 typedef int
1402 (WSAAPI *LPFN_WSADUPLICATESOCKETA)(
1403 IN SOCKET s,
1404 IN DWORD dwProcessId,
1405 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo);
1406
1407 typedef int
1408 (WSAAPI *LPFN_WSADUPLICATESOCKETW)(
1409 IN SOCKET s,
1410 IN DWORD dwProcessId,
1411 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
1412
1413 #ifdef UNICODE
1414 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1415 #else
1416 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
1417 #endif
1418
1419 typedef int
1420 (WSAAPI *LPFN_WSAENUMNETWORKEVENTS)(
1421 IN SOCKET s,
1422 IN WSAEVENT hEventObject,
1423 OUT LPWSANETWORKEVENTS lpNetworkEvents);
1424
1425 typedef int
1426 (WSAAPI *LPFN_WSAENUMPROTOCOLSA)(
1427 IN LPINT lpiProtocols OPTIONAL,
1428 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL,
1429 IN OUT LPDWORD lpdwBufferLength);
1430
1431 typedef int
1432 (WSAAPI *LPFN_WSAENUMPROTOCOLSW)(
1433 IN LPINT lpiProtocols OPTIONAL,
1434 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
1435 IN OUT LPDWORD lpdwBufferLength);
1436
1437 #ifdef UNICODE
1438 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1439 #else
1440 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1441 #endif
1442
1443 typedef int
1444 (WSAAPI *LPFN_WSAEVENTSELECT)(
1445 IN SOCKET s,
1446 IN WSAEVENT hEventObject,
1447 IN long lNetworkEvents);
1448
1449 typedef BOOL
1450 (WSAAPI *LPFN_WSAGETOVERLAPPEDRESULT)(
1451 IN SOCKET s,
1452 IN LPWSAOVERLAPPED lpOverlapped,
1453 OUT LPDWORD lpcbTransfer,
1454 IN BOOL fWait,
1455 OUT LPDWORD lpdwFlags);
1456
1457 typedef BOOL
1458 (WSAAPI *LPFN_WSAGETQOSBYNAME)(
1459 IN SOCKET s,
1460 IN LPWSABUF lpQOSName,
1461 OUT LPQOS lpQOS);
1462
1463 typedef int
1464 (WSAAPI *LPFN_WSAHTONL)(
1465 IN SOCKET s,
1466 IN u_long hostlong,
1467 OUT u_long FAR *lpnetlong);
1468
1469 typedef int
1470 (WSAAPI *LPFN_WSAHTONS)(
1471 IN SOCKET s,
1472 IN u_short hostshort,
1473 OUT u_short FAR *lpnetshort);
1474
1475 typedef int
1476 (WSAAPI *LPFN_WSAIOCTL)(
1477 IN SOCKET s,
1478 IN DWORD dwIoControlCode,
1479 IN LPVOID lpvInBuffer OPTIONAL,
1480 IN DWORD cbInBuffer,
1481 OUT LPVOID lpvOutBuffer OPTIONAL,
1482 IN DWORD cbOutBuffer,
1483 OUT LPDWORD lpcbBytesReturned,
1484 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1485 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1486
1487 typedef SOCKET
1488 (WSAAPI *LPFN_WSAJOINLEAF)(
1489 IN SOCKET s,
1490 IN const struct sockaddr FAR *name,
1491 IN int namelen,
1492 IN LPWSABUF lpCallerData OPTIONAL,
1493 OUT LPWSABUF lpCalleeData OPTIONAL,
1494 IN LPQOS lpSQOS OPTIONAL,
1495 IN LPQOS lpGQOS OPTIONAL,
1496 IN DWORD dwFlags);
1497
1498 typedef int
1499 (WSAAPI *LPFN_WSANTOHL)(
1500 IN SOCKET s,
1501 IN u_long netlong,
1502 OUT u_long FAR *lphostlong);
1503
1504 typedef int
1505 (WSAAPI *LPFN_WSANTOHS)(
1506 IN SOCKET s,
1507 IN u_short netshort,
1508 OUT u_short FAR *lphostshort);
1509
1510 typedef int
1511 (WSAAPI *LPFN_WSARECV)(
1512 IN SOCKET s,
1513 IN LPWSABUF lpBuffers,
1514 IN DWORD dwBufferCount,
1515 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
1516 IN OUT LPDWORD lpFlags,
1517 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1518 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1519
1520 typedef int
1521 (WSAAPI *LPFN_WSARECVDISCONNECT)(
1522 IN SOCKET s,
1523 OUT LPWSABUF lpInboundDisconnectData);
1524
1525 typedef int
1526 (WSAAPI *LPFN_WSARECVFROM)(
1527 IN SOCKET s,
1528 IN LPWSABUF lpBuffers,
1529 IN DWORD dwBufferCount,
1530 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
1531 IN OUT LPDWORD lpFlags,
1532 OUT struct sockaddr FAR *lpFrom OPTIONAL,
1533 IN OUT LPINT lpFromlen OPTIONAL,
1534 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1535 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1536
1537 typedef BOOL
1538 (WSAAPI *LPFN_WSARESETEVENT)(
1539 IN WSAEVENT hEvent);
1540
1541 typedef int
1542 (WSAAPI *LPFN_WSASEND)(
1543 IN SOCKET s,
1544 IN LPWSABUF lpBuffers,
1545 IN DWORD dwBufferCount,
1546 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
1547 IN DWORD dwFlags,
1548 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1549 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1550
1551 typedef int
1552 (WSAAPI *LPFN_WSASENDDISCONNECT)(
1553 IN SOCKET s,
1554 IN LPWSABUF lpOutboundDisconnectData OPTIONAL);
1555
1556 typedef int
1557 (WSAAPI *LPFN_WSASENDTO)(
1558 IN SOCKET s,
1559 IN LPWSABUF lpBuffers,
1560 IN DWORD dwBufferCount,
1561 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
1562 IN DWORD dwFlags,
1563 IN const struct sockaddr FAR *lpTo,
1564 IN int iTolen,
1565 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1566 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1567
1568 typedef BOOL
1569 (WSAAPI *LPFN_WSASETEVENT)(
1570 IN WSAEVENT hEvent);
1571
1572 typedef SOCKET
1573 (WSAAPI *LPFN_WSASOCKETA)(
1574 IN int af,
1575 IN int type,
1576 IN int protocol,
1577 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1578 IN GROUP g,
1579 IN DWORD dwFlags);
1580
1581 typedef SOCKET
1582 (WSAAPI *LPFN_WSASOCKETW)(
1583 IN int af,
1584 IN int type,
1585 IN int protocol,
1586 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1587 IN GROUP g,
1588 IN DWORD dwFlags);
1589
1590 #ifdef UNICODE
1591 #define LPFN_WSASOCKET LPFN_WSASOCKETW
1592 #else
1593 #define LPFN_WSASOCKET LPFN_WSASOCKETA
1594 #endif
1595
1596 typedef DWORD
1597 (WSAAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(
1598 IN DWORD cEvents,
1599 IN const WSAEVENT FAR *lphEvents,
1600 IN BOOL fWaitAll,
1601 IN DWORD dwTimeout,
1602 IN BOOL fAlertable);
1603
1604 typedef INT
1605 (WSAAPI *LPFN_WSAADDRESSTOSTRINGA)(
1606 IN LPSOCKADDR lpsaAddress,
1607 IN DWORD dwAddressLength,
1608 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1609 OUT LPSTR lpszAddressString,
1610 IN OUT LPDWORD lpdwAddressStringLength);
1611
1612 typedef INT
1613 (WSAAPI *LPFN_WSAADDRESSTOSTRINGW)(
1614 IN LPSOCKADDR lpsaAddress,
1615 IN DWORD dwAddressLength,
1616 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1617 OUT LPWSTR lpszAddressString,
1618 IN OUT LPDWORD lpdwAddressStringLength);
1619
1620 #ifdef UNICODE
1621 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1622 #else
1623 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1624 #endif
1625
1626 typedef INT
1627 (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(
1628 IN LPSTR AddressString,
1629 IN INT AddressFamily,
1630 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1631 OUT LPSOCKADDR lpAddress,
1632 IN OUT LPINT lpAddressLength);
1633
1634 typedef INT
1635 (WSAAPI *LPFN_WSASTRINGTOADDRESSW)(
1636 IN LPWSTR AddressString,
1637 IN INT AddressFamily,
1638 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1639 OUT LPSOCKADDR lpAddress,
1640 IN OUT LPINT lpAddressLength);
1641
1642 #ifdef UNICODE
1643 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1644 #else
1645 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1646 #endif
1647
1648 typedef INT
1649 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINA)(
1650 IN LPWSAQUERYSETA lpqsRestrictions,
1651 IN DWORD dwControlFlags,
1652 OUT LPHANDLE lphLookup);
1653
1654 typedef INT
1655 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINW)(
1656 IN LPWSAQUERYSETW lpqsRestrictions,
1657 IN DWORD dwControlFlags,
1658 OUT LPHANDLE lphLookup);
1659
1660 #ifdef UNICODE
1661 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1662 #else
1663 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1664 #endif
1665
1666 typedef INT
1667 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTA)(
1668 IN HANDLE hLookup,
1669 IN DWORD dwControlFlags,
1670 IN OUT LPDWORD lpdwBufferLength,
1671 OUT LPWSAQUERYSETA lpqsResults);
1672
1673 typedef INT
1674 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(
1675 IN HANDLE hLookup,
1676 IN DWORD dwControlFlags,
1677 IN OUT LPDWORD lpdwBufferLength,
1678 OUT LPWSAQUERYSETW lpqsResults OPTIONAL);
1679
1680 #ifdef UNICODE
1681 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1682 #else
1683 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1684 #endif
1685
1686 typedef INT
1687 (WSAAPI *LPFN_WSALOOKUPSERVICEEND)(
1688 IN HANDLE hLookup);
1689
1690 typedef INT
1691 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSA)(
1692 IN LPWSASERVICECLASSINFOA lpServiceClassInfo);
1693
1694 typedef INT
1695 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSW)(
1696 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
1697
1698 #ifdef UNICODE
1699 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1700 #else
1701 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1702 #endif
1703
1704 typedef INT
1705 (WSAAPI *LPFN_WSAREMOVESERVICECLASS)(
1706 IN LPGUID lpServiceClassId);
1707
1708 typedef INT
1709 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOA)(
1710 IN LPGUID lpProviderId,
1711 IN LPGUID lpServiceClassId,
1712 IN OUT LPDWORD lpdwBufSize,
1713 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo);
1714
1715 typedef INT
1716 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOW)(
1717 IN LPGUID lpProviderId,
1718 IN LPGUID lpServiceClassId,
1719 IN OUT LPDWORD lpdwBufSize,
1720 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
1721
1722 #ifdef UNICODE
1723 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1724 #else
1725 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1726 #endif
1727
1728 typedef INT
1729 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(
1730 IN OUT LPDWORD lpdwBufferLength,
1731 OUT LPWSANAMESPACE_INFOA lpnspBuffer);
1732
1733 typedef INT
1734 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(
1735 IN OUT LPDWORD lpdwBufferLength,
1736 OUT LPWSANAMESPACE_INFOW lpnspBuffer);
1737
1738 #ifdef UNICODE
1739 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1740 #else
1741 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1742 #endif
1743
1744 typedef INT
1745 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(
1746 IN LPGUID lpServiceClassId,
1747 OUT LPSTR lpszServiceClassName,
1748 IN OUT LPDWORD lpdwBufferLength);
1749
1750 typedef INT
1751 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(
1752 IN LPGUID lpServiceClassId,
1753 OUT LPWSTR lpszServiceClassName,
1754 IN OUT LPDWORD lpdwBufferLength);
1755
1756 #ifdef UNICODE
1757 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1758 #else
1759 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1760 #endif
1761
1762 typedef INT
1763 (WSAAPI *LPFN_WSASETSERVICEA)(
1764 IN LPWSAQUERYSETA lpqsRegInfo,
1765 IN WSAESETSERVICEOP essoperation,
1766 IN DWORD dwControlFlags);
1767
1768 typedef INT
1769 (WSAAPI *LPFN_WSASETSERVICEW)(
1770 IN LPWSAQUERYSETW lpqsRegInfo,
1771 IN WSAESETSERVICEOP essoperation,
1772 IN DWORD dwControlFlags);
1773
1774 #ifdef UNICODE
1775 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1776 #else
1777 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1778 #endif
1779
1780 typedef INT
1781 (WSAAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(
1782 IN OUT LPHANDLE lpNotificationHandle OPTIONAL,
1783 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1784 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1785
1786 #if(_WIN32_WINNT >= 0x0501)
1787 typedef INT
1788 (WSAAPI *LPFN_WSANSPIOCTL)(
1789 IN HANDLE hLookup,
1790 IN DWORD dwControlCode,
1791 IN LPVOID lpvInBuffer OPTIONAL,
1792 IN DWORD cbInBuffer,
1793 OUT LPVOID lpvOutBuffer OPTIONAL,
1794 IN DWORD cbOutBuffer,
1795 OUT LPDWORD lpcbBytesReturned,
1796 IN LPWSACOMPLETION lpCompletion OPTIONAL);
1797 #endif /* (_WIN32_WINNT >= 0x0501) */
1798
1799 #if (_WIN32_WINNT >= 0x0600)
1800
1801 typedef INT
1802 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXA)(
1803 IN OUT LPDWORD lpdwBufferLength,
1804 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer);
1805
1806 typedef INT
1807 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXW)(
1808 IN OUT LPDWORD lpdwBufferLength,
1809 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
1810
1811 #ifdef UNICODE
1812 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
1813 #else
1814 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXA
1815 #endif
1816
1817 #endif /* (_WIN32_WINNT >= 0x600) */
1818
1819 #endif /* INCL_WINSOCK_API_TYPEDEFS */
1820
1821 #if INCL_WINSOCK_API_PROTOTYPES
1822
1823
1824 WINSOCK_API_LINKAGE
1825 SOCKET
1826 WSAAPI
1827 accept(
1828 IN SOCKET s,
1829 OUT struct sockaddr FAR *addr OPTIONAL,
1830 IN OUT int FAR *addrlen OPTIONAL);
1831
1832 WINSOCK_API_LINKAGE
1833 int
1834 WSAAPI
1835 bind(
1836 IN SOCKET s,
1837 IN const struct sockaddr FAR *addr,
1838 IN int namelen);
1839
1840 WINSOCK_API_LINKAGE
1841 int
1842 WSAAPI
1843 closesocket(
1844 IN SOCKET s);
1845
1846 WINSOCK_API_LINKAGE
1847 int
1848 WSAAPI
1849 connect(
1850 IN SOCKET s,
1851 IN const struct sockaddr FAR *name,
1852 IN int namelen);
1853
1854 WINSOCK_API_LINKAGE
1855 int
1856 WSAAPI
1857 ioctlsocket(
1858 IN SOCKET s,
1859 IN long cmd,
1860 IN OUT u_long FAR *argp);
1861
1862 WINSOCK_API_LINKAGE
1863 int
1864 WSAAPI
1865 getpeername(
1866 IN SOCKET s,
1867 OUT struct sockaddr FAR *name,
1868 IN OUT int FAR *namelen);
1869
1870 WINSOCK_API_LINKAGE
1871 int
1872 WSAAPI
1873 getsockname(
1874 IN SOCKET s,
1875 OUT struct sockaddr FAR *name,
1876 IN OUT int FAR *namelen);
1877
1878 WINSOCK_API_LINKAGE
1879 int
1880 WSAAPI
1881 getsockopt(
1882 IN SOCKET s,
1883 IN int level,
1884 IN int optname,
1885 OUT char FAR *optval,
1886 IN OUT int FAR *optlen);
1887
1888 WINSOCK_API_LINKAGE
1889 u_long
1890 WSAAPI
1891 htonl(
1892 IN u_long hostlong);
1893
1894 WINSOCK_API_LINKAGE
1895 u_short
1896 WSAAPI
1897 htons(
1898 IN u_short hostshort);
1899
1900 WINSOCK_API_LINKAGE
1901 unsigned long
1902 WSAAPI
1903 inet_addr(
1904 IN const char FAR *cp);
1905
1906 WINSOCK_API_LINKAGE
1907 char FAR *
1908 WSAAPI
1909 inet_ntoa(
1910 IN struct in_addr in);
1911
1912 WINSOCK_API_LINKAGE
1913 int
1914 WSAAPI
1915 listen(
1916 IN SOCKET s,
1917 IN int backlog);
1918
1919 WINSOCK_API_LINKAGE
1920 u_long
1921 WSAAPI
1922 ntohl(
1923 IN u_long netlong);
1924
1925 WINSOCK_API_LINKAGE
1926 u_short
1927 WSAAPI
1928 ntohs(
1929 IN u_short netshort);
1930
1931 WINSOCK_API_LINKAGE
1932 int
1933 WSAAPI
1934 recv(
1935 IN SOCKET s,
1936 OUT char FAR *buf,
1937 IN int len,
1938 IN int flags);
1939
1940 WINSOCK_API_LINKAGE
1941 int
1942 WSAAPI
1943 recvfrom(
1944 IN SOCKET s,
1945 OUT char FAR *buf,
1946 IN int len,
1947 IN int flags,
1948 OUT struct sockaddr FAR *from OPTIONAL,
1949 IN OUY int FAR *fromlen OPTIONAL);
1950
1951 WINSOCK_API_LINKAGE
1952 int
1953 WSAAPI
1954 select(
1955 IN int nfds,
1956 IN OUT fd_set FAR *readfds OPTIONAL,
1957 IN OUT fd_set FAR *writefds OPTIONAL,
1958 IN OUT fd_set FAR *exceptfds OPTIONAL,
1959 IN const struct timeval FAR *timeout OPTIONAL);
1960
1961 WINSOCK_API_LINKAGE
1962 int
1963 WSAAPI
1964 send(
1965 IN SOCKET s,
1966 IN const char FAR *buf,
1967 IN int len,
1968 IN int flags);
1969
1970 WINSOCK_API_LINKAGE
1971 int
1972 WSAAPI
1973 sendto(
1974 IN SOCKET s,
1975 IN const char FAR *buf,
1976 IN int len,
1977 IN int flags,
1978 IN const struct sockaddr FAR *to OPTIONAL,
1979 IN int tolen);
1980
1981 WINSOCK_API_LINKAGE
1982 int
1983 WSAAPI
1984 setsockopt(
1985 IN SOCKET s,
1986 IN int level,
1987 IN int optname,
1988 IN const char FAR *optval OPTIONAL,
1989 IN int optlen);
1990
1991 WINSOCK_API_LINKAGE
1992 int
1993 WSAAPI
1994 shutdown(
1995 IN SOCKET s,
1996 IN int how);
1997
1998 WINSOCK_API_LINKAGE
1999 SOCKET
2000 WSAAPI
2001 socket(
2002 IN int af,
2003 IN int type,
2004 IN int protocol);
2005
2006 WINSOCK_API_LINKAGE
2007 struct hostent FAR *
2008 WSAAPI
2009 gethostbyaddr(
2010 IN const char FAR *addr,
2011 IN int len,
2012 IN int type);
2013
2014 WINSOCK_API_LINKAGE
2015 struct hostent FAR *
2016 WSAAPI
2017 gethostbyname(
2018 IN const char FAR *name);
2019
2020 WINSOCK_API_LINKAGE
2021 int
2022 WSAAPI
2023 gethostname(
2024 OUT char FAR *name,
2025 IN int namelen);
2026
2027 WINSOCK_API_LINKAGE
2028 struct servent FAR *
2029 WSAAPI
2030 getservbyport(
2031 IN int port,
2032 IN const char FAR *proto);
2033
2034 WINSOCK_API_LINKAGE
2035 struct servent FAR *
2036 WSAAPI
2037 getservbyname(
2038 IN const char FAR *name,
2039 IN const char FAR *proto);
2040
2041 WINSOCK_API_LINKAGE
2042 struct protoent FAR *
2043 WSAAPI
2044 getprotobynumber(
2045 IN int number);
2046
2047 WINSOCK_API_LINKAGE
2048 struct protoent FAR *
2049 WSAAPI
2050 getprotobyname(
2051 IN const char FAR *name);
2052
2053 WINSOCK_API_LINKAGE
2054 int
2055 WSAAPI
2056 WSAStartup(
2057 IN WORD wVersionRequired,
2058 OUT LPWSADATA lpWSAData);
2059
2060 WINSOCK_API_LINKAGE
2061 int
2062 WSAAPI
2063 WSACleanup(void);
2064
2065 WINSOCK_API_LINKAGE
2066 void
2067 WSAAPI
2068 WSASetLastError(
2069 IN int iError);
2070
2071 WINSOCK_API_LINKAGE
2072 int
2073 WSAAPI
2074 WSAGetLastError(void);
2075
2076 WINSOCK_API_LINKAGE
2077 BOOL
2078 WSAAPI
2079 WSAIsBlocking(void);
2080
2081 WINSOCK_API_LINKAGE
2082 int
2083 WSAAPI
2084 WSAUnhookBlockingHook(void);
2085
2086 WINSOCK_API_LINKAGE
2087 FARPROC
2088 WSAAPI
2089 WSASetBlockingHook(
2090 IN FARPROC lpBlockFunc);
2091
2092 WINSOCK_API_LINKAGE
2093 int
2094 WSAAPI
2095 WSACancelBlockingCall(void);
2096
2097 WINSOCK_API_LINKAGE
2098 HANDLE
2099 WSAAPI
2100 WSAAsyncGetServByName(
2101 IN HWND hWnd,
2102 IN u_int wMsg,
2103 IN const char FAR *name,
2104 IN const char FAR *proto,
2105 OUT char FAR *buf,
2106 IN int buflen);
2107
2108 WINSOCK_API_LINKAGE
2109 HANDLE
2110 WSAAPI
2111 WSAAsyncGetServByPort(
2112 IN HWND hWnd,
2113 IN u_int wMsg,
2114 IN int port,
2115 IN const char FAR *proto,
2116 OUT char FAR *buf,
2117 IN int buflen);
2118
2119 WINSOCK_API_LINKAGE
2120 HANDLE
2121 WSAAPI
2122 WSAAsyncGetProtoByName(
2123 IN HWND hWnd,
2124 IN u_int wMsg,
2125 IN const char FAR *name,
2126 OUT char FAR *buf,
2127 IN int buflen);
2128
2129 WINSOCK_API_LINKAGE
2130 HANDLE
2131 WSAAPI
2132 WSAAsyncGetProtoByNumber(
2133 IN HWND hWnd,
2134 IN u_int wMsg,
2135 IN int number,
2136 OUT char FAR *buf,
2137 IN int buflen);
2138
2139 WINSOCK_API_LINKAGE
2140 HANDLE
2141 WSAAPI
2142 WSAAsyncGetHostByName(
2143 IN HWND hWnd,
2144 IN u_int wMsg,
2145 IN const char FAR *name,
2146 OUT char FAR *buf,
2147 IN int buflen);
2148
2149 WINSOCK_API_LINKAGE
2150 HANDLE
2151 WSAAPI
2152 WSAAsyncGetHostByAddr(
2153 IN HWND hWnd,
2154 IN u_int wMsg,
2155 IN const char FAR *addr,
2156 IN int len,
2157 IN int type,
2158 OUT char FAR *buf,
2159 IN int buflen);
2160
2161 WINSOCK_API_LINKAGE
2162 int
2163 WSAAPI
2164 WSACancelAsyncRequest(
2165 IN HANDLE hAsyncTaskHandle);
2166
2167 WINSOCK_API_LINKAGE
2168 int
2169 WSAAPI
2170 WSAAsyncSelect(
2171 IN SOCKET s,
2172 IN HWND hWnd,
2173 IN u_int wMsg,
2174 IN long lEvent);
2175
2176 WINSOCK_API_LINKAGE
2177 SOCKET
2178 WSAAPI
2179 WSAAccept(
2180 IN SOCKET s,
2181 OUT struct sockaddr FAR *addr OPTIONAL,
2182 IN OUT LPINT addrlen OPTIONAL,
2183 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
2184 IN DWORD_PTR dwCallbackData OPTIONAL);
2185
2186 WINSOCK_API_LINKAGE
2187 BOOL
2188 WSAAPI
2189 WSACloseEvent(
2190 IN WSAEVENT hEvent);
2191
2192 WINSOCK_API_LINKAGE
2193 int
2194 WSAAPI
2195 WSAConnect(
2196 IN SOCKET s,
2197 IN const struct sockaddr FAR *name,
2198 IN int namelen,
2199 IN LPWSABUF lpCallerData OPTIONAL,
2200 OUT LPWSABUF lpCalleeData OPTIONAL,
2201 IN LPQOS lpSQOS OPTIONAL,
2202 IN LPQOS lpGQOS OPTIONAL);
2203
2204 #ifdef UNICODE
2205 #define WSAConnectByName WSAConnectByNameW
2206 #else
2207 #define WSAConnectByName WSAConnectByNameA
2208 #endif
2209
2210 BOOL
2211 PASCAL
2212 WSAConnectByNameW(
2213 IN SOCKET s,
2214 IN LPWSTR nodename,
2215 IN LPWSTR servicename,
2216 IN OUT LPDWORD LocalAddressLength,
2217 OUT LPSOCKADDR LocalAddress,
2218 IN OUT LPDWORD RemoteAddressLength,
2219 OUT LPSOCKADDR RemoteAddress,
2220 IN const struct timeval *timeout,
2221 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2222
2223 BOOL
2224 PASCAL
2225 WSAConnectByNameA(
2226 IN SOCKET s,
2227 IN LPCSTR nodename,
2228 IN LPCSTR servicename,
2229 IN OUT LPDWORD LocalAddressLength,
2230 OUT LPSOCKADDR LocalAddress,
2231 IN OUT LPDWORD RemoteAddressLength,
2232 OUT LPSOCKADDR RemoteAddress,
2233 IN const struct timeval *timeout,
2234 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2235
2236 BOOL
2237 PASCAL
2238 WSAConnectByList(
2239 IN SOCKET s,
2240 IN PSOCKET_ADDRESS_LIST SocketAddress,
2241 IN OUT LPDWORD LocalAddressLength,
2242 OUT LPSOCKADDR LocalAddress,
2243 IN OUT LPDWORD RemoteAddressLength,
2244 OUT LPSOCKADDR RemoteAddress,
2245 IN const struct timeval *timeout,
2246 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2247
2248 WINSOCK_API_LINKAGE
2249 WSAEVENT
2250 WSAAPI
2251 WSACreateEvent(void);
2252
2253 WINSOCK_API_LINKAGE
2254 int
2255 WSAAPI
2256 WSADuplicateSocketA(
2257 IN SOCKET s,
2258 IN DWORD dwProcessId,
2259 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo);
2260
2261 WINSOCK_API_LINKAGE
2262 int
2263 WSAAPI
2264 WSADuplicateSocketW(
2265 IN SOCKET s,
2266 IN DWORD dwProcessId,
2267 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
2268
2269 #ifdef UNICODE
2270 #define WSADuplicateSocket WSADuplicateSocketW
2271 #else
2272 #define WSADuplicateSocket WSADuplicateSocketA
2273 #endif
2274
2275 WINSOCK_API_LINKAGE
2276 int
2277 WSAAPI
2278 WSAEnumNetworkEvents(
2279 IN SOCKET s,
2280 IN WSAEVENT hEventObject,
2281 OUT LPWSANETWORKEVENTS lpNetworkEvents);
2282
2283 WINSOCK_API_LINKAGE
2284 int
2285 WSAAPI
2286 WSAEnumProtocolsA(
2287 IN LPINT lpiProtocols OPTIONAL,
2288 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL,
2289 IN OUT LPDWORD lpdwBufferLength);
2290
2291 WINSOCK_API_LINKAGE
2292 int
2293 WSAAPI
2294 WSAEnumProtocolsW(
2295 IN LPINT lpiProtocols OPTIONAL,
2296 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
2297 IN OUT LPDWORD lpdwBufferLength);
2298
2299 #ifdef UNICODE
2300 #define WSAEnumProtocols WSAEnumProtocolsW
2301 #else
2302 #define WSAEnumProtocols WSAEnumProtocolsA
2303 #endif
2304
2305 WINSOCK_API_LINKAGE
2306 int
2307 WSAAPI
2308 WSAEventSelect(
2309 IN SOCKET s,
2310 IN WSAEVENT hEventObject,
2311 IN long lNetworkEvents);
2312
2313 WINSOCK_API_LINKAGE
2314 BOOL
2315 WSAAPI
2316 WSAGetOverlappedResult(
2317 IN SOCKET s,
2318 IN LPWSAOVERLAPPED lpOverlapped,
2319 OUT LPDWORD lpcbTransfer,
2320 IN BOOL fWait,
2321 OUT LPDWORD lpdwFlags);
2322
2323 WINSOCK_API_LINKAGE
2324 BOOL
2325 WSAAPI
2326 WSAGetQOSByName(
2327 IN SOCKET s,
2328 IN LPWSABUF lpQOSName,
2329 OUT LPQOS lpQOS);
2330
2331 WINSOCK_API_LINKAGE
2332 int
2333 WSAAPI
2334 WSAHtonl(
2335 IN SOCKET s,
2336 IN u_long hostlong,
2337 OUT u_long FAR *lpnetlong);
2338
2339 WINSOCK_API_LINKAGE
2340 int
2341 WSAAPI
2342 WSAHtons(
2343 IN SOCKET s,
2344 IN u_short hostshort,
2345 OUT u_short FAR *lpnetshort);
2346
2347 WINSOCK_API_LINKAGE
2348 int
2349 WSAAPI
2350 WSAIoctl(
2351 IN SOCKET s,
2352 IN DWORD dwIoControlCode,
2353 IN LPVOID lpvInBuffer OPTIONAL,
2354 IN DWORD cbInBuffer,
2355 OUT LPVOID lpvOutBuffer OPTIONAL,
2356 IN DWORD cbOutBuffer,
2357 OUT LPDWORD lpcbBytesReturned,
2358 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2359 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2360
2361 WINSOCK_API_LINKAGE
2362 SOCKET
2363 WSAAPI
2364 WSAJoinLeaf(
2365 IN SOCKET s,
2366 IN const struct sockaddr FAR *name,
2367 IN int namelen,
2368 IN LPWSABUF lpCallerData OPTIONAL,
2369 OUT LPWSABUF lpCalleeData OPTIONAL,
2370 IN LPQOS lpSQOS OPTIONAL,
2371 IN LPQOS lpGQOS OPTIONAL,
2372 IN DWORD dwFlags);
2373
2374 WINSOCK_API_LINKAGE
2375 int
2376 WSAAPI
2377 WSANtohl(
2378 IN SOCKET s,
2379 IN u_long netlong,
2380 OUT u_long FAR *lphostlong);
2381
2382 WINSOCK_API_LINKAGE
2383 int
2384 WSAAPI
2385 WSANtohs(
2386 IN SOCKET s,
2387 IN u_short netshort,
2388 OUT u_short FAR *lphostshort);
2389
2390 WINSOCK_API_LINKAGE
2391 int
2392 WSAAPI
2393 WSARecv(
2394 IN SOCKET s,
2395 IN LPWSABUF lpBuffers,
2396 IN DWORD dwBufferCount,
2397 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
2398 IN OUT LPDWORD lpFlags,
2399 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2400 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2401
2402 WINSOCK_API_LINKAGE
2403 int
2404 WSAAPI
2405 WSARecvDisconnect(
2406 IN SOCKET s,
2407 IN LPWSABUF lpInboundDisconnectData OPTIONAL);
2408
2409 WINSOCK_API_LINKAGE
2410 int
2411 WSAAPI
2412 WSARecvFrom(
2413 IN SOCKET s,
2414 IN OUT LPWSABUF lpBuffers,
2415 IN DWORD dwBufferCount,
2416 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
2417 IN OUT LPDWORD lpFlags,
2418 OUT struct sockaddr FAR *lpFrom,
2419 IN OUT LPINT lpFromlen OPTIONAL,
2420 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2421 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2422
2423 WINSOCK_API_LINKAGE
2424 BOOL
2425 WSAAPI
2426 WSAResetEvent(
2427 IN WSAEVENT hEvent);
2428
2429 WINSOCK_API_LINKAGE
2430 int
2431 WSAAPI
2432 WSASendDisconnect(
2433 IN SOCKET s,
2434 IN LPWSABUF lpOutboundDisconnectData OPTIONAL);
2435
2436 WINSOCK_API_LINKAGE
2437 int
2438 WSAAPI
2439 WSASend(
2440 IN SOCKET s,
2441 IN LPWSABUF lpBuffers,
2442 IN DWORD dwBufferCount,
2443 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2444 IN DWORD dwFlags,
2445 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2446 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2447
2448 WINSOCK_API_LINKAGE
2449 int
2450 WSAAPI
2451 WSASendTo(
2452 IN SOCKET s,
2453 IN LPWSABUF lpBuffers,
2454 IN DWORD dwBufferCount,
2455 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2456 IN DWORD dwFlags,
2457 IN const struct sockaddr FAR *lpTo OPTIONAL,
2458 IN int iTolen,
2459 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2460 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2461
2462 WINSOCK_API_LINKAGE
2463 BOOL
2464 WSAAPI
2465 WSASetEvent(
2466 IN WSAEVENT hEvent);
2467
2468 WINSOCK_API_LINKAGE
2469 SOCKET
2470 WSAAPI
2471 WSASocketA(
2472 IN int af,
2473 IN int type,
2474 IN int protocol,
2475 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2476 IN GROUP g,
2477 IN DWORD dwFlags);
2478
2479 WINSOCK_API_LINKAGE
2480 SOCKET
2481 WSAAPI
2482 WSASocketW(
2483 IN int af,
2484 IN int type,
2485 IN int protocol,
2486 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2487 IN GROUP g,
2488 IN DWORD dwFlags);
2489
2490 #ifdef UNICODE
2491 #define WSASocket WSASocketW
2492 #else
2493 #define WSASocket WSASocketA
2494 #endif
2495
2496 WINSOCK_API_LINKAGE
2497 DWORD
2498 WSAAPI
2499 WSAWaitForMultipleEvents(
2500 IN DWORD cEvents,
2501 IN const WSAEVENT FAR *lphEvents,
2502 IN BOOL fWaitAll,
2503 IN DWORD dwTimeout,
2504 IN BOOL fAlertable);
2505
2506 WINSOCK_API_LINKAGE
2507 INT
2508 WSAAPI
2509 WSAAddressToStringA(
2510 IN LPSOCKADDR lpsaAddress,
2511 IN DWORD dwAddressLength,
2512 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2513 OUT LPSTR lpszAddressString,
2514 IN OUT LPDWORD lpdwAddressStringLength);
2515
2516 WINSOCK_API_LINKAGE
2517 INT
2518 WSAAPI
2519 WSAAddressToStringW(
2520 IN LPSOCKADDR lpsaAddress,
2521 IN DWORD dwAddressLength,
2522 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2523 OUT LPWSTR lpszAddressString,
2524 IN OUT LPDWORD lpdwAddressStringLength);
2525
2526 #ifdef UNICODE
2527 #define WSAAddressToString WSAAddressToStringW
2528 #else
2529 #define WSAAddressToString WSAAddressToStringA
2530 #endif
2531
2532 WINSOCK_API_LINKAGE
2533 INT
2534 WSAAPI
2535 WSAStringToAddressA(
2536 IN LPSTR AddressString,
2537 IN INT AddressFamily,
2538 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2539 OUT LPSOCKADDR lpAddress,
2540 IN OUT LPINT lpAddressLength);
2541
2542 WINSOCK_API_LINKAGE
2543 INT
2544 WSAAPI
2545 WSAStringToAddressW(
2546 IN LPWSTR AddressString,
2547 IN INT AddressFamily,
2548 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2549 OUT LPSOCKADDR lpAddress,
2550 IN OUT LPINT lpAddressLength);
2551
2552 #ifdef UNICODE
2553 #define WSAStringToAddress WSAStringToAddressW
2554 #else
2555 #define WSAStringToAddress WSAStringToAddressA
2556 #endif
2557
2558 WINSOCK_API_LINKAGE
2559 INT
2560 WSAAPI
2561 WSALookupServiceBeginA(
2562 IN LPWSAQUERYSETA lpqsRestrictions,
2563 IN DWORD dwControlFlags,
2564 OUT LPHANDLE lphLookup);
2565
2566 WINSOCK_API_LINKAGE
2567 INT
2568 WSAAPI
2569 WSALookupServiceBeginW(
2570 IN LPWSAQUERYSETW lpqsRestrictions,
2571 IN DWORD dwControlFlags,
2572 OUT LPHANDLE lphLookup);
2573
2574 #ifdef UNICODE
2575 #define WSALookupServiceBegin WSALookupServiceBeginW
2576 #else
2577 #define WSALookupServiceBegin WSALookupServiceBeginA
2578 #endif
2579
2580 WINSOCK_API_LINKAGE
2581 INT
2582 WSAAPI
2583 WSALookupServiceNextA(
2584 IN HANDLE hLookup,
2585 IN DWORD dwControlFlags,
2586 IN OUT LPDWORD lpdwBufferLength,
2587 OUT LPWSAQUERYSETA lpqsResults);
2588
2589 WINSOCK_API_LINKAGE
2590 INT
2591 WSAAPI
2592 WSALookupServiceNextW(
2593 IN HANDLE hLookup,
2594 IN DWORD dwControlFlags,
2595 IN OUT LPDWORD lpdwBufferLength,
2596 OUT LPWSAQUERYSETW lpqsResults OPTIONAL);
2597
2598 #ifdef UNICODE
2599 #define WSALookupServiceNext WSALookupServiceNextW
2600 #else
2601 #define WSALookupServiceNext WSALookupServiceNextA
2602 #endif
2603
2604 WINSOCK_API_LINKAGE
2605 INT
2606 WSAAPI
2607 WSALookupServiceEnd(
2608 IN HANDLE hLookup);
2609
2610 WINSOCK_API_LINKAGE
2611 INT
2612 WSAAPI
2613 WSAInstallServiceClassA(
2614 IN LPWSASERVICECLASSINFOA lpServiceClassInfo);
2615
2616 WINSOCK_API_LINKAGE
2617 INT
2618 WSAAPI
2619 WSAInstallServiceClassW(
2620 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
2621
2622 #ifdef UNICODE
2623 #define WSAInstallServiceClass WSAInstallServiceClassW
2624 #else
2625 #define WSAInstallServiceClass WSAInstallServiceClassA
2626 #endif
2627
2628 WINSOCK_API_LINKAGE
2629 INT
2630 WSAAPI
2631 WSARemoveServiceClass(
2632 IN LPGUID lpServiceClassId);
2633
2634 WINSOCK_API_LINKAGE
2635 INT
2636 WSAAPI
2637 WSAGetServiceClassInfoA(
2638 IN LPGUID lpProviderId,
2639 IN LPGUID lpServiceClassId,
2640 IN OUT LPDWORD lpdwBufSize,
2641 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo);
2642
2643 WINSOCK_API_LINKAGE
2644 INT
2645 WSAAPI
2646 WSAGetServiceClassInfoW(
2647 IN LPGUID lpProviderId,
2648 IN LPGUID lpServiceClassId,
2649 IN OUT LPDWORD lpdwBufSize,
2650 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
2651
2652 #ifdef UNICODE
2653 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
2654 #else
2655 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
2656 #endif
2657
2658 WINSOCK_API_LINKAGE
2659 INT
2660 WSAAPI
2661 WSAEnumNameSpaceProvidersA(
2662 IN OUT LPDWORD lpdwBufferLength,
2663 OUT LPWSANAMESPACE_INFOA lpnspBuffer);
2664
2665 WINSOCK_API_LINKAGE
2666 INT
2667 WSAAPI
2668 WSAEnumNameSpaceProvidersW(
2669 IN OUT LPDWORD lpdwBufferLength,
2670 OUT LPWSANAMESPACE_INFOW lpnspBuffer);
2671
2672 #ifdef UNICODE
2673 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
2674 #else
2675 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
2676 #endif
2677
2678 WINSOCK_API_LINKAGE
2679 INT
2680 WSAAPI
2681 WSAGetServiceClassNameByClassIdA(
2682 IN LPGUID lpServiceClassId,
2683 OUT LPSTR lpszServiceClassName,
2684 IN OUT LPDWORD lpdwBufferLength);
2685
2686 WINSOCK_API_LINKAGE
2687 INT
2688 WSAAPI
2689 WSAGetServiceClassNameByClassIdW(
2690 IN LPGUID lpServiceClassId,
2691 OUT LPWSTR lpszServiceClassName,
2692 IN OUT LPDWORD lpdwBufferLength);
2693
2694 #ifdef UNICODE
2695 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
2696 #else
2697 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
2698 #endif
2699
2700 WINSOCK_API_LINKAGE
2701 INT
2702 WSAAPI
2703 WSASetServiceA(
2704 IN LPWSAQUERYSETA lpqsRegInfo,
2705 IN WSAESETSERVICEOP essoperation,
2706 IN DWORD dwControlFlags);
2707
2708 WINSOCK_API_LINKAGE
2709 INT
2710 WSAAPI
2711 WSASetServiceW(
2712 IN LPWSAQUERYSETW lpqsRegInfo,
2713 IN WSAESETSERVICEOP essoperation,
2714 IN DWORD dwControlFlags);
2715
2716 #ifdef UNICODE
2717 #define WSASetService WSASetServiceW
2718 #else
2719 #define WSASetService WSASetServiceA
2720 #endif
2721
2722 WINSOCK_API_LINKAGE
2723 INT
2724 WSAAPI
2725 WSAProviderConfigChange(
2726 IN OUT LPHANDLE lpNotificationHandle OPTIONAL,
2727 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2728 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2729
2730 #if(_WIN32_WINNT >= 0x0501)
2731 WINSOCK_API_LINKAGE
2732 INT
2733 WSAAPI
2734 WSANSPIoctl(
2735 IN HANDLE hLookup,
2736 IN DWORD dwControlCode,
2737 IN LPVOID lpvInBuffer OPTIONAL,
2738 IN DWORD cbInBuffer,
2739 OUT LPVOID lpvOutBuffer OPTIONAL,
2740 IN DWORD cbOutBuffer,
2741 OUT LPDWORD lpcbBytesReturned,
2742 IN LPWSACOMPLETION lpCompletion OPTIONAL);
2743 #endif /* (_WIN32_WINNT >= 0x0501) */
2744
2745 #if(_WIN32_WINNT >= 0x0600)
2746
2747 WINSOCK_API_LINKAGE
2748 int
2749 WSAAPI
2750 WSASendMsg(
2751 IN SOCKET Handle,
2752 IN LPWSAMSG lpMsg,
2753 IN DWORD dwFlags,
2754 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2755 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2756 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2757
2758 WINSOCK_API_LINKAGE
2759 INT
2760 WSAAPI
2761 WSAEnumNameSpaceProvidersExA(
2762 IN OUT LPDWORD lpdwBufferLength,
2763 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer);
2764
2765 WINSOCK_API_LINKAGE
2766 INT
2767 WSAAPI
2768 WSAEnumNameSpaceProvidersExW(
2769 IN OUT LPDWORD lpdwBufferLength,
2770 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
2771
2772 #ifdef UNICODE
2773 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
2774 #else
2775 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA
2776 #endif
2777
2778 WINSOCK_API_LINKAGE
2779 int
2780 WSAAPI
2781 WSAPoll(
2782 IN OUT LPWSAPOLLFD fdArray,
2783 IN ULONG fds,
2784 IN INT timeout);
2785
2786 #endif /* (_WIN32_WINNT >= 0x0600) */
2787
2788 #endif /* INCL_WINSOCK_API_PROTOTYPES */
2789
2790 typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
2791 typedef struct linger LINGER;
2792 typedef struct linger *PLINGER;
2793 typedef struct linger FAR *LPLINGER;
2794 typedef struct fd_set FD_SET;
2795 typedef struct fd_set *PFD_SET;
2796 typedef struct fd_set FAR *LPFD_SET;
2797 typedef struct hostent HOSTENT;
2798 typedef struct hostent *PHOSTENT;
2799 typedef struct hostent FAR *LPHOSTENT;
2800 typedef struct servent SERVENT;
2801 typedef struct servent *PSERVENT;
2802 typedef struct servent FAR *LPSERVENT;
2803 typedef struct protoent PROTOENT;
2804 typedef struct protoent *PPROTOENT;
2805 typedef struct protoent FAR *LPPROTOENT;
2806 typedef struct timeval TIMEVAL;
2807 typedef struct timeval *PTIMEVAL;
2808 typedef struct timeval FAR *LPTIMEVAL;
2809
2810 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
2811 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
2812 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
2813 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
2814 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
2815 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
2816
2817 #ifdef __cplusplus
2818 }
2819 #endif
2820
2821 #ifdef _NEED_POPPACK
2822 #include <poppack.h>
2823 #endif
2824
2825 /* FIXME :
2826 #if(_WIN32_WINNT >= 0x0501)
2827 #ifdef IPV6STRICT
2828 #include <wsipv6ok.h>
2829 #endif
2830 #endif */