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