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