[NDK]
[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 BYTE *pBlobData;
778 } BLOB,*PBLOB,*LPBLOB;
779
780 #endif /* _tagBLOB_DEFINED */
781
782 #endif /* __BLOB_T_DEFINED */
783
784 typedef struct _AFPROTOCOLS {
785 INT iAddressFamily;
786 INT iProtocol;
787 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
788
789 typedef enum _WSAEcomparator {
790 COMP_EQUAL = 0,
791 COMP_NOTLESS
792 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
793
794 typedef struct _WSAVersion {
795 DWORD dwVersion;
796 WSAECOMPARATOR ecHow;
797 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
798
799 typedef struct _WSAQuerySetA {
800 DWORD dwSize;
801 LPSTR lpszServiceInstanceName;
802 LPGUID lpServiceClassId;
803 LPWSAVERSION lpVersion;
804 LPSTR lpszComment;
805 DWORD dwNameSpace;
806 LPGUID lpNSProviderId;
807 LPSTR lpszContext;
808 DWORD dwNumberOfProtocols;
809 LPAFPROTOCOLS lpafpProtocols;
810 LPSTR lpszQueryString;
811 DWORD dwNumberOfCsAddrs;
812 LPCSADDR_INFO lpcsaBuffer;
813 DWORD dwOutputFlags;
814 LPBLOB lpBlob;
815 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
816
817 typedef struct _WSAQuerySetW {
818 DWORD dwSize;
819 LPWSTR lpszServiceInstanceName;
820 LPGUID lpServiceClassId;
821 LPWSAVERSION lpVersion;
822 LPWSTR lpszComment;
823 DWORD dwNameSpace;
824 LPGUID lpNSProviderId;
825 LPWSTR lpszContext;
826 DWORD dwNumberOfProtocols;
827 LPAFPROTOCOLS lpafpProtocols;
828 LPWSTR lpszQueryString;
829 DWORD dwNumberOfCsAddrs;
830 LPCSADDR_INFO lpcsaBuffer;
831 DWORD dwOutputFlags;
832 LPBLOB lpBlob;
833 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
834
835 typedef struct _WSAQuerySet2A {
836 DWORD dwSize;
837 LPSTR lpszServiceInstanceName;
838 LPWSAVERSION lpVersion;
839 LPSTR lpszComment;
840 DWORD dwNameSpace;
841 LPGUID lpNSProviderId;
842 LPSTR lpszContext;
843 DWORD dwNumberOfProtocols;
844 LPAFPROTOCOLS lpafpProtocols;
845 LPSTR lpszQueryString;
846 DWORD dwNumberOfCsAddrs;
847 LPCSADDR_INFO lpcsaBuffer;
848 DWORD dwOutputFlags;
849 LPBLOB lpBlob;
850 } WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A;
851
852 typedef struct _WSAQuerySet2W {
853 DWORD dwSize;
854 LPWSTR lpszServiceInstanceName;
855 LPWSAVERSION lpVersion;
856 LPWSTR lpszComment;
857 DWORD dwNameSpace;
858 LPGUID lpNSProviderId;
859 LPWSTR lpszContext;
860 DWORD dwNumberOfProtocols;
861 LPAFPROTOCOLS lpafpProtocols;
862 LPWSTR lpszQueryString;
863 DWORD dwNumberOfCsAddrs;
864 LPCSADDR_INFO lpcsaBuffer;
865 DWORD dwOutputFlags;
866 LPBLOB lpBlob;
867 } WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W;
868
869 #ifdef UNICODE
870 typedef WSAQUERYSETW WSAQUERYSET;
871 typedef PWSAQUERYSETW PWSAQUERYSET;
872 typedef LPWSAQUERYSETW LPWSAQUERYSET;
873 typedef WSAQUERYSET2W WSAQUERYSET2;
874 typedef PWSAQUERYSET2W PWSAQUERYSET2;
875 typedef LPWSAQUERYSET2W LPWSAQUERYSET2;
876 #else
877 typedef WSAQUERYSETA WSAQUERYSET;
878 typedef PWSAQUERYSETA PWSAQUERYSET;
879 typedef LPWSAQUERYSETA LPWSAQUERYSET;
880 typedef WSAQUERYSET2A WSAQUERYSET2;
881 typedef PWSAQUERYSET2A PWSAQUERYSET2;
882 typedef LPWSAQUERYSET2A LPWSAQUERYSET2;
883 #endif /* UNICODE */
884
885 typedef enum _WSAESETSERVICEOP {
886 RNRSERVICE_REGISTER=0,
887 RNRSERVICE_DEREGISTER,
888 RNRSERVICE_DELETE
889 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
890
891 typedef struct _WSANSClassInfoA {
892 LPSTR lpszName;
893 DWORD dwNameSpace;
894 DWORD dwValueType;
895 DWORD dwValueSize;
896 LPVOID lpValue;
897 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
898
899 typedef struct _WSANSClassInfoW {
900 LPWSTR lpszName;
901 DWORD dwNameSpace;
902 DWORD dwValueType;
903 DWORD dwValueSize;
904 LPVOID lpValue;
905 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
906
907 #ifdef UNICODE
908 typedef WSANSCLASSINFOW WSANSCLASSINFO;
909 typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
910 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
911 #else
912 typedef WSANSCLASSINFOA WSANSCLASSINFO;
913 typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
914 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
915 #endif
916
917 typedef struct _WSAServiceClassInfoA {
918 LPGUID lpServiceClassId;
919 LPSTR lpszServiceClassName;
920 DWORD dwCount;
921 LPWSANSCLASSINFOA lpClassInfos;
922 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
923
924 typedef struct _WSAServiceClassInfoW {
925 LPGUID lpServiceClassId;
926 LPWSTR lpszServiceClassName;
927 DWORD dwCount;
928 LPWSANSCLASSINFOW lpClassInfos;
929 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
930
931 #ifdef UNICODE
932 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
933 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
934 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
935 #else
936 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
937 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
938 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
939 #endif
940
941 typedef struct _WSANAMESPACE_INFOA {
942 GUID NSProviderId;
943 DWORD dwNameSpace;
944 BOOL fActive;
945 DWORD dwVersion;
946 LPSTR lpszIdentifier;
947 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
948
949 typedef struct _WSANAMESPACE_INFOW {
950 GUID NSProviderId;
951 DWORD dwNameSpace;
952 BOOL fActive;
953 DWORD dwVersion;
954 LPWSTR lpszIdentifier;
955 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
956
957 typedef struct _WSANAMESPACE_INFOEXA {
958 GUID NSProviderId;
959 DWORD dwNameSpace;
960 BOOL fActive;
961 DWORD dwVersion;
962 LPSTR lpszIdentifier;
963 BLOB ProviderSpecific;
964 } WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA;
965
966 typedef struct _WSANAMESPACE_INFOEXW {
967 GUID NSProviderId;
968 DWORD dwNameSpace;
969 BOOL fActive;
970 DWORD dwVersion;
971 LPWSTR lpszIdentifier;
972 BLOB ProviderSpecific;
973 } WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW;
974
975 #ifdef UNICODE
976 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
977 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
978 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
979 typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX;
980 typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX;
981 typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX;
982 #else
983 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
984 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
985 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
986 typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX;
987 typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX;
988 typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX;
989 #endif /* UNICODE */
990
991 #if(_WIN32_WINNT >= 0x0600)
992
993 #define POLLRDNORM 0x0100
994 #define POLLRDBAND 0x0200
995 #define POLLIN (POLLRDNORM | POLLRDBAND)
996 #define POLLPRI 0x0400
997
998 #define POLLWRNORM 0x0010
999 #define POLLOUT (POLLWRNORM)
1000 #define POLLWRBAND 0x0020
1001
1002 #define POLLERR 0x0001
1003 #define POLLHUP 0x0002
1004 #define POLLNVAL 0x0004
1005
1006 typedef struct pollfd {
1007 SOCKET fd;
1008 SHORT events;
1009 SHORT revents;
1010 } WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
1011
1012 #endif /* (_WIN32_WINNT >= 0x0600) */
1013
1014 #if INCL_WINSOCK_API_TYPEDEFS
1015
1016 typedef SOCKET
1017 (WSAAPI *LPFN_ACCEPT)(
1018 IN SOCKET s,
1019 OUT struct sockaddr FAR *addr OPTIONAL,
1020 IN OUT int FAR *addrlen OPTIONAL);
1021
1022 typedef int
1023 (WSAAPI *LPFN_BIND)(
1024 IN SOCKET s,
1025 IN const struct sockaddr FAR *name,
1026 IN int namelen);
1027
1028 typedef int
1029 (WSAAPI *LPFN_CLOSESOCKET)(
1030 IN SOCKET s);
1031
1032 typedef int
1033 (WSAAPI *LPFN_CONNECT)(
1034 IN SOCKET s,
1035 IN const struct sockaddr FAR *name,
1036 IN int namelen);
1037
1038 typedef int
1039 (WSAAPI *LPFN_IOCTLSOCKET)(
1040 IN SOCKET s,
1041 IN long cmd,
1042 IN OUT u_long FAR *argp);
1043
1044 typedef int
1045 (WSAAPI *LPFN_GETPEERNAME)(
1046 IN SOCKET s,
1047 OUT struct sockaddr FAR *name,
1048 IN OUT int FAR *namelen);
1049
1050 typedef int
1051 (WSAAPI *LPFN_GETSOCKNAME)(
1052 IN SOCKET s,
1053 OUT struct sockaddr FAR *name,
1054 IN OUT int FAR *namelen);
1055
1056 typedef int
1057 (WSAAPI *LPFN_GETSOCKOPT)(
1058 IN SOCKET s,
1059 IN int level,
1060 IN int optname,
1061 OUT char FAR *optval,
1062 IN OUT int FAR *optlen);
1063
1064 typedef u_long
1065 (WSAAPI *LPFN_HTONL)(
1066 IN u_long hostlong);
1067
1068 typedef u_short
1069 (WSAAPI *LPFN_HTONS)(
1070 IN u_short hostshort);
1071
1072 typedef unsigned long
1073 (WSAAPI *LPFN_INET_ADDR)(
1074 IN const char FAR *cp);
1075
1076 typedef char FAR *
1077 (WSAAPI *LPFN_INET_NTOA)(
1078 IN struct in_addr in);
1079
1080 typedef int
1081 (WSAAPI *LPFN_LISTEN)(
1082 IN SOCKET s,
1083 IN int backlog);
1084
1085 typedef u_long
1086 (WSAAPI *LPFN_NTOHL)(
1087 IN u_long netlong);
1088
1089 typedef u_short
1090 (WSAAPI *LPFN_NTOHS)(
1091 IN u_short netshort);
1092
1093 typedef int
1094 (WSAAPI *LPFN_RECV)(
1095 IN SOCKET s,
1096 OUT char FAR *buf,
1097 IN int len,
1098 IN int flags);
1099
1100 typedef int
1101 (WSAAPI *LPFN_RECVFROM)(
1102 IN SOCKET s,
1103 OUT char FAR *buf,
1104 IN int len,
1105 IN int flags,
1106 OUT struct sockaddr FAR *from OPTIONAL,
1107 IN OUT int FAR * fromlen OPTIONAL);
1108
1109 typedef int
1110 (WSAAPI *LPFN_SELECT)(
1111 IN int nfds,
1112 IN OUT fd_set FAR *readfds OPTIONAL,
1113 IN OUT fd_set FAR *writefds OPTIONAL,
1114 IN OUT fd_set FAR *exceptfds OPTIONAL,
1115 IN const struct timeval FAR *timeout OPTIONAL);
1116
1117 typedef int
1118 (WSAAPI *LPFN_SEND)(
1119 IN SOCKET s,
1120 IN const char FAR *buf,
1121 IN int len,
1122 IN int flags);
1123
1124 typedef int
1125 (WSAAPI *LPFN_SENDTO)(
1126 IN SOCKET s,
1127 IN const char FAR *buf,
1128 IN int len,
1129 IN int flags,
1130 IN const struct sockaddr FAR *to OPTIONAL,
1131 IN int tolen);
1132
1133 typedef int
1134 (WSAAPI *LPFN_SETSOCKOPT)(
1135 IN SOCKET s,
1136 IN int level,
1137 IN int optname,
1138 IN const char FAR *optval OPTIONAL,
1139 IN int optlen);
1140
1141 typedef int
1142 (WSAAPI *LPFN_SHUTDOWN)(
1143 IN SOCKET s,
1144 IN int how);
1145
1146 typedef SOCKET
1147 (WSAAPI *LPFN_SOCKET)(
1148 IN int af,
1149 IN int type,
1150 IN int protocol);
1151
1152 typedef struct hostent FAR *
1153 (WSAAPI *LPFN_GETHOSTBYADDR)(
1154 IN const char FAR *addr,
1155 IN int len,
1156 IN int type);
1157
1158 typedef struct hostent FAR *
1159 (WSAAPI *LPFN_GETHOSTBYNAME)(
1160 IN const char FAR *name);
1161
1162 typedef int
1163 (WSAAPI *LPFN_GETHOSTNAME)(
1164 OUT char FAR *name,
1165 IN int namelen);
1166
1167 typedef struct servent FAR *
1168 (WSAAPI *LPFN_GETSERVBYPORT)(
1169 IN int port,
1170 IN const char FAR *proto);
1171
1172 typedef struct servent FAR *
1173 (WSAAPI *LPFN_GETSERVBYNAME)(
1174 IN const char FAR *name,
1175 IN const char FAR *proto);
1176
1177 typedef struct protoent FAR *
1178 (WSAAPI *LPFN_GETPROTOBYNUMBER)(
1179 IN int number);
1180
1181 typedef struct protoent FAR *
1182 (WSAAPI *LPFN_GETPROTOBYNAME)(
1183 IN const char FAR *name);
1184
1185 typedef int
1186 (WSAAPI *LPFN_WSASTARTUP)(
1187 IN WORD wVersionRequired,
1188 OUT LPWSADATA lpWSAData);
1189
1190 typedef int
1191 (WSAAPI *LPFN_WSACLEANUP)(void);
1192
1193 typedef void
1194 (WSAAPI *LPFN_WSASETLASTERROR)(
1195 IN int iError);
1196
1197 typedef int
1198 (WSAAPI *LPFN_WSAGETLASTERROR)(void);
1199
1200 typedef BOOL
1201 (WSAAPI *LPFN_WSAISBLOCKING)(void);
1202
1203 typedef int
1204 (WSAAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
1205
1206 typedef FARPROC
1207 (WSAAPI *LPFN_WSASETBLOCKINGHOOK)(
1208 IN FARPROC lpBlockFunc);
1209
1210 typedef int
1211 (WSAAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
1212
1213 typedef HANDLE
1214 (WSAAPI *LPFN_WSAASYNCGETSERVBYNAME)(
1215 IN HWND hWnd,
1216 IN u_int wMsg,
1217 IN const char FAR *name,
1218 IN const char FAR *proto,
1219 OUT char FAR *buf,
1220 IN int buflen);
1221
1222 typedef HANDLE
1223 (WSAAPI *LPFN_WSAASYNCGETSERVBYPORT)(
1224 IN HWND hWnd,
1225 IN u_int wMsg,
1226 IN int port,
1227 IN const char FAR *proto,
1228 OUT char FAR *buf,
1229 IN int buflen);
1230
1231 typedef HANDLE
1232 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(
1233 IN HWND hWnd,
1234 IN u_int wMsg,
1235 IN const char FAR *name,
1236 OUT char FAR *buf,
1237 IN int buflen);
1238
1239 typedef HANDLE
1240 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(
1241 IN HWND hWnd,
1242 IN u_int wMsg,
1243 IN int number,
1244 OUT char FAR *buf,
1245 IN int buflen);
1246
1247 typedef HANDLE
1248 (WSAAPI *LPFN_WSAASYNCGETHOSTBYNAME)(
1249 IN HWND hWnd,
1250 IN u_int wMsg,
1251 IN const char FAR *name,
1252 OUT char FAR *buf,
1253 IN int buflen);
1254
1255 typedef HANDLE
1256 (WSAAPI *LPFN_WSAASYNCGETHOSTBYADDR)(
1257 IN HWND hWnd,
1258 IN u_int wMsg,
1259 IN const char FAR *addr,
1260 IN int len,
1261 IN int type,
1262 OUT char FAR *buf,
1263 IN int buflen);
1264
1265 typedef int
1266 (WSAAPI *LPFN_WSACANCELASYNCREQUEST)(
1267 IN HANDLE hAsyncTaskHandle);
1268
1269 typedef int
1270 (WSAAPI *LPFN_WSAASYNCSELECT)(
1271 IN SOCKET s,
1272 IN HWND hWnd,
1273 IN u_int wMsg,
1274 IN long lEvent);
1275
1276 typedef SOCKET
1277 (WSAAPI *LPFN_WSAACCEPT)(
1278 IN SOCKET s,
1279 OUT struct sockaddr FAR *addr OPTIONAL,
1280 IN OUT LPINT addrlen OPTIONAL,
1281 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
1282 IN DWORD_PTR dwCallbackData OPTIONAL);
1283
1284 typedef BOOL
1285 (WSAAPI *LPFN_WSACLOSEEVENT)(
1286 IN WSAEVENT hEvent);
1287
1288 typedef int
1289 (WSAAPI *LPFN_WSACONNECT)(
1290 IN SOCKET s,
1291 IN const struct sockaddr FAR *name,
1292 IN int namelen,
1293 IN LPWSABUF lpCallerData OPTIONAL,
1294 OUT LPWSABUF lpCalleeData OPTIONAL,
1295 IN LPQOS lpSQOS OPTIONAL,
1296 IN LPQOS lpGQOS OPTIONAL);
1297
1298 typedef WSAEVENT
1299 (WSAAPI *LPFN_WSACREATEEVENT)(void);
1300
1301 typedef int
1302 (WSAAPI *LPFN_WSADUPLICATESOCKETA)(
1303 IN SOCKET s,
1304 IN DWORD dwProcessId,
1305 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo);
1306
1307 typedef int
1308 (WSAAPI *LPFN_WSADUPLICATESOCKETW)(
1309 IN SOCKET s,
1310 IN DWORD dwProcessId,
1311 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
1312
1313 #ifdef UNICODE
1314 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1315 #else
1316 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
1317 #endif
1318
1319 typedef int
1320 (WSAAPI *LPFN_WSAENUMNETWORKEVENTS)(
1321 IN SOCKET s,
1322 IN WSAEVENT hEventObject,
1323 OUT LPWSANETWORKEVENTS lpNetworkEvents);
1324
1325 typedef int
1326 (WSAAPI *LPFN_WSAENUMPROTOCOLSA)(
1327 IN LPINT lpiProtocols OPTIONAL,
1328 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL,
1329 IN OUT LPDWORD lpdwBufferLength);
1330
1331 typedef int
1332 (WSAAPI *LPFN_WSAENUMPROTOCOLSW)(
1333 IN LPINT lpiProtocols OPTIONAL,
1334 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
1335 IN OUT LPDWORD lpdwBufferLength);
1336
1337 #ifdef UNICODE
1338 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1339 #else
1340 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1341 #endif
1342
1343 typedef int
1344 (WSAAPI *LPFN_WSAEVENTSELECT)(
1345 IN SOCKET s,
1346 IN WSAEVENT hEventObject,
1347 IN long lNetworkEvents);
1348
1349 typedef BOOL
1350 (WSAAPI *LPFN_WSAGETOVERLAPPEDRESULT)(
1351 IN SOCKET s,
1352 IN LPWSAOVERLAPPED lpOverlapped,
1353 OUT LPDWORD lpcbTransfer,
1354 IN BOOL fWait,
1355 OUT LPDWORD lpdwFlags);
1356
1357 typedef BOOL
1358 (WSAAPI *LPFN_WSAGETQOSBYNAME)(
1359 IN SOCKET s,
1360 IN LPWSABUF lpQOSName,
1361 OUT LPQOS lpQOS);
1362
1363 typedef int
1364 (WSAAPI *LPFN_WSAHTONL)(
1365 IN SOCKET s,
1366 IN u_long hostlong,
1367 OUT u_long FAR *lpnetlong);
1368
1369 typedef int
1370 (WSAAPI *LPFN_WSAHTONS)(
1371 IN SOCKET s,
1372 IN u_short hostshort,
1373 OUT u_short FAR *lpnetshort);
1374
1375 typedef int
1376 (WSAAPI *LPFN_WSAIOCTL)(
1377 IN SOCKET s,
1378 IN DWORD dwIoControlCode,
1379 IN LPVOID lpvInBuffer OPTIONAL,
1380 IN DWORD cbInBuffer,
1381 OUT LPVOID lpvOutBuffer OPTIONAL,
1382 IN DWORD cbOutBuffer,
1383 OUT LPDWORD lpcbBytesReturned,
1384 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1385 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1386
1387 typedef SOCKET
1388 (WSAAPI *LPFN_WSAJOINLEAF)(
1389 IN SOCKET s,
1390 IN const struct sockaddr FAR *name,
1391 IN int namelen,
1392 IN LPWSABUF lpCallerData OPTIONAL,
1393 OUT LPWSABUF lpCalleeData OPTIONAL,
1394 IN LPQOS lpSQOS OPTIONAL,
1395 IN LPQOS lpGQOS OPTIONAL,
1396 IN DWORD dwFlags);
1397
1398 typedef int
1399 (WSAAPI *LPFN_WSANTOHL)(
1400 IN SOCKET s,
1401 IN u_long netlong,
1402 OUT u_long FAR *lphostlong);
1403
1404 typedef int
1405 (WSAAPI *LPFN_WSANTOHS)(
1406 IN SOCKET s,
1407 IN u_short netshort,
1408 OUT u_short FAR *lphostshort);
1409
1410 typedef int
1411 (WSAAPI *LPFN_WSARECV)(
1412 IN SOCKET s,
1413 IN LPWSABUF lpBuffers,
1414 IN DWORD dwBufferCount,
1415 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
1416 IN OUT LPDWORD lpFlags,
1417 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1418 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1419
1420 typedef int
1421 (WSAAPI *LPFN_WSARECVDISCONNECT)(
1422 IN SOCKET s,
1423 OUT LPWSABUF lpInboundDisconnectData);
1424
1425 typedef int
1426 (WSAAPI *LPFN_WSARECVFROM)(
1427 IN SOCKET s,
1428 IN LPWSABUF lpBuffers,
1429 IN DWORD dwBufferCount,
1430 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
1431 IN OUT LPDWORD lpFlags,
1432 OUT struct sockaddr FAR *lpFrom OPTIONAL,
1433 IN OUT LPINT lpFromlen OPTIONAL,
1434 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1435 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1436
1437 typedef BOOL
1438 (WSAAPI *LPFN_WSARESETEVENT)(
1439 IN WSAEVENT hEvent);
1440
1441 typedef int
1442 (WSAAPI *LPFN_WSASEND)(
1443 IN SOCKET s,
1444 IN LPWSABUF lpBuffers,
1445 IN DWORD dwBufferCount,
1446 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
1447 IN DWORD dwFlags,
1448 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1449 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1450
1451 typedef int
1452 (WSAAPI *LPFN_WSASENDDISCONNECT)(
1453 IN SOCKET s,
1454 IN LPWSABUF lpOutboundDisconnectData OPTIONAL);
1455
1456 typedef int
1457 (WSAAPI *LPFN_WSASENDTO)(
1458 IN SOCKET s,
1459 IN LPWSABUF lpBuffers,
1460 IN DWORD dwBufferCount,
1461 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
1462 IN DWORD dwFlags,
1463 IN const struct sockaddr FAR *lpTo,
1464 IN int iTolen,
1465 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1466 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1467
1468 typedef BOOL
1469 (WSAAPI *LPFN_WSASETEVENT)(
1470 IN WSAEVENT hEvent);
1471
1472 typedef SOCKET
1473 (WSAAPI *LPFN_WSASOCKETA)(
1474 IN int af,
1475 IN int type,
1476 IN int protocol,
1477 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1478 IN GROUP g,
1479 IN DWORD dwFlags);
1480
1481 typedef SOCKET
1482 (WSAAPI *LPFN_WSASOCKETW)(
1483 IN int af,
1484 IN int type,
1485 IN int protocol,
1486 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1487 IN GROUP g,
1488 IN DWORD dwFlags);
1489
1490 #ifdef UNICODE
1491 #define LPFN_WSASOCKET LPFN_WSASOCKETW
1492 #else
1493 #define LPFN_WSASOCKET LPFN_WSASOCKETA
1494 #endif
1495
1496 typedef DWORD
1497 (WSAAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(
1498 IN DWORD cEvents,
1499 IN const WSAEVENT FAR *lphEvents,
1500 IN BOOL fWaitAll,
1501 IN DWORD dwTimeout,
1502 IN BOOL fAlertable);
1503
1504 typedef INT
1505 (WSAAPI *LPFN_WSAADDRESSTOSTRINGA)(
1506 IN LPSOCKADDR lpsaAddress,
1507 IN DWORD dwAddressLength,
1508 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1509 OUT LPSTR lpszAddressString,
1510 IN OUT LPDWORD lpdwAddressStringLength);
1511
1512 typedef INT
1513 (WSAAPI *LPFN_WSAADDRESSTOSTRINGW)(
1514 IN LPSOCKADDR lpsaAddress,
1515 IN DWORD dwAddressLength,
1516 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1517 OUT LPWSTR lpszAddressString,
1518 IN OUT LPDWORD lpdwAddressStringLength);
1519
1520 #ifdef UNICODE
1521 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1522 #else
1523 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1524 #endif
1525
1526 typedef INT
1527 (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(
1528 IN LPSTR AddressString,
1529 IN INT AddressFamily,
1530 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
1531 OUT LPSOCKADDR lpAddress,
1532 IN OUT LPINT lpAddressLength);
1533
1534 typedef INT
1535 (WSAAPI *LPFN_WSASTRINGTOADDRESSW)(
1536 IN LPWSTR AddressString,
1537 IN INT AddressFamily,
1538 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
1539 OUT LPSOCKADDR lpAddress,
1540 IN OUT LPINT lpAddressLength);
1541
1542 #ifdef UNICODE
1543 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1544 #else
1545 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1546 #endif
1547
1548 typedef INT
1549 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINA)(
1550 IN LPWSAQUERYSETA lpqsRestrictions,
1551 IN DWORD dwControlFlags,
1552 OUT LPHANDLE lphLookup);
1553
1554 typedef INT
1555 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINW)(
1556 IN LPWSAQUERYSETW lpqsRestrictions,
1557 IN DWORD dwControlFlags,
1558 OUT LPHANDLE lphLookup);
1559
1560 #ifdef UNICODE
1561 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1562 #else
1563 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1564 #endif
1565
1566 typedef INT
1567 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTA)(
1568 IN HANDLE hLookup,
1569 IN DWORD dwControlFlags,
1570 IN OUT LPDWORD lpdwBufferLength,
1571 OUT LPWSAQUERYSETA lpqsResults);
1572
1573 typedef INT
1574 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(
1575 IN HANDLE hLookup,
1576 IN DWORD dwControlFlags,
1577 IN OUT LPDWORD lpdwBufferLength,
1578 OUT LPWSAQUERYSETW lpqsResults OPTIONAL);
1579
1580 #ifdef UNICODE
1581 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1582 #else
1583 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1584 #endif
1585
1586 typedef INT
1587 (WSAAPI *LPFN_WSALOOKUPSERVICEEND)(
1588 IN HANDLE hLookup);
1589
1590 typedef INT
1591 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSA)(
1592 IN LPWSASERVICECLASSINFOA lpServiceClassInfo);
1593
1594 typedef INT
1595 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSW)(
1596 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
1597
1598 #ifdef UNICODE
1599 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1600 #else
1601 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1602 #endif
1603
1604 typedef INT
1605 (WSAAPI *LPFN_WSAREMOVESERVICECLASS)(
1606 IN LPGUID lpServiceClassId);
1607
1608 typedef INT
1609 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOA)(
1610 IN LPGUID lpProviderId,
1611 IN LPGUID lpServiceClassId,
1612 IN OUT LPDWORD lpdwBufSize,
1613 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo);
1614
1615 typedef INT
1616 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOW)(
1617 IN LPGUID lpProviderId,
1618 IN LPGUID lpServiceClassId,
1619 IN OUT LPDWORD lpdwBufSize,
1620 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
1621
1622 #ifdef UNICODE
1623 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1624 #else
1625 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1626 #endif
1627
1628 typedef INT
1629 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(
1630 IN OUT LPDWORD lpdwBufferLength,
1631 OUT LPWSANAMESPACE_INFOA lpnspBuffer);
1632
1633 typedef INT
1634 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(
1635 IN OUT LPDWORD lpdwBufferLength,
1636 OUT LPWSANAMESPACE_INFOW lpnspBuffer);
1637
1638 #ifdef UNICODE
1639 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1640 #else
1641 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1642 #endif
1643
1644 typedef INT
1645 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(
1646 IN LPGUID lpServiceClassId,
1647 OUT LPSTR lpszServiceClassName,
1648 IN OUT LPDWORD lpdwBufferLength);
1649
1650 typedef INT
1651 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(
1652 IN LPGUID lpServiceClassId,
1653 OUT LPWSTR lpszServiceClassName,
1654 IN OUT LPDWORD lpdwBufferLength);
1655
1656 #ifdef UNICODE
1657 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1658 #else
1659 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1660 #endif
1661
1662 typedef INT
1663 (WSAAPI *LPFN_WSASETSERVICEA)(
1664 IN LPWSAQUERYSETA lpqsRegInfo,
1665 IN WSAESETSERVICEOP essoperation,
1666 IN DWORD dwControlFlags);
1667
1668 typedef INT
1669 (WSAAPI *LPFN_WSASETSERVICEW)(
1670 IN LPWSAQUERYSETW lpqsRegInfo,
1671 IN WSAESETSERVICEOP essoperation,
1672 IN DWORD dwControlFlags);
1673
1674 #ifdef UNICODE
1675 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1676 #else
1677 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1678 #endif
1679
1680 typedef INT
1681 (WSAAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(
1682 IN OUT LPHANDLE lpNotificationHandle OPTIONAL,
1683 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
1684 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
1685
1686 #if(_WIN32_WINNT >= 0x0501)
1687 typedef INT
1688 (WSAAPI *LPFN_WSANSPIOCTL)(
1689 IN HANDLE hLookup,
1690 IN DWORD dwControlCode,
1691 IN LPVOID lpvInBuffer OPTIONAL,
1692 IN DWORD cbInBuffer,
1693 OUT LPVOID lpvOutBuffer OPTIONAL,
1694 IN DWORD cbOutBuffer,
1695 OUT LPDWORD lpcbBytesReturned,
1696 IN LPWSACOMPLETION lpCompletion OPTIONAL);
1697 #endif /* (_WIN32_WINNT >= 0x0501) */
1698
1699 #if (_WIN32_WINNT >= 0x0600)
1700
1701 typedef INT
1702 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXA)(
1703 IN OUT LPDWORD lpdwBufferLength,
1704 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer);
1705
1706 typedef INT
1707 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXW)(
1708 IN OUT LPDWORD lpdwBufferLength,
1709 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
1710
1711 #ifdef UNICODE
1712 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
1713 #else
1714 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXA
1715 #endif
1716
1717 #endif /* (_WIN32_WINNT >= 0x600) */
1718
1719 #endif /* INCL_WINSOCK_API_TYPEDEFS */
1720
1721 #if INCL_WINSOCK_API_PROTOTYPES
1722
1723 WINSOCK_API_LINKAGE
1724 SOCKET
1725 WSAAPI
1726 accept(
1727 IN SOCKET s,
1728 OUT struct sockaddr FAR *addr OPTIONAL,
1729 IN OUT int FAR *addrlen OPTIONAL);
1730
1731 WINSOCK_API_LINKAGE
1732 int
1733 WSAAPI
1734 bind(
1735 IN SOCKET s,
1736 IN const struct sockaddr FAR *addr,
1737 IN int namelen);
1738
1739 WINSOCK_API_LINKAGE
1740 int
1741 WSAAPI
1742 closesocket(
1743 IN SOCKET s);
1744
1745 WINSOCK_API_LINKAGE
1746 int
1747 WSAAPI
1748 connect(
1749 IN SOCKET s,
1750 IN const struct sockaddr FAR *name,
1751 IN int namelen);
1752
1753 WINSOCK_API_LINKAGE
1754 int
1755 WSAAPI
1756 ioctlsocket(
1757 IN SOCKET s,
1758 IN long cmd,
1759 IN OUT u_long FAR *argp);
1760
1761 WINSOCK_API_LINKAGE
1762 int
1763 WSAAPI
1764 getpeername(
1765 IN SOCKET s,
1766 OUT struct sockaddr FAR *name,
1767 IN OUT int FAR *namelen);
1768
1769 WINSOCK_API_LINKAGE
1770 int
1771 WSAAPI
1772 getsockname(
1773 IN SOCKET s,
1774 OUT struct sockaddr FAR *name,
1775 IN OUT int FAR *namelen);
1776
1777 WINSOCK_API_LINKAGE
1778 int
1779 WSAAPI
1780 getsockopt(
1781 IN SOCKET s,
1782 IN int level,
1783 IN int optname,
1784 OUT char FAR *optval,
1785 IN OUT int FAR *optlen);
1786
1787 WINSOCK_API_LINKAGE
1788 u_long
1789 WSAAPI
1790 htonl(
1791 IN u_long hostlong);
1792
1793 WINSOCK_API_LINKAGE
1794 u_short
1795 WSAAPI
1796 htons(
1797 IN u_short hostshort);
1798
1799 WINSOCK_API_LINKAGE
1800 unsigned long
1801 WSAAPI
1802 inet_addr(
1803 IN const char FAR *cp);
1804
1805 WINSOCK_API_LINKAGE
1806 char FAR *
1807 WSAAPI
1808 inet_ntoa(
1809 IN struct in_addr in);
1810
1811 WINSOCK_API_LINKAGE
1812 int
1813 WSAAPI
1814 listen(
1815 IN SOCKET s,
1816 IN int backlog);
1817
1818 WINSOCK_API_LINKAGE
1819 u_long
1820 WSAAPI
1821 ntohl(
1822 IN u_long netlong);
1823
1824 WINSOCK_API_LINKAGE
1825 u_short
1826 WSAAPI
1827 ntohs(
1828 IN u_short netshort);
1829
1830 WINSOCK_API_LINKAGE
1831 int
1832 WSAAPI
1833 recv(
1834 IN SOCKET s,
1835 OUT char FAR *buf,
1836 IN int len,
1837 IN int flags);
1838
1839 WINSOCK_API_LINKAGE
1840 int
1841 WSAAPI
1842 recvfrom(
1843 IN SOCKET s,
1844 OUT char FAR *buf,
1845 IN int len,
1846 IN int flags,
1847 OUT struct sockaddr FAR *from OPTIONAL,
1848 IN OUT int FAR *fromlen OPTIONAL);
1849
1850 WINSOCK_API_LINKAGE
1851 int
1852 WSAAPI
1853 select(
1854 IN int nfds,
1855 IN OUT fd_set FAR *readfds OPTIONAL,
1856 IN OUT fd_set FAR *writefds OPTIONAL,
1857 IN OUT fd_set FAR *exceptfds OPTIONAL,
1858 IN const struct timeval FAR *timeout OPTIONAL);
1859
1860 WINSOCK_API_LINKAGE
1861 int
1862 WSAAPI
1863 send(
1864 IN SOCKET s,
1865 IN const char FAR *buf,
1866 IN int len,
1867 IN int flags);
1868
1869 WINSOCK_API_LINKAGE
1870 int
1871 WSAAPI
1872 sendto(
1873 IN SOCKET s,
1874 IN const char FAR *buf,
1875 IN int len,
1876 IN int flags,
1877 IN const struct sockaddr FAR *to OPTIONAL,
1878 IN int tolen);
1879
1880 WINSOCK_API_LINKAGE
1881 int
1882 WSAAPI
1883 setsockopt(
1884 IN SOCKET s,
1885 IN int level,
1886 IN int optname,
1887 IN const char FAR *optval OPTIONAL,
1888 IN int optlen);
1889
1890 WINSOCK_API_LINKAGE
1891 int
1892 WSAAPI
1893 shutdown(
1894 IN SOCKET s,
1895 IN int how);
1896
1897 WINSOCK_API_LINKAGE
1898 SOCKET
1899 WSAAPI
1900 socket(
1901 IN int af,
1902 IN int type,
1903 IN int protocol);
1904
1905 WINSOCK_API_LINKAGE
1906 struct hostent FAR *
1907 WSAAPI
1908 gethostbyaddr(
1909 IN const char FAR *addr,
1910 IN int len,
1911 IN int type);
1912
1913 WINSOCK_API_LINKAGE
1914 struct hostent FAR *
1915 WSAAPI
1916 gethostbyname(
1917 IN const char FAR *name);
1918
1919 WINSOCK_API_LINKAGE
1920 int
1921 WSAAPI
1922 gethostname(
1923 OUT char FAR *name,
1924 IN int namelen);
1925
1926 WINSOCK_API_LINKAGE
1927 struct servent FAR *
1928 WSAAPI
1929 getservbyport(
1930 IN int port,
1931 IN const char FAR *proto);
1932
1933 WINSOCK_API_LINKAGE
1934 struct servent FAR *
1935 WSAAPI
1936 getservbyname(
1937 IN const char FAR *name,
1938 IN const char FAR *proto);
1939
1940 WINSOCK_API_LINKAGE
1941 struct protoent FAR *
1942 WSAAPI
1943 getprotobynumber(
1944 IN int number);
1945
1946 WINSOCK_API_LINKAGE
1947 struct protoent FAR *
1948 WSAAPI
1949 getprotobyname(
1950 IN const char FAR *name);
1951
1952 WINSOCK_API_LINKAGE
1953 int
1954 WSAAPI
1955 WSAStartup(
1956 IN WORD wVersionRequired,
1957 OUT LPWSADATA lpWSAData);
1958
1959 WINSOCK_API_LINKAGE
1960 int
1961 WSAAPI
1962 WSACleanup(void);
1963
1964 WINSOCK_API_LINKAGE
1965 void
1966 WSAAPI
1967 WSASetLastError(
1968 IN int iError);
1969
1970 WINSOCK_API_LINKAGE
1971 int
1972 WSAAPI
1973 WSAGetLastError(void);
1974
1975 WINSOCK_API_LINKAGE
1976 BOOL
1977 WSAAPI
1978 WSAIsBlocking(void);
1979
1980 WINSOCK_API_LINKAGE
1981 int
1982 WSAAPI
1983 WSAUnhookBlockingHook(void);
1984
1985 WINSOCK_API_LINKAGE
1986 FARPROC
1987 WSAAPI
1988 WSASetBlockingHook(
1989 IN FARPROC lpBlockFunc);
1990
1991 WINSOCK_API_LINKAGE
1992 int
1993 WSAAPI
1994 WSACancelBlockingCall(void);
1995
1996 WINSOCK_API_LINKAGE
1997 HANDLE
1998 WSAAPI
1999 WSAAsyncGetServByName(
2000 IN HWND hWnd,
2001 IN u_int wMsg,
2002 IN const char FAR *name,
2003 IN const char FAR *proto,
2004 OUT char FAR *buf,
2005 IN int buflen);
2006
2007 WINSOCK_API_LINKAGE
2008 HANDLE
2009 WSAAPI
2010 WSAAsyncGetServByPort(
2011 IN HWND hWnd,
2012 IN u_int wMsg,
2013 IN int port,
2014 IN const char FAR *proto,
2015 OUT char FAR *buf,
2016 IN int buflen);
2017
2018 WINSOCK_API_LINKAGE
2019 HANDLE
2020 WSAAPI
2021 WSAAsyncGetProtoByName(
2022 IN HWND hWnd,
2023 IN u_int wMsg,
2024 IN const char FAR *name,
2025 OUT char FAR *buf,
2026 IN int buflen);
2027
2028 WINSOCK_API_LINKAGE
2029 HANDLE
2030 WSAAPI
2031 WSAAsyncGetProtoByNumber(
2032 IN HWND hWnd,
2033 IN u_int wMsg,
2034 IN int number,
2035 OUT char FAR *buf,
2036 IN int buflen);
2037
2038 WINSOCK_API_LINKAGE
2039 HANDLE
2040 WSAAPI
2041 WSAAsyncGetHostByName(
2042 IN HWND hWnd,
2043 IN u_int wMsg,
2044 IN const char FAR *name,
2045 OUT char FAR *buf,
2046 IN int buflen);
2047
2048 WINSOCK_API_LINKAGE
2049 HANDLE
2050 WSAAPI
2051 WSAAsyncGetHostByAddr(
2052 IN HWND hWnd,
2053 IN u_int wMsg,
2054 IN const char FAR *addr,
2055 IN int len,
2056 IN int type,
2057 OUT char FAR *buf,
2058 IN int buflen);
2059
2060 WINSOCK_API_LINKAGE
2061 int
2062 WSAAPI
2063 WSACancelAsyncRequest(
2064 IN HANDLE hAsyncTaskHandle);
2065
2066 WINSOCK_API_LINKAGE
2067 int
2068 WSAAPI
2069 WSAAsyncSelect(
2070 IN SOCKET s,
2071 IN HWND hWnd,
2072 IN u_int wMsg,
2073 IN long lEvent);
2074
2075 WINSOCK_API_LINKAGE
2076 SOCKET
2077 WSAAPI
2078 WSAAccept(
2079 IN SOCKET s,
2080 OUT struct sockaddr FAR *addr OPTIONAL,
2081 IN OUT LPINT addrlen OPTIONAL,
2082 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
2083 IN DWORD_PTR dwCallbackData OPTIONAL);
2084
2085 WINSOCK_API_LINKAGE
2086 BOOL
2087 WSAAPI
2088 WSACloseEvent(
2089 IN WSAEVENT hEvent);
2090
2091 WINSOCK_API_LINKAGE
2092 int
2093 WSAAPI
2094 WSAConnect(
2095 IN SOCKET s,
2096 IN const struct sockaddr FAR *name,
2097 IN int namelen,
2098 IN LPWSABUF lpCallerData OPTIONAL,
2099 OUT LPWSABUF lpCalleeData OPTIONAL,
2100 IN LPQOS lpSQOS OPTIONAL,
2101 IN LPQOS lpGQOS OPTIONAL);
2102
2103 #ifdef UNICODE
2104 #define WSAConnectByName WSAConnectByNameW
2105 #else
2106 #define WSAConnectByName WSAConnectByNameA
2107 #endif
2108
2109 BOOL
2110 PASCAL
2111 WSAConnectByNameW(
2112 IN SOCKET s,
2113 IN LPWSTR nodename,
2114 IN LPWSTR servicename,
2115 IN OUT LPDWORD LocalAddressLength,
2116 OUT LPSOCKADDR LocalAddress,
2117 IN OUT LPDWORD RemoteAddressLength,
2118 OUT LPSOCKADDR RemoteAddress,
2119 IN const struct timeval *timeout,
2120 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2121
2122 BOOL
2123 PASCAL
2124 WSAConnectByNameA(
2125 IN SOCKET s,
2126 IN LPCSTR nodename,
2127 IN LPCSTR servicename,
2128 IN OUT LPDWORD LocalAddressLength,
2129 OUT LPSOCKADDR LocalAddress,
2130 IN OUT LPDWORD RemoteAddressLength,
2131 OUT LPSOCKADDR RemoteAddress,
2132 IN const struct timeval *timeout,
2133 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2134
2135 BOOL
2136 PASCAL
2137 WSAConnectByList(
2138 IN SOCKET s,
2139 IN PSOCKET_ADDRESS_LIST SocketAddress,
2140 IN OUT LPDWORD LocalAddressLength,
2141 OUT LPSOCKADDR LocalAddress,
2142 IN OUT LPDWORD RemoteAddressLength,
2143 OUT LPSOCKADDR RemoteAddress,
2144 IN const struct timeval *timeout,
2145 IN LPWSAOVERLAPPED Reserved OPTIONAL);
2146
2147 WINSOCK_API_LINKAGE
2148 WSAEVENT
2149 WSAAPI
2150 WSACreateEvent(void);
2151
2152 WINSOCK_API_LINKAGE
2153 int
2154 WSAAPI
2155 WSADuplicateSocketA(
2156 IN SOCKET s,
2157 IN DWORD dwProcessId,
2158 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo);
2159
2160 WINSOCK_API_LINKAGE
2161 int
2162 WSAAPI
2163 WSADuplicateSocketW(
2164 IN SOCKET s,
2165 IN DWORD dwProcessId,
2166 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
2167
2168 #ifdef UNICODE
2169 #define WSADuplicateSocket WSADuplicateSocketW
2170 #else
2171 #define WSADuplicateSocket WSADuplicateSocketA
2172 #endif
2173
2174 WINSOCK_API_LINKAGE
2175 int
2176 WSAAPI
2177 WSAEnumNetworkEvents(
2178 IN SOCKET s,
2179 IN WSAEVENT hEventObject,
2180 OUT LPWSANETWORKEVENTS lpNetworkEvents);
2181
2182 WINSOCK_API_LINKAGE
2183 int
2184 WSAAPI
2185 WSAEnumProtocolsA(
2186 IN LPINT lpiProtocols OPTIONAL,
2187 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL,
2188 IN OUT LPDWORD lpdwBufferLength);
2189
2190 WINSOCK_API_LINKAGE
2191 int
2192 WSAAPI
2193 WSAEnumProtocolsW(
2194 IN LPINT lpiProtocols OPTIONAL,
2195 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
2196 IN OUT LPDWORD lpdwBufferLength);
2197
2198 #ifdef UNICODE
2199 #define WSAEnumProtocols WSAEnumProtocolsW
2200 #else
2201 #define WSAEnumProtocols WSAEnumProtocolsA
2202 #endif
2203
2204 WINSOCK_API_LINKAGE
2205 int
2206 WSAAPI
2207 WSAEventSelect(
2208 IN SOCKET s,
2209 IN WSAEVENT hEventObject,
2210 IN long lNetworkEvents);
2211
2212 WINSOCK_API_LINKAGE
2213 BOOL
2214 WSAAPI
2215 WSAGetOverlappedResult(
2216 IN SOCKET s,
2217 IN LPWSAOVERLAPPED lpOverlapped,
2218 OUT LPDWORD lpcbTransfer,
2219 IN BOOL fWait,
2220 OUT LPDWORD lpdwFlags);
2221
2222 WINSOCK_API_LINKAGE
2223 BOOL
2224 WSAAPI
2225 WSAGetQOSByName(
2226 IN SOCKET s,
2227 IN LPWSABUF lpQOSName,
2228 OUT LPQOS lpQOS);
2229
2230 WINSOCK_API_LINKAGE
2231 int
2232 WSAAPI
2233 WSAHtonl(
2234 IN SOCKET s,
2235 IN u_long hostlong,
2236 OUT u_long FAR *lpnetlong);
2237
2238 WINSOCK_API_LINKAGE
2239 int
2240 WSAAPI
2241 WSAHtons(
2242 IN SOCKET s,
2243 IN u_short hostshort,
2244 OUT u_short FAR *lpnetshort);
2245
2246 WINSOCK_API_LINKAGE
2247 int
2248 WSAAPI
2249 WSAIoctl(
2250 IN SOCKET s,
2251 IN DWORD dwIoControlCode,
2252 IN LPVOID lpvInBuffer OPTIONAL,
2253 IN DWORD cbInBuffer,
2254 OUT LPVOID lpvOutBuffer OPTIONAL,
2255 IN DWORD cbOutBuffer,
2256 OUT LPDWORD lpcbBytesReturned,
2257 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2258 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2259
2260 WINSOCK_API_LINKAGE
2261 SOCKET
2262 WSAAPI
2263 WSAJoinLeaf(
2264 IN SOCKET s,
2265 IN const struct sockaddr FAR *name,
2266 IN int namelen,
2267 IN LPWSABUF lpCallerData OPTIONAL,
2268 OUT LPWSABUF lpCalleeData OPTIONAL,
2269 IN LPQOS lpSQOS OPTIONAL,
2270 IN LPQOS lpGQOS OPTIONAL,
2271 IN DWORD dwFlags);
2272
2273 WINSOCK_API_LINKAGE
2274 int
2275 WSAAPI
2276 WSANtohl(
2277 IN SOCKET s,
2278 IN u_long netlong,
2279 OUT u_long FAR *lphostlong);
2280
2281 WINSOCK_API_LINKAGE
2282 int
2283 WSAAPI
2284 WSANtohs(
2285 IN SOCKET s,
2286 IN u_short netshort,
2287 OUT u_short FAR *lphostshort);
2288
2289 WINSOCK_API_LINKAGE
2290 int
2291 WSAAPI
2292 WSARecv(
2293 IN SOCKET s,
2294 IN LPWSABUF lpBuffers,
2295 IN DWORD dwBufferCount,
2296 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
2297 IN OUT LPDWORD lpFlags,
2298 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2299 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2300
2301 WINSOCK_API_LINKAGE
2302 int
2303 WSAAPI
2304 WSARecvDisconnect(
2305 IN SOCKET s,
2306 IN LPWSABUF lpInboundDisconnectData OPTIONAL);
2307
2308 WINSOCK_API_LINKAGE
2309 int
2310 WSAAPI
2311 WSARecvFrom(
2312 IN SOCKET s,
2313 IN OUT LPWSABUF lpBuffers,
2314 IN DWORD dwBufferCount,
2315 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
2316 IN OUT LPDWORD lpFlags,
2317 OUT struct sockaddr FAR *lpFrom,
2318 IN OUT LPINT lpFromlen OPTIONAL,
2319 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2320 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2321
2322 WINSOCK_API_LINKAGE
2323 BOOL
2324 WSAAPI
2325 WSAResetEvent(
2326 IN WSAEVENT hEvent);
2327
2328 WINSOCK_API_LINKAGE
2329 int
2330 WSAAPI
2331 WSASendDisconnect(
2332 IN SOCKET s,
2333 IN LPWSABUF lpOutboundDisconnectData OPTIONAL);
2334
2335 WINSOCK_API_LINKAGE
2336 int
2337 WSAAPI
2338 WSASend(
2339 IN SOCKET s,
2340 IN LPWSABUF lpBuffers,
2341 IN DWORD dwBufferCount,
2342 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2343 IN DWORD dwFlags,
2344 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2345 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2346
2347 WINSOCK_API_LINKAGE
2348 int
2349 WSAAPI
2350 WSASendTo(
2351 IN SOCKET s,
2352 IN LPWSABUF lpBuffers,
2353 IN DWORD dwBufferCount,
2354 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2355 IN DWORD dwFlags,
2356 IN const struct sockaddr FAR *lpTo OPTIONAL,
2357 IN int iTolen,
2358 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2359 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2360
2361 WINSOCK_API_LINKAGE
2362 BOOL
2363 WSAAPI
2364 WSASetEvent(
2365 IN WSAEVENT hEvent);
2366
2367 WINSOCK_API_LINKAGE
2368 SOCKET
2369 WSAAPI
2370 WSASocketA(
2371 IN int af,
2372 IN int type,
2373 IN int protocol,
2374 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2375 IN GROUP g,
2376 IN DWORD dwFlags);
2377
2378 WINSOCK_API_LINKAGE
2379 SOCKET
2380 WSAAPI
2381 WSASocketW(
2382 IN int af,
2383 IN int type,
2384 IN int protocol,
2385 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2386 IN GROUP g,
2387 IN DWORD dwFlags);
2388
2389 #ifdef UNICODE
2390 #define WSASocket WSASocketW
2391 #else
2392 #define WSASocket WSASocketA
2393 #endif
2394
2395 WINSOCK_API_LINKAGE
2396 DWORD
2397 WSAAPI
2398 WSAWaitForMultipleEvents(
2399 IN DWORD cEvents,
2400 IN const WSAEVENT FAR *lphEvents,
2401 IN BOOL fWaitAll,
2402 IN DWORD dwTimeout,
2403 IN BOOL fAlertable);
2404
2405 WINSOCK_API_LINKAGE
2406 INT
2407 WSAAPI
2408 WSAAddressToStringA(
2409 IN LPSOCKADDR lpsaAddress,
2410 IN DWORD dwAddressLength,
2411 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2412 OUT LPSTR lpszAddressString,
2413 IN OUT LPDWORD lpdwAddressStringLength);
2414
2415 WINSOCK_API_LINKAGE
2416 INT
2417 WSAAPI
2418 WSAAddressToStringW(
2419 IN LPSOCKADDR lpsaAddress,
2420 IN DWORD dwAddressLength,
2421 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2422 OUT LPWSTR lpszAddressString,
2423 IN OUT LPDWORD lpdwAddressStringLength);
2424
2425 #ifdef UNICODE
2426 #define WSAAddressToString WSAAddressToStringW
2427 #else
2428 #define WSAAddressToString WSAAddressToStringA
2429 #endif
2430
2431 WINSOCK_API_LINKAGE
2432 INT
2433 WSAAPI
2434 WSAStringToAddressA(
2435 IN LPSTR AddressString,
2436 IN INT AddressFamily,
2437 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL,
2438 OUT LPSOCKADDR lpAddress,
2439 IN OUT LPINT lpAddressLength);
2440
2441 WINSOCK_API_LINKAGE
2442 INT
2443 WSAAPI
2444 WSAStringToAddressW(
2445 IN LPWSTR AddressString,
2446 IN INT AddressFamily,
2447 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
2448 OUT LPSOCKADDR lpAddress,
2449 IN OUT LPINT lpAddressLength);
2450
2451 #ifdef UNICODE
2452 #define WSAStringToAddress WSAStringToAddressW
2453 #else
2454 #define WSAStringToAddress WSAStringToAddressA
2455 #endif
2456
2457 WINSOCK_API_LINKAGE
2458 INT
2459 WSAAPI
2460 WSALookupServiceBeginA(
2461 IN LPWSAQUERYSETA lpqsRestrictions,
2462 IN DWORD dwControlFlags,
2463 OUT LPHANDLE lphLookup);
2464
2465 WINSOCK_API_LINKAGE
2466 INT
2467 WSAAPI
2468 WSALookupServiceBeginW(
2469 IN LPWSAQUERYSETW lpqsRestrictions,
2470 IN DWORD dwControlFlags,
2471 OUT LPHANDLE lphLookup);
2472
2473 #ifdef UNICODE
2474 #define WSALookupServiceBegin WSALookupServiceBeginW
2475 #else
2476 #define WSALookupServiceBegin WSALookupServiceBeginA
2477 #endif
2478
2479 WINSOCK_API_LINKAGE
2480 INT
2481 WSAAPI
2482 WSALookupServiceNextA(
2483 IN HANDLE hLookup,
2484 IN DWORD dwControlFlags,
2485 IN OUT LPDWORD lpdwBufferLength,
2486 OUT LPWSAQUERYSETA lpqsResults);
2487
2488 WINSOCK_API_LINKAGE
2489 INT
2490 WSAAPI
2491 WSALookupServiceNextW(
2492 IN HANDLE hLookup,
2493 IN DWORD dwControlFlags,
2494 IN OUT LPDWORD lpdwBufferLength,
2495 OUT LPWSAQUERYSETW lpqsResults OPTIONAL);
2496
2497 #ifdef UNICODE
2498 #define WSALookupServiceNext WSALookupServiceNextW
2499 #else
2500 #define WSALookupServiceNext WSALookupServiceNextA
2501 #endif
2502
2503 WINSOCK_API_LINKAGE
2504 INT
2505 WSAAPI
2506 WSALookupServiceEnd(
2507 IN HANDLE hLookup);
2508
2509 WINSOCK_API_LINKAGE
2510 INT
2511 WSAAPI
2512 WSAInstallServiceClassA(
2513 IN LPWSASERVICECLASSINFOA lpServiceClassInfo);
2514
2515 WINSOCK_API_LINKAGE
2516 INT
2517 WSAAPI
2518 WSAInstallServiceClassW(
2519 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
2520
2521 #ifdef UNICODE
2522 #define WSAInstallServiceClass WSAInstallServiceClassW
2523 #else
2524 #define WSAInstallServiceClass WSAInstallServiceClassA
2525 #endif
2526
2527 WINSOCK_API_LINKAGE
2528 INT
2529 WSAAPI
2530 WSARemoveServiceClass(
2531 IN LPGUID lpServiceClassId);
2532
2533 WINSOCK_API_LINKAGE
2534 INT
2535 WSAAPI
2536 WSAGetServiceClassInfoA(
2537 IN LPGUID lpProviderId,
2538 IN LPGUID lpServiceClassId,
2539 IN OUT LPDWORD lpdwBufSize,
2540 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo);
2541
2542 WINSOCK_API_LINKAGE
2543 INT
2544 WSAAPI
2545 WSAGetServiceClassInfoW(
2546 IN LPGUID lpProviderId,
2547 IN LPGUID lpServiceClassId,
2548 IN OUT LPDWORD lpdwBufSize,
2549 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
2550
2551 #ifdef UNICODE
2552 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
2553 #else
2554 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
2555 #endif
2556
2557 WINSOCK_API_LINKAGE
2558 INT
2559 WSAAPI
2560 WSAEnumNameSpaceProvidersA(
2561 IN OUT LPDWORD lpdwBufferLength,
2562 OUT LPWSANAMESPACE_INFOA lpnspBuffer);
2563
2564 WINSOCK_API_LINKAGE
2565 INT
2566 WSAAPI
2567 WSAEnumNameSpaceProvidersW(
2568 IN OUT LPDWORD lpdwBufferLength,
2569 OUT LPWSANAMESPACE_INFOW lpnspBuffer);
2570
2571 #ifdef UNICODE
2572 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
2573 #else
2574 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
2575 #endif
2576
2577 WINSOCK_API_LINKAGE
2578 INT
2579 WSAAPI
2580 WSAGetServiceClassNameByClassIdA(
2581 IN LPGUID lpServiceClassId,
2582 OUT LPSTR lpszServiceClassName,
2583 IN OUT LPDWORD lpdwBufferLength);
2584
2585 WINSOCK_API_LINKAGE
2586 INT
2587 WSAAPI
2588 WSAGetServiceClassNameByClassIdW(
2589 IN LPGUID lpServiceClassId,
2590 OUT LPWSTR lpszServiceClassName,
2591 IN OUT LPDWORD lpdwBufferLength);
2592
2593 #ifdef UNICODE
2594 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
2595 #else
2596 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
2597 #endif
2598
2599 WINSOCK_API_LINKAGE
2600 INT
2601 WSAAPI
2602 WSASetServiceA(
2603 IN LPWSAQUERYSETA lpqsRegInfo,
2604 IN WSAESETSERVICEOP essoperation,
2605 IN DWORD dwControlFlags);
2606
2607 WINSOCK_API_LINKAGE
2608 INT
2609 WSAAPI
2610 WSASetServiceW(
2611 IN LPWSAQUERYSETW lpqsRegInfo,
2612 IN WSAESETSERVICEOP essoperation,
2613 IN DWORD dwControlFlags);
2614
2615 #ifdef UNICODE
2616 #define WSASetService WSASetServiceW
2617 #else
2618 #define WSASetService WSASetServiceA
2619 #endif
2620
2621 WINSOCK_API_LINKAGE
2622 INT
2623 WSAAPI
2624 WSAProviderConfigChange(
2625 IN OUT LPHANDLE lpNotificationHandle OPTIONAL,
2626 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2627 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2628
2629 #if(_WIN32_WINNT >= 0x0501)
2630 WINSOCK_API_LINKAGE
2631 INT
2632 WSAAPI
2633 WSANSPIoctl(
2634 IN HANDLE hLookup,
2635 IN DWORD dwControlCode,
2636 IN LPVOID lpvInBuffer OPTIONAL,
2637 IN DWORD cbInBuffer,
2638 OUT LPVOID lpvOutBuffer OPTIONAL,
2639 IN DWORD cbOutBuffer,
2640 OUT LPDWORD lpcbBytesReturned,
2641 IN LPWSACOMPLETION lpCompletion OPTIONAL);
2642 #endif /* (_WIN32_WINNT >= 0x0501) */
2643
2644 #if(_WIN32_WINNT >= 0x0600)
2645
2646 WINSOCK_API_LINKAGE
2647 int
2648 WSAAPI
2649 WSASendMsg(
2650 IN SOCKET Handle,
2651 IN LPWSAMSG lpMsg,
2652 IN DWORD dwFlags,
2653 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
2654 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
2655 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL);
2656
2657 WINSOCK_API_LINKAGE
2658 INT
2659 WSAAPI
2660 WSAEnumNameSpaceProvidersExA(
2661 IN OUT LPDWORD lpdwBufferLength,
2662 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer);
2663
2664 WINSOCK_API_LINKAGE
2665 INT
2666 WSAAPI
2667 WSAEnumNameSpaceProvidersExW(
2668 IN OUT LPDWORD lpdwBufferLength,
2669 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
2670
2671 #ifdef UNICODE
2672 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
2673 #else
2674 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA
2675 #endif
2676
2677 WINSOCK_API_LINKAGE
2678 int
2679 WSAAPI
2680 WSAPoll(
2681 IN OUT LPWSAPOLLFD fdArray,
2682 IN ULONG fds,
2683 IN INT timeout);
2684
2685 #endif /* (_WIN32_WINNT >= 0x0600) */
2686
2687 #endif /* INCL_WINSOCK_API_PROTOTYPES */
2688
2689 typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
2690 typedef struct linger LINGER;
2691 typedef struct linger *PLINGER;
2692 typedef struct linger FAR *LPLINGER;
2693 typedef struct fd_set FD_SET;
2694 typedef struct fd_set *PFD_SET;
2695 typedef struct fd_set FAR *LPFD_SET;
2696 typedef struct hostent HOSTENT;
2697 typedef struct hostent *PHOSTENT;
2698 typedef struct hostent FAR *LPHOSTENT;
2699 typedef struct servent SERVENT;
2700 typedef struct servent *PSERVENT;
2701 typedef struct servent FAR *LPSERVENT;
2702 typedef struct protoent PROTOENT;
2703 typedef struct protoent *PPROTOENT;
2704 typedef struct protoent FAR *LPPROTOENT;
2705 typedef struct timeval TIMEVAL;
2706 typedef struct timeval *PTIMEVAL;
2707 typedef struct timeval FAR *LPTIMEVAL;
2708
2709 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
2710 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
2711 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
2712 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
2713 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
2714 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
2715
2716 #ifdef __cplusplus
2717 }
2718 #endif
2719
2720 #ifdef _NEED_POPPACK
2721 #include <poppack.h>
2722 #endif
2723
2724 /* FIXME :
2725 #if(_WIN32_WINNT >= 0x0501)
2726 #ifdef IPV6STRICT
2727 #include <wsipv6ok.h>
2728 #endif
2729 #endif */
2730
2731 #endif /* !(defined _WINSOCK2API_ || defined _WINSOCKAPI_) */