3 #if !(defined _WINSOCK2API_ || defined _WINSOCKAPI_)
5 #define _WINSOCKAPI_ /* to prevent later inclusion of winsock.h */
7 #define _GNU_H_WINDOWS32_SOCKETS
9 #if (!defined(_WIN64) && !defined(WIN32))
14 #ifndef INCL_WINSOCK_API_PROTOTYPES
15 #define INCL_WINSOCK_API_PROTOTYPES 1
18 #ifndef INCL_WINSOCK_API_TYPEDEFS
19 #define INCL_WINSOCK_API_TYPEDEFS 0
26 #if !defined(MAKEWORD)
27 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
30 #ifndef WINSOCK_VERSION
31 #define WINSOCK_VERSION MAKEWORD(2,2)
34 #ifndef WINSOCK_API_LINKAGE
35 #ifdef DECLSPEC_IMPORT
36 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
38 #define WINSOCK_API_LINKAGE
42 #if defined(__LP64__) || (!defined(_M_AMD64) && defined(__WINESRC__))
43 #if !defined(__ROS_LONG64__)
44 #define __ROS_LONG64__
52 /* Names common to Winsock1.1 and Winsock2 */
53 #if !defined ( _BSDTYPES_DEFINED )
54 /* also defined in gmon.h and in cygwin's sys/types */
55 typedef unsigned char u_char
;
56 typedef unsigned short u_short
;
57 typedef unsigned int u_int
;
58 #ifndef __ROS_LONG64__
59 typedef unsigned long u_long
;
61 typedef unsigned int u_long
;
63 #define _BSDTYPES_DEFINED
64 #endif /* ! def _BSDTYPES_DEFINED */
66 #if(_WIN32_WINNT >= 0x0501)
67 typedef unsigned __int64 u_int64
;
68 #endif /* (_WIN32_WINNT >= 0x0501) */
72 typedef UINT_PTR SOCKET
;
78 #ifndef _SYS_TYPES_FD_SET
80 /* fd_set may be defined by the newlib <sys/types.h>
81 * if __USE_W32_SOCKETS not defined.
87 typedef struct fd_set
{
89 SOCKET fd_array
[FD_SETSIZE
];
92 extern int PASCAL FAR
__WSAFDIsSet(SOCKET
,fd_set FAR
*);
95 #define FD_CLR(fd, set) do { \
97 for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count ; __i++) { \
98 if (((fd_set FAR*)(set))->fd_array[__i] == fd) { \
99 while (__i < ((fd_set FAR*)(set))->fd_count-1) { \
100 ((fd_set FAR*)(set))->fd_array[__i] = \
101 ((fd_set FAR*)(set))->fd_array[__i+1]; \
104 ((fd_set FAR*)(set))->fd_count--; \
112 /* this differs from the define in winsock.h and in cygwin sys/types.h */
113 #define FD_SET(fd, set) do { \
115 for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
116 if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
120 if (__i == ((fd_set FAR *)(set))->fd_count) { \
121 if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
122 ((fd_set FAR *)(set))->fd_array[__i] = (fd); \
123 ((fd_set FAR *)(set))->fd_count++; \
130 #define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count=0)
134 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR*)(set))
137 #elif !defined (USE_SYS_TYPES_FD_SET)
138 #warning "fd_set and associated macros have been defined in sys/types. \
139 This may cause runtime problems with W32 sockets"
140 #endif /* ndef _SYS_TYPES_FD_SET */
142 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
144 #ifndef _TIMEVAL_DEFINED
146 /* also in sys/time.h */
147 #define _TIMEVAL_DEFINED
148 #define _STRUCT_TIMEVAL
154 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
156 #define timercmp(tvp, uvp, cmp) \
157 (((tvp)->tv_sec != (uvp)->tv_sec) ? \
158 ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
159 ((tvp)->tv_usec cmp (uvp)->tv_usec))
161 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
163 #endif /* _TIMEVAL_DEFINED */
165 #define h_addr h_addr_list[0]
180 #define FIONBIO _IOW('f', 126, u_long)
191 char FAR
**s_aliases
;
207 #define SOMAXCONN 0x7fffffff
211 #define MSG_DONTROUTE 4
212 #if(_WIN32_WINNT >= 0x0502)
213 #define MSG_WAITALL 8
216 #define h_errno WSAGetLastError()
217 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
218 #define TRY_AGAIN WSATRY_AGAIN
219 #define NO_RECOVERY WSANO_RECOVERY
220 #define NO_DATA WSANO_DATA
221 #define NO_ADDRESS WSANO_ADDRESS
223 #endif /* !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) */
225 #define FIONREAD _IOR('f', 127, u_long)
226 #define FIOASYNC _IOW('f', 125, u_long)
227 #define SIOCSHIWAT _IOW('s', 0, u_long)
228 #define SIOCGHIWAT _IOR('s', 1, u_long)
229 #define SIOCSLOWAT _IOW('s', 2, u_long)
230 #define SIOCGLOWAT _IOR('s', 3, u_long)
231 #define SIOCATMARK _IOR('s', 7, u_long)
233 #define IMPLINK_IP 155
234 #define IMPLINK_LOWEXPER 156
235 #define IMPLINK_HIGHEXPER 158
237 #define ADDR_ANY INADDR_ANY
239 #define WSADESCRIPTION_LEN 256
240 #define WSASYS_STATUS_LEN 128
242 #define INVALID_SOCKET (SOCKET)(~0)
244 #define SOCKET_ERROR (-1)
246 #define FROM_PROTOCOL_INFO (-1)
248 #define SO_PROTOCOL_INFOA 0x2004
249 #define SO_PROTOCOL_INFOW 0x2005
251 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
253 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
255 #define PVD_CONFIG 0x3001
257 #define PF_UNSPEC AF_UNSPEC
258 #define PF_UNIX AF_UNIX
259 #define PF_INET AF_INET
260 #define PF_IMPLINK AF_IMPLINK
261 #define PF_PUP AF_PUP
262 #define PF_CHAOS AF_CHAOS
264 #define PF_IPX AF_IPX
265 #define PF_ISO AF_ISO
266 #define PF_OSI AF_OSI
267 #define PF_ECMA AF_ECMA
268 #define PF_DATAKIT AF_DATAKIT
269 #define PF_CCITT AF_CCITT
270 #define PF_SNA AF_SNA
271 #define PF_DECnet AF_DECnet
272 #define PF_DLI AF_DLI
273 #define PF_LAT AF_LAT
274 #define PF_HYLINK AF_HYLINK
275 #define PF_APPLETALK AF_APPLETALK
276 #define PF_VOICEVIEW AF_VOICEVIEW
277 #define PF_FIREFOX AF_FIREFOX
278 #define PF_UNKNOWN1 AF_UNKNOWN1
279 #define PF_BAN AF_BAN
280 #define PF_ATM AF_ATM
281 #define PF_INET6 AF_INET6
282 #if(_WIN32_WINNT >= 0x0600)
283 #define PF_BTH AF_BTH
285 #define PF_MAX AF_MAX
287 #define MSG_PARTIAL 0x8000
288 #define MSG_INTERRUPT 0x10
289 #define MSG_MAXIOVLEN 16
291 #define MAXGETHOSTSTRUCT 1024
293 #define FD_READ_BIT 0
294 #define FD_READ (1 << FD_READ_BIT)
295 #define FD_WRITE_BIT 1
296 #define FD_WRITE (1 << FD_WRITE_BIT)
298 #define FD_OOB (1 << FD_OOB_BIT)
299 #define FD_ACCEPT_BIT 3
300 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
301 #define FD_CONNECT_BIT 4
302 #define FD_CONNECT (1 << FD_CONNECT_BIT)
303 #define FD_CLOSE_BIT 5
304 #define FD_CLOSE (1 << FD_CLOSE_BIT)
306 #define FD_QOS (1 << FD_QOS_BIT)
307 #define FD_GROUP_QOS_BIT 7
308 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
309 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
310 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
311 #define FD_ADDRESS_LIST_CHANGE_BIT 9
312 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
313 #define FD_MAX_EVENTS 10
314 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
318 #define WSABASEERR 10000
319 #define WSAEINTR (WSABASEERR+4)
320 #define WSAEBADF (WSABASEERR+9)
321 #define WSAEACCES (WSABASEERR+13)
322 #define WSAEFAULT (WSABASEERR+14)
323 #define WSAEINVAL (WSABASEERR+22)
324 #define WSAEMFILE (WSABASEERR+24)
325 #define WSAEWOULDBLOCK (WSABASEERR+35)
326 #define WSAEINPROGRESS (WSABASEERR+36)
327 #define WSAEALREADY (WSABASEERR+37)
328 #define WSAENOTSOCK (WSABASEERR+38)
329 #define WSAEDESTADDRREQ (WSABASEERR+39)
330 #define WSAEMSGSIZE (WSABASEERR+40)
331 #define WSAEPROTOTYPE (WSABASEERR+41)
332 #define WSAENOPROTOOPT (WSABASEERR+42)
333 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
334 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
335 #define WSAEOPNOTSUPP (WSABASEERR+45)
336 #define WSAEPFNOSUPPORT (WSABASEERR+46)
337 #define WSAEAFNOSUPPORT (WSABASEERR+47)
338 #define WSAEADDRINUSE (WSABASEERR+48)
339 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
340 #define WSAENETDOWN (WSABASEERR+50)
341 #define WSAENETUNREACH (WSABASEERR+51)
342 #define WSAENETRESET (WSABASEERR+52)
343 #define WSAECONNABORTED (WSABASEERR+53)
344 #define WSAECONNRESET (WSABASEERR+54)
345 #define WSAENOBUFS (WSABASEERR+55)
346 #define WSAEISCONN (WSABASEERR+56)
347 #define WSAENOTCONN (WSABASEERR+57)
348 #define WSAESHUTDOWN (WSABASEERR+58)
349 #define WSAETOOMANYREFS (WSABASEERR+59)
350 #define WSAETIMEDOUT (WSABASEERR+60)
351 #define WSAECONNREFUSED (WSABASEERR+61)
352 #define WSAELOOP (WSABASEERR+62)
353 #define WSAENAMETOOLONG (WSABASEERR+63)
354 #define WSAEHOSTDOWN (WSABASEERR+64)
355 #define WSAEHOSTUNREACH (WSABASEERR+65)
356 #define WSAENOTEMPTY (WSABASEERR+66)
357 #define WSAEPROCLIM (WSABASEERR+67)
358 #define WSAEUSERS (WSABASEERR+68)
359 #define WSAEDQUOT (WSABASEERR+69)
360 #define WSAESTALE (WSABASEERR+70)
361 #define WSAEREMOTE (WSABASEERR+71)
362 #define WSASYSNOTREADY (WSABASEERR+91)
363 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
364 #define WSANOTINITIALISED (WSABASEERR+93)
365 #define WSAEDISCON (WSABASEERR+101)
366 #define WSAENOMORE (WSABASEERR+102)
367 #define WSAECANCELLED (WSABASEERR+103)
368 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
369 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
370 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
371 #define WSASYSCALLFAILURE (WSABASEERR+107)
372 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
373 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
374 #define WSA_E_NO_MORE (WSABASEERR+110)
375 #define WSA_E_CANCELLED (WSABASEERR+111)
376 #define WSAEREFUSED (WSABASEERR+112)
377 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
378 #define WSATRY_AGAIN (WSABASEERR+1002)
379 #define WSANO_RECOVERY (WSABASEERR+1003)
380 #define WSANO_DATA (WSABASEERR+1004)
381 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
382 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
383 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
384 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
385 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
386 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
387 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
388 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
389 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
390 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
391 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
392 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
393 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
394 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
395 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
396 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
397 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
398 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
399 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
400 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
401 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
402 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
403 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
404 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
405 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
406 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
407 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
409 #endif /* !WSABASEERR */
411 #define WSANO_ADDRESS WSANO_DATA
413 #define CF_ACCEPT 0x0000
414 #define CF_REJECT 0x0001
415 #define CF_DEFER 0x0002
416 #define SD_RECEIVE 0x00
420 #define SG_UNCONSTRAINED_GROUP 0x01
421 #define SG_CONSTRAINED_GROUP 0x02
423 #define MAX_PROTOCOL_CHAIN 7
425 #define BASE_PROTOCOL 1
426 #define LAYERED_PROTOCOL 0
428 #define WSAPROTOCOL_LEN 255
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
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
457 #define BIGENDIAN 0x0000
458 #define LITTLEENDIAN 0x0001
460 #define SECURITY_PROTOCOL_NONE 0x0000
462 #define JL_SENDER_ONLY 0x01
463 #define JL_RECEIVER_ONLY 0x02
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
473 #define TH_NETDEV 0x00000001
474 #define TH_TAPI 0x00000002
476 #define SERVICE_MULTIPLE 0x00000001
478 #define RES_UNUSED_1 0x00000001
479 #define RES_FLUSH_CACHE 0x00000002
481 #define RES_SERVICE 0x00000004
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"
489 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
490 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
492 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
493 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
495 #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
496 #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
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
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
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
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
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
549 typedef struct in_addr
{
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
;
555 } IN_ADDR
, *PIN_ADDR
;
559 typedef struct WSAData
{
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];
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
;
575 } WSADATA
, FAR
*LPWSADATA
;
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)
605 #define WSAAPI FAR PASCAL
606 typedef DWORD WSAEVENT
, FAR
* LPWSAEVENT
;
608 typedef struct _WSAOVERLAPPED
{
614 } WSAOVERLAPPED
, FAR
* LPWSAOVERLAPPED
;
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)
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)
634 typedef struct _QualityOfService
{
635 FLOWSPEC SendingFlowspec
;
636 FLOWSPEC ReceivingFlowspec
;
637 WSABUF ProviderSpecific
;
640 typedef unsigned int GROUP
;
642 typedef struct _WSANETWORKEVENTS
{
644 int iErrorCode
[FD_MAX_EVENTS
];
645 } WSANETWORKEVENTS
, *LPWSANETWORKEVENTS
;
651 typedef struct _WSAPROTOCOLCHAIN
{
653 DWORD ChainEntries
[MAX_PROTOCOL_CHAIN
];
654 } WSAPROTOCOLCHAIN
, *LPWSAPROTOCOLCHAIN
;
656 typedef struct _WSAPROTOCOL_INFOA
{
657 DWORD dwServiceFlags1
;
658 DWORD dwServiceFlags2
;
659 DWORD dwServiceFlags3
;
660 DWORD dwServiceFlags4
;
661 DWORD dwProviderFlags
;
663 DWORD dwCatalogEntryId
;
664 WSAPROTOCOLCHAIN ProtocolChain
;
671 int iProtocolMaxOffset
;
672 int iNetworkByteOrder
;
675 DWORD dwProviderReserved
;
676 CHAR szProtocol
[WSAPROTOCOL_LEN
+1];
677 } WSAPROTOCOL_INFOA
, *LPWSAPROTOCOL_INFOA
;
679 typedef struct _WSAPROTOCOL_INFOW
{
680 DWORD dwServiceFlags1
;
681 DWORD dwServiceFlags2
;
682 DWORD dwServiceFlags3
;
683 DWORD dwServiceFlags4
;
684 DWORD dwProviderFlags
;
686 DWORD dwCatalogEntryId
;
687 WSAPROTOCOLCHAIN ProtocolChain
;
694 int iProtocolMaxOffset
;
695 int iNetworkByteOrder
;
698 DWORD dwProviderReserved
;
699 WCHAR szProtocol
[WSAPROTOCOL_LEN
+1];
700 } WSAPROTOCOL_INFOW
, * LPWSAPROTOCOL_INFOW
;
703 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO
;
704 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO
;
706 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO
;
707 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO
;
711 (CALLBACK
*LPCONDITIONPROC
)(
712 IN LPWSABUF lpCallerId
,
713 IN LPWSABUF lpCallerData
,
716 IN LPWSABUF lpCalleeId
,
717 IN LPWSABUF lpCalleeData
,
719 IN DWORD_PTR dwCallbackData
);
722 (CALLBACK
*LPWSAOVERLAPPED_COMPLETION_ROUTINE
)(
724 IN DWORD cbTransferred
,
725 IN LPWSAOVERLAPPED lpOverlapped
,
728 #if(_WIN32_WINNT >= 0x0501)
730 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
732 typedef enum _WSACOMPLETIONTYPE
{
733 NSP_NOTIFY_IMMEDIATELY
= 0,
738 } WSACOMPLETIONTYPE
, * PWSACOMPLETIONTYPE
, *LPWSACOMPLETIONTYPE
;
740 typedef struct _WSACOMPLETION
{
741 WSACOMPLETIONTYPE Type
;
749 LPWSAOVERLAPPED lpOverlapped
;
752 LPWSAOVERLAPPED lpOverlapped
;
753 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc
;
756 LPWSAOVERLAPPED lpOverlapped
;
761 } WSACOMPLETION
, *PWSACOMPLETION
, *LPWSACOMPLETION
;
763 #endif /* (_WIN32_WINNT >= 0x0501) */
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
773 typedef struct _BLOB
{
776 [size_is(cbSize
)] BYTE
*pBlobData
;
778 _Field_size_bytes_(cbSize
) BYTE
*pBlobData
;
780 } BLOB
,*PBLOB
,*LPBLOB
;
782 #endif /* _tagBLOB_DEFINED */
784 #endif /* __BLOB_T_DEFINED */
786 typedef struct _AFPROTOCOLS
{
789 } AFPROTOCOLS
, *PAFPROTOCOLS
, *LPAFPROTOCOLS
;
791 typedef enum _WSAEcomparator
{
794 } WSAECOMPARATOR
, *PWSAECOMPARATOR
, *LPWSAECOMPARATOR
;
796 typedef struct _WSAVersion
{
798 WSAECOMPARATOR ecHow
;
799 } WSAVERSION
, *PWSAVERSION
, *LPWSAVERSION
;
801 typedef struct _WSAQuerySetA
{
803 LPSTR lpszServiceInstanceName
;
804 LPGUID lpServiceClassId
;
805 LPWSAVERSION lpVersion
;
808 LPGUID lpNSProviderId
;
810 DWORD dwNumberOfProtocols
;
811 _Field_size_(dwNumberOfProtocols
) LPAFPROTOCOLS lpafpProtocols
;
812 LPSTR lpszQueryString
;
813 DWORD dwNumberOfCsAddrs
;
814 _Field_size_(dwNumberOfCsAddrs
) LPCSADDR_INFO lpcsaBuffer
;
817 } WSAQUERYSETA
, *PWSAQUERYSETA
, *LPWSAQUERYSETA
;
819 _Struct_size_bytes_(dwSize
)
820 typedef struct _WSAQuerySetW
{
821 _Field_range_(>=,sizeof(struct _WSAQuerySetW
)) DWORD dwSize
;
822 LPWSTR lpszServiceInstanceName
;
823 LPGUID lpServiceClassId
;
824 LPWSAVERSION lpVersion
;
827 LPGUID lpNSProviderId
;
829 DWORD dwNumberOfProtocols
;
830 _Field_size_(dwNumberOfProtocols
) LPAFPROTOCOLS lpafpProtocols
;
831 LPWSTR lpszQueryString
;
832 DWORD dwNumberOfCsAddrs
;
833 _Field_size_(dwNumberOfCsAddrs
) LPCSADDR_INFO lpcsaBuffer
;
836 } WSAQUERYSETW
, *PWSAQUERYSETW
, *LPWSAQUERYSETW
;
838 typedef struct _WSAQuerySet2A
{
840 LPSTR lpszServiceInstanceName
;
841 LPWSAVERSION lpVersion
;
844 LPGUID lpNSProviderId
;
846 DWORD dwNumberOfProtocols
;
847 LPAFPROTOCOLS lpafpProtocols
;
848 LPSTR lpszQueryString
;
849 DWORD dwNumberOfCsAddrs
;
850 LPCSADDR_INFO lpcsaBuffer
;
853 } WSAQUERYSET2A
, *PWSAQUERYSET2A
, *LPWSAQUERYSET2A
;
855 typedef struct _WSAQuerySet2W
{
857 LPWSTR lpszServiceInstanceName
;
858 LPWSAVERSION lpVersion
;
861 LPGUID lpNSProviderId
;
863 DWORD dwNumberOfProtocols
;
864 _Field_size_(dwNumberOfProtocols
) LPAFPROTOCOLS lpafpProtocols
;
865 LPWSTR lpszQueryString
;
866 DWORD dwNumberOfCsAddrs
;
867 _Field_size_(dwNumberOfCsAddrs
) LPCSADDR_INFO lpcsaBuffer
;
870 } WSAQUERYSET2W
, *PWSAQUERYSET2W
, *LPWSAQUERYSET2W
;
873 typedef WSAQUERYSETW WSAQUERYSET
;
874 typedef PWSAQUERYSETW PWSAQUERYSET
;
875 typedef LPWSAQUERYSETW LPWSAQUERYSET
;
876 typedef WSAQUERYSET2W WSAQUERYSET2
;
877 typedef PWSAQUERYSET2W PWSAQUERYSET2
;
878 typedef LPWSAQUERYSET2W LPWSAQUERYSET2
;
880 typedef WSAQUERYSETA WSAQUERYSET
;
881 typedef PWSAQUERYSETA PWSAQUERYSET
;
882 typedef LPWSAQUERYSETA LPWSAQUERYSET
;
883 typedef WSAQUERYSET2A WSAQUERYSET2
;
884 typedef PWSAQUERYSET2A PWSAQUERYSET2
;
885 typedef LPWSAQUERYSET2A LPWSAQUERYSET2
;
888 typedef enum _WSAESETSERVICEOP
{
889 RNRSERVICE_REGISTER
=0,
890 RNRSERVICE_DEREGISTER
,
892 } WSAESETSERVICEOP
, *PWSAESETSERVICEOP
, *LPWSAESETSERVICEOP
;
894 typedef struct _WSANSClassInfoA
{
900 } WSANSCLASSINFOA
, *PWSANSCLASSINFOA
, *LPWSANSCLASSINFOA
;
902 typedef struct _WSANSClassInfoW
{
908 } WSANSCLASSINFOW
, *PWSANSCLASSINFOW
, *LPWSANSCLASSINFOW
;
911 typedef WSANSCLASSINFOW WSANSCLASSINFO
;
912 typedef PWSANSCLASSINFOW PWSANSCLASSINFO
;
913 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO
;
915 typedef WSANSCLASSINFOA WSANSCLASSINFO
;
916 typedef PWSANSCLASSINFOA PWSANSCLASSINFO
;
917 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO
;
920 typedef struct _WSAServiceClassInfoA
{
921 LPGUID lpServiceClassId
;
922 LPSTR lpszServiceClassName
;
924 LPWSANSCLASSINFOA lpClassInfos
;
925 } WSASERVICECLASSINFOA
, *PWSASERVICECLASSINFOA
, *LPWSASERVICECLASSINFOA
;
927 typedef struct _WSAServiceClassInfoW
{
928 LPGUID lpServiceClassId
;
929 LPWSTR lpszServiceClassName
;
931 LPWSANSCLASSINFOW lpClassInfos
;
932 } WSASERVICECLASSINFOW
, *PWSASERVICECLASSINFOW
, *LPWSASERVICECLASSINFOW
;
935 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO
;
936 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO
;
937 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO
;
939 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO
;
940 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO
;
941 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO
;
944 typedef struct _WSANAMESPACE_INFOA
{
949 LPSTR lpszIdentifier
;
950 } WSANAMESPACE_INFOA
, *PWSANAMESPACE_INFOA
, *LPWSANAMESPACE_INFOA
;
952 typedef struct _WSANAMESPACE_INFOW
{
957 LPWSTR lpszIdentifier
;
958 } WSANAMESPACE_INFOW
, *PWSANAMESPACE_INFOW
, *LPWSANAMESPACE_INFOW
;
960 typedef struct _WSANAMESPACE_INFOEXA
{
965 LPSTR lpszIdentifier
;
966 BLOB ProviderSpecific
;
967 } WSANAMESPACE_INFOEXA
, *PWSANAMESPACE_INFOEXA
, *LPWSANAMESPACE_INFOEXA
;
969 typedef struct _WSANAMESPACE_INFOEXW
{
974 LPWSTR lpszIdentifier
;
975 BLOB ProviderSpecific
;
976 } WSANAMESPACE_INFOEXW
, *PWSANAMESPACE_INFOEXW
, *LPWSANAMESPACE_INFOEXW
;
979 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO
;
980 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO
;
981 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO
;
982 typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX
;
983 typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX
;
984 typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX
;
986 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO
;
987 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO
;
988 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO
;
989 typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX
;
990 typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX
;
991 typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX
;
994 #if(_WIN32_WINNT >= 0x0600)
996 #define POLLRDNORM 0x0100
997 #define POLLRDBAND 0x0200
998 #define POLLIN (POLLRDNORM | POLLRDBAND)
999 #define POLLPRI 0x0400
1001 #define POLLWRNORM 0x0010
1002 #define POLLOUT (POLLWRNORM)
1003 #define POLLWRBAND 0x0020
1005 #define POLLERR 0x0001
1006 #define POLLHUP 0x0002
1007 #define POLLNVAL 0x0004
1009 typedef struct pollfd
{
1013 } WSAPOLLFD
, *PWSAPOLLFD
, FAR
*LPWSAPOLLFD
;
1015 #endif /* (_WIN32_WINNT >= 0x0600) */
1017 #if INCL_WINSOCK_API_TYPEDEFS
1019 _Must_inspect_result_
1021 (WSAAPI
*LPFN_ACCEPT
)(
1023 _Out_writes_bytes_opt_(*addrlen
) struct sockaddr FAR
*addr
,
1024 _Inout_opt_
int FAR
*addrlen
);
1027 (WSAAPI
*LPFN_BIND
)(
1029 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
1033 (WSAAPI
*LPFN_CLOSESOCKET
)(
1037 (WSAAPI
*LPFN_CONNECT
)(
1039 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
1043 (WSAAPI
*LPFN_IOCTLSOCKET
)(
1046 _Inout_ u_long FAR
*argp
);
1049 (WSAAPI
*LPFN_GETPEERNAME
)(
1051 _Out_writes_bytes_to_(*namelen
,*namelen
) struct sockaddr FAR
*name
,
1052 _Inout_
int FAR
*namelen
);
1055 (WSAAPI
*LPFN_GETSOCKNAME
)(
1057 _Out_writes_bytes_to_(*namelen
,*namelen
) struct sockaddr FAR
*name
,
1058 _Inout_
int FAR
*namelen
);
1061 (WSAAPI
*LPFN_GETSOCKOPT
)(
1065 _Out_writes_bytes_(*optlen
) char FAR
*optval
,
1066 _Inout_
int FAR
*optlen
);
1069 (WSAAPI
*LPFN_HTONL
)(
1070 _In_ u_long hostlong
);
1073 (WSAAPI
*LPFN_HTONS
)(
1074 _In_ u_short hostshort
);
1076 typedef unsigned long
1077 (WSAAPI
*LPFN_INET_ADDR
)(
1078 _In_
const char FAR
*cp
);
1081 (WSAAPI
*LPFN_INET_NTOA
)(
1082 _In_
struct in_addr in
);
1085 (WSAAPI
*LPFN_LISTEN
)(
1090 (WSAAPI
*LPFN_NTOHL
)(
1091 _In_ u_long netlong
);
1094 (WSAAPI
*LPFN_NTOHS
)(
1095 _In_ u_short netshort
);
1098 (WSAAPI
*LPFN_RECV
)(
1100 _Out_writes_bytes_to_(len
, return) char FAR
*buf
,
1105 (WSAAPI
*LPFN_RECVFROM
)(
1107 _Out_writes_bytes_to_(len
, return) char FAR
*buf
,
1110 _Out_writes_bytes_to_opt_(*fromlen
, *fromlen
) struct sockaddr FAR
*from
,
1111 _Inout_opt_
int FAR
* fromlen
);
1114 (WSAAPI
*LPFN_SELECT
)(
1116 _Inout_opt_ fd_set FAR
*readfds
,
1117 _Inout_opt_ fd_set FAR
*writefds
,
1118 _Inout_opt_ fd_set FAR
*exceptfds
,
1119 _In_opt_
const struct timeval FAR
*timeout
);
1122 (WSAAPI
*LPFN_SEND
)(
1124 _In_reads_bytes_(len
) const char FAR
*buf
,
1129 (WSAAPI
*LPFN_SENDTO
)(
1131 _In_reads_bytes_(len
) const char FAR
*buf
,
1134 _In_reads_bytes_(tolen
) const struct sockaddr FAR
*to
,
1138 (WSAAPI
*LPFN_SETSOCKOPT
)(
1142 _In_reads_bytes_(optlen
) const char FAR
*optval
,
1146 (WSAAPI
*LPFN_SHUTDOWN
)(
1150 _Must_inspect_result_
1152 (WSAAPI
*LPFN_SOCKET
)(
1157 typedef struct hostent FAR
*
1158 (WSAAPI
*LPFN_GETHOSTBYADDR
)(
1159 _In_reads_bytes_(len
) const char FAR
*addr
,
1163 typedef struct hostent FAR
*
1164 (WSAAPI
*LPFN_GETHOSTBYNAME
)(
1165 _In_
const char FAR
*name
);
1168 (WSAAPI
*LPFN_GETHOSTNAME
)(
1169 _Out_writes_bytes_(namelen
) char FAR
*name
,
1172 typedef struct servent FAR
*
1173 (WSAAPI
*LPFN_GETSERVBYPORT
)(
1175 _In_opt_z_
const char FAR
*proto
);
1177 typedef struct servent FAR
*
1178 (WSAAPI
*LPFN_GETSERVBYNAME
)(
1179 _In_z_
const char FAR
*name
,
1180 _In_opt_z_
const char FAR
*proto
);
1182 typedef struct protoent FAR
*
1183 (WSAAPI
*LPFN_GETPROTOBYNUMBER
)(
1186 typedef struct protoent FAR
*
1187 (WSAAPI
*LPFN_GETPROTOBYNAME
)(
1188 _In_z_
const char FAR
*name
);
1190 _Must_inspect_result_
1192 (WSAAPI
*LPFN_WSASTARTUP
)(
1193 _In_ WORD wVersionRequired
,
1194 _Out_ LPWSADATA lpWSAData
);
1197 (WSAAPI
*LPFN_WSACLEANUP
)(void);
1200 (WSAAPI
*LPFN_WSASETLASTERROR
)(
1204 (WSAAPI
*LPFN_WSAGETLASTERROR
)(void);
1207 (WSAAPI
*LPFN_WSAISBLOCKING
)(void);
1210 (WSAAPI
*LPFN_WSAUNHOOKBLOCKINGHOOK
)(void);
1213 (WSAAPI
*LPFN_WSASETBLOCKINGHOOK
)(
1214 _In_ FARPROC lpBlockFunc
);
1217 (WSAAPI
*LPFN_WSACANCELBLOCKINGCALL
)(void);
1220 (WSAAPI
*LPFN_WSAASYNCGETSERVBYNAME
)(
1223 _In_z_
const char FAR
*name
,
1224 _In_z_
const char FAR
*proto
,
1225 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1229 (WSAAPI
*LPFN_WSAASYNCGETSERVBYPORT
)(
1233 _In_
const char FAR
*proto
,
1234 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1238 (WSAAPI
*LPFN_WSAASYNCGETPROTOBYNAME
)(
1241 _In_z_
const char FAR
*name
,
1242 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1246 (WSAAPI
*LPFN_WSAASYNCGETPROTOBYNUMBER
)(
1250 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1254 (WSAAPI
*LPFN_WSAASYNCGETHOSTBYNAME
)(
1257 _In_z_
const char FAR
*name
,
1258 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1262 (WSAAPI
*LPFN_WSAASYNCGETHOSTBYADDR
)(
1265 _In_reads_bytes_(len
) const char FAR
*addr
,
1268 _Out_writes_bytes_(buflen
) char FAR
*buf
,
1272 (WSAAPI
*LPFN_WSACANCELASYNCREQUEST
)(
1273 _In_ HANDLE hAsyncTaskHandle
);
1276 (WSAAPI
*LPFN_WSAASYNCSELECT
)(
1282 _Must_inspect_result_
1284 (WSAAPI
*LPFN_WSAACCEPT
)(
1286 _Out_writes_bytes_to_opt_(*addrlen
,*addrlen
) struct sockaddr FAR
*addr
,
1287 _Inout_opt_ LPINT addrlen
,
1288 _In_opt_ LPCONDITIONPROC lpfnCondition
,
1289 _In_opt_ DWORD_PTR dwCallbackData
);
1292 (WSAAPI
*LPFN_WSACLOSEEVENT
)(
1293 _In_ WSAEVENT hEvent
);
1296 (WSAAPI
*LPFN_WSACONNECT
)(
1298 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
1300 _In_opt_ LPWSABUF lpCallerData
,
1301 _Out_opt_ LPWSABUF lpCalleeData
,
1302 _In_opt_ LPQOS lpSQOS
,
1303 _In_opt_ LPQOS lpGQOS
);
1306 (WSAAPI
*LPFN_WSACREATEEVENT
)(void);
1309 (WSAAPI
*LPFN_WSADUPLICATESOCKETA
)(
1311 _In_ DWORD dwProcessId
,
1312 _Out_ LPWSAPROTOCOL_INFOA lpProtocolInfo
);
1315 (WSAAPI
*LPFN_WSADUPLICATESOCKETW
)(
1317 _In_ DWORD dwProcessId
,
1318 _Out_ LPWSAPROTOCOL_INFOW lpProtocolInfo
);
1321 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1323 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
1327 (WSAAPI
*LPFN_WSAENUMNETWORKEVENTS
)(
1329 _In_ WSAEVENT hEventObject
,
1330 _Out_ LPWSANETWORKEVENTS lpNetworkEvents
);
1333 (WSAAPI
*LPFN_WSAENUMPROTOCOLSA
)(
1334 _In_opt_ LPINT lpiProtocols
,
1335 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
1336 _Inout_ LPDWORD lpdwBufferLength
);
1339 (WSAAPI
*LPFN_WSAENUMPROTOCOLSW
)(
1340 _In_opt_ LPINT lpiProtocols
,
1341 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
1342 _Inout_ LPDWORD lpdwBufferLength
);
1345 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1347 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1351 (WSAAPI
*LPFN_WSAEVENTSELECT
)(
1353 _In_opt_ WSAEVENT hEventObject
,
1354 _In_
long lNetworkEvents
);
1357 (WSAAPI
*LPFN_WSAGETOVERLAPPEDRESULT
)(
1359 _In_ LPWSAOVERLAPPED lpOverlapped
,
1360 _Out_ LPDWORD lpcbTransfer
,
1362 _Out_ LPDWORD lpdwFlags
);
1365 (WSAAPI
*LPFN_WSAGETQOSBYNAME
)(
1367 IN LPWSABUF lpQOSName
,
1371 (WSAAPI
*LPFN_WSAHTONL
)(
1373 _In_ u_long hostlong
,
1374 _Out_ u_long FAR
*lpnetlong
);
1377 (WSAAPI
*LPFN_WSAHTONS
)(
1379 _In_ u_short hostshort
,
1380 _Out_ u_short FAR
*lpnetshort
);
1383 (WSAAPI
*LPFN_WSAIOCTL
)(
1385 _In_ DWORD dwIoControlCode
,
1386 _In_reads_bytes_opt_(cbInBuffer
) LPVOID lpvInBuffer
,
1387 _In_ DWORD cbInBuffer
,
1388 _Out_writes_bytes_to_opt_(cbOutBuffer
, *lpcbBytesReturned
) LPVOID lpvOutBuffer
,
1389 _In_ DWORD cbOutBuffer
,
1390 _Out_ LPDWORD lpcbBytesReturned
,
1391 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1392 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1395 (WSAAPI
*LPFN_WSAJOINLEAF
)(
1397 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
1399 _In_opt_ LPWSABUF lpCallerData
,
1400 _Out_opt_ LPWSABUF lpCalleeData
,
1401 _In_opt_ LPQOS lpSQOS
,
1402 _In_opt_ LPQOS lpGQOS
,
1403 _In_ DWORD dwFlags
);
1406 (WSAAPI
*LPFN_WSANTOHL
)(
1408 _In_ u_long netlong
,
1409 _Out_ u_long FAR
*lphostlong
);
1412 (WSAAPI
*LPFN_WSANTOHS
)(
1414 _In_ u_short netshort
,
1415 _Out_ u_short FAR
*lphostshort
);
1418 (WSAAPI
*LPFN_WSARECV
)(
1420 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
1421 _In_ DWORD dwBufferCount
,
1422 _Out_opt_ LPDWORD lpNumberOfBytesRecvd
,
1423 _Inout_ LPDWORD lpFlags
,
1424 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1425 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1428 (WSAAPI
*LPFN_WSARECVDISCONNECT
)(
1430 __out_data_source(NETWORK
) LPWSABUF lpInboundDisconnectData
);
1433 (WSAAPI
*LPFN_WSARECVFROM
)(
1435 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
1436 _In_ DWORD dwBufferCount
,
1437 _Out_opt_ LPDWORD lpNumberOfBytesRecvd
,
1438 _Inout_ LPDWORD lpFlags
,
1439 _Out_writes_bytes_to_opt_(*lpFromlen
,*lpFromlen
) struct sockaddr FAR
*lpFrom
,
1440 _Inout_opt_ LPINT lpFromlen
,
1441 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1442 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1445 (WSAAPI
*LPFN_WSARESETEVENT
)(
1446 _In_ WSAEVENT hEvent
);
1449 (WSAAPI
*LPFN_WSASEND
)(
1451 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
1452 _In_ DWORD dwBufferCount
,
1453 _Out_opt_ LPDWORD lpNumberOfBytesSent
,
1455 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1456 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1459 (WSAAPI
*LPFN_WSASENDDISCONNECT
)(
1461 _In_opt_ LPWSABUF lpOutboundDisconnectData
);
1464 (WSAAPI
*LPFN_WSASENDTO
)(
1466 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
1467 _In_ DWORD dwBufferCount
,
1468 _Out_opt_ LPDWORD lpNumberOfBytesSent
,
1470 _In_reads_bytes_opt_(iTolen
) const struct sockaddr FAR
*lpTo
,
1472 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1473 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1476 (WSAAPI
*LPFN_WSASETEVENT
)(
1477 _In_ WSAEVENT hEvent
);
1479 _Must_inspect_result_
1481 (WSAAPI
*LPFN_WSASOCKETA
)(
1485 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1487 _In_ DWORD dwFlags
);
1489 _Must_inspect_result_
1491 (WSAAPI
*LPFN_WSASOCKETW
)(
1495 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1497 _In_ DWORD dwFlags
);
1500 #define LPFN_WSASOCKET LPFN_WSASOCKETW
1502 #define LPFN_WSASOCKET LPFN_WSASOCKETA
1506 (WSAAPI
*LPFN_WSAWAITFORMULTIPLEEVENTS
)(
1508 _In_reads_(cEvents
) const WSAEVENT FAR
*lphEvents
,
1510 _In_ DWORD dwTimeout
,
1511 _In_ BOOL fAlertable
);
1514 (WSAAPI
*LPFN_WSAADDRESSTOSTRINGA
)(
1515 _In_reads_bytes_(dwAddressLength
) LPSOCKADDR lpsaAddress
,
1516 _In_ DWORD dwAddressLength
,
1517 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1518 _Out_writes_to_(*lpdwAddressStringLength
,*lpdwAddressStringLength
) LPSTR lpszAddressString
,
1519 _Inout_ LPDWORD lpdwAddressStringLength
);
1522 (WSAAPI
*LPFN_WSAADDRESSTOSTRINGW
)(
1523 _In_reads_bytes_(dwAddressLength
) LPSOCKADDR lpsaAddress
,
1524 _In_ DWORD dwAddressLength
,
1525 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1526 _Out_writes_to_(*lpdwAddressStringLength
,*lpdwAddressStringLength
) LPWSTR lpszAddressString
,
1527 _Inout_ LPDWORD lpdwAddressStringLength
);
1530 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1532 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1536 (WSAAPI
*LPFN_WSASTRINGTOADDRESSA
)(
1537 _In_ LPSTR AddressString
,
1538 _In_ INT AddressFamily
,
1539 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1540 _Out_writes_bytes_to_(*lpAddressLength
,*lpAddressLength
) LPSOCKADDR lpAddress
,
1541 _Inout_ LPINT lpAddressLength
);
1544 (WSAAPI
*LPFN_WSASTRINGTOADDRESSW
)(
1545 _In_ LPWSTR AddressString
,
1546 _In_ INT AddressFamily
,
1547 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1548 _Out_writes_bytes_to_(*lpAddressLength
,*lpAddressLength
) LPSOCKADDR lpAddress
,
1549 _Inout_ LPINT lpAddressLength
);
1552 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1554 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1558 (WSAAPI
*LPFN_WSALOOKUPSERVICEBEGINA
)(
1559 _In_ LPWSAQUERYSETA lpqsRestrictions
,
1560 _In_ DWORD dwControlFlags
,
1561 _Out_ LPHANDLE lphLookup
);
1564 (WSAAPI
*LPFN_WSALOOKUPSERVICEBEGINW
)(
1565 _In_ LPWSAQUERYSETW lpqsRestrictions
,
1566 _In_ DWORD dwControlFlags
,
1567 _Out_ LPHANDLE lphLookup
);
1570 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1572 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1576 (WSAAPI
*LPFN_WSALOOKUPSERVICENEXTA
)(
1577 _In_ HANDLE hLookup
,
1578 _In_ DWORD dwControlFlags
,
1579 _Inout_ LPDWORD lpdwBufferLength
,
1580 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAQUERYSETA lpqsResults
);
1583 (WSAAPI
*LPFN_WSALOOKUPSERVICENEXTW
)(
1584 _In_ HANDLE hLookup
,
1585 _In_ DWORD dwControlFlags
,
1586 _Inout_ LPDWORD lpdwBufferLength
,
1587 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAQUERYSETW lpqsResults
);
1590 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1592 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1596 (WSAAPI
*LPFN_WSALOOKUPSERVICEEND
)(
1597 _In_ HANDLE hLookup
);
1600 (WSAAPI
*LPFN_WSAINSTALLSERVICECLASSA
)(
1601 _In_ LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1604 (WSAAPI
*LPFN_WSAINSTALLSERVICECLASSW
)(
1605 _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1608 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1610 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1614 (WSAAPI
*LPFN_WSAREMOVESERVICECLASS
)(
1615 _In_ LPGUID lpServiceClassId
);
1618 (WSAAPI
*LPFN_WSAGETSERVICECLASSINFOA
)(
1619 _In_ LPGUID lpProviderId
,
1620 _In_ LPGUID lpServiceClassId
,
1621 _Inout_ LPDWORD lpdwBufSize
,
1622 _Out_writes_bytes_to_(*lpdwBufSize
,*lpdwBufSize
) LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1625 (WSAAPI
*LPFN_WSAGETSERVICECLASSINFOW
)(
1626 _In_ LPGUID lpProviderId
,
1627 _In_ LPGUID lpServiceClassId
,
1628 _Inout_ LPDWORD lpdwBufSize
,
1629 _Out_writes_bytes_to_(*lpdwBufSize
,*lpdwBufSize
) LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1632 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1634 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1638 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSA
)(
1639 _Inout_ LPDWORD lpdwBufferLength
,
1640 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOA lpnspBuffer
);
1643 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSW
)(
1644 _Inout_ LPDWORD lpdwBufferLength
,
1645 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOW lpnspBuffer
);
1648 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1650 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1654 (WSAAPI
*LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
)(
1655 _In_ LPGUID lpServiceClassId
,
1656 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPSTR lpszServiceClassName
,
1657 _Inout_ LPDWORD lpdwBufferLength
);
1660 (WSAAPI
*LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
)(
1661 _In_ LPGUID lpServiceClassId
,
1662 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSTR lpszServiceClassName
,
1663 _Inout_ LPDWORD lpdwBufferLength
);
1666 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1668 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1672 (WSAAPI
*LPFN_WSASETSERVICEA
)(
1673 _In_ LPWSAQUERYSETA lpqsRegInfo
,
1674 _In_ WSAESETSERVICEOP essoperation
,
1675 _In_ DWORD dwControlFlags
);
1678 (WSAAPI
*LPFN_WSASETSERVICEW
)(
1679 _In_ LPWSAQUERYSETW lpqsRegInfo
,
1680 _In_ WSAESETSERVICEOP essoperation
,
1681 _In_ DWORD dwControlFlags
);
1684 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1686 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1690 (WSAAPI
*LPFN_WSAPROVIDERCONFIGCHANGE
)(
1691 _Inout_ LPHANDLE lpNotificationHandle
,
1692 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
1693 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1695 #if(_WIN32_WINNT >= 0x0501)
1697 (WSAAPI
*LPFN_WSANSPIOCTL
)(
1698 _In_ HANDLE hLookup
,
1699 _In_ DWORD dwControlCode
,
1700 _In_reads_bytes_opt_(cbInBuffer
) LPVOID lpvInBuffer
,
1701 _In_ DWORD cbInBuffer
,
1702 _Out_writes_bytes_to_opt_(cbOutBuffer
, *lpcbBytesReturned
) LPVOID lpvOutBuffer
,
1703 _In_ DWORD cbOutBuffer
,
1704 _Out_ LPDWORD lpcbBytesReturned
,
1705 _In_opt_ LPWSACOMPLETION lpCompletion
);
1706 #endif /* (_WIN32_WINNT >= 0x0501) */
1708 #if (_WIN32_WINNT >= 0x0600)
1711 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSEXA
)(
1712 _Inout_ LPDWORD lpdwBufferLength
,
1713 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOEXA lpnspBuffer
);
1716 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSEXW
)(
1717 _Inout_ LPDWORD lpdwBufferLength
,
1718 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOEXW lpnspBuffer
);
1721 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
1723 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXA
1726 #endif /* (_WIN32_WINNT >= 0x600) */
1728 #endif /* INCL_WINSOCK_API_TYPEDEFS */
1730 #if INCL_WINSOCK_API_PROTOTYPES
1732 _Must_inspect_result_
1738 _Out_writes_bytes_opt_(*addrlen
) struct sockaddr FAR
*addr
,
1739 _Inout_opt_
int FAR
*addrlen
);
1746 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*addr
,
1760 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
1769 _Inout_ u_long FAR
*argp
);
1776 _Out_writes_bytes_to_(*namelen
,*namelen
) struct sockaddr FAR
*name
,
1777 _Inout_
int FAR
*namelen
);
1784 _Out_writes_bytes_to_(*namelen
,*namelen
) struct sockaddr FAR
*name
,
1785 _Inout_
int FAR
*namelen
);
1794 _Out_writes_bytes_(*optlen
) char FAR
*optval
,
1795 _Inout_
int FAR
*optlen
);
1801 IN u_long hostlong
);
1807 _In_ u_short hostshort
);
1813 _In_z_
const char FAR
*cp
);
1819 _In_
struct in_addr in
);
1832 _In_ u_long netlong
);
1838 _In_ u_short netshort
);
1845 _Out_writes_bytes_to_(len
, return) __out_data_source(NETWORK
) char FAR
*buf
,
1854 _Out_writes_bytes_to_(len
, return) __out_data_source(NETWORK
) char FAR
*buf
,
1857 _Out_writes_bytes_to_opt_(*fromlen
, *fromlen
) struct sockaddr FAR
*from
,
1858 _Inout_opt_
int FAR
*fromlen
);
1865 _Inout_opt_ fd_set FAR
*readfds
,
1866 _Inout_opt_ fd_set FAR
*writefds
,
1867 _Inout_opt_ fd_set FAR
*exceptfds
,
1868 _In_opt_
const struct timeval FAR
*timeout
);
1875 _In_reads_bytes_(len
) const char FAR
*buf
,
1884 _In_reads_bytes_(len
) const char FAR
*buf
,
1887 _In_reads_bytes_(tolen
) const struct sockaddr FAR
*to
,
1897 _In_reads_bytes_opt_(optlen
) const char FAR
*optval
,
1907 _Must_inspect_result_
1917 struct hostent FAR
*
1920 _In_reads_bytes_(len
) const char FAR
*addr
,
1925 struct hostent FAR
*
1928 _In_z_
const char FAR
*name
);
1934 _Out_writes_bytes_(namelen
) char FAR
*name
,
1938 struct servent FAR
*
1942 _In_opt_z_
const char FAR
*proto
);
1945 struct servent FAR
*
1948 _In_z_
const char FAR
*name
,
1949 _In_opt_z_
const char FAR
*proto
);
1952 struct protoent FAR
*
1958 struct protoent FAR
*
1961 _In_z_
const char FAR
*name
);
1963 _Must_inspect_result_
1968 _In_ WORD wVersionRequired
,
1969 _Out_ LPWSADATA lpWSAData
);
1985 WSAGetLastError(void);
1990 WSAIsBlocking(void);
1995 WSAUnhookBlockingHook(void);
2001 _In_ FARPROC lpBlockFunc
);
2006 WSACancelBlockingCall(void);
2011 WSAAsyncGetServByName(
2014 _In_z_
const char FAR
*name
,
2015 _In_z_
const char FAR
*proto
,
2016 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2022 WSAAsyncGetServByPort(
2026 _In_
const char FAR
*proto
,
2027 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2033 WSAAsyncGetProtoByName(
2036 _In_z_
const char FAR
*name
,
2037 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2043 WSAAsyncGetProtoByNumber(
2047 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2053 WSAAsyncGetHostByName(
2056 _In_z_
const char FAR
*name
,
2057 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2063 WSAAsyncGetHostByAddr(
2066 _In_reads_bytes_(len
) const char FAR
*addr
,
2069 _Out_writes_bytes_(buflen
) char FAR
*buf
,
2075 WSACancelAsyncRequest(
2076 _In_ HANDLE hAsyncTaskHandle
);
2087 _Must_inspect_result_
2093 _Out_writes_bytes_to_opt_(*addrlen
,*addrlen
) struct sockaddr FAR
*addr
,
2094 _Inout_opt_ LPINT addrlen
,
2095 _In_opt_ LPCONDITIONPROC lpfnCondition
,
2096 _In_opt_ DWORD_PTR dwCallbackData
);
2102 _In_ WSAEVENT hEvent
);
2109 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
2111 _In_opt_ LPWSABUF lpCallerData
,
2112 _Out_opt_ LPWSABUF lpCalleeData
,
2113 _In_opt_ LPQOS lpSQOS
,
2114 _In_opt_ LPQOS lpGQOS
);
2117 #define WSAConnectByName WSAConnectByNameW
2119 #define WSAConnectByName WSAConnectByNameA
2126 _In_ LPWSTR nodename
,
2127 _In_ LPWSTR servicename
,
2128 _Inout_opt_ LPDWORD LocalAddressLength
,
2129 _Out_writes_bytes_to_opt_(*LocalAddressLength
,*LocalAddressLength
) LPSOCKADDR LocalAddress
,
2130 _Inout_opt_ LPDWORD RemoteAddressLength
,
2131 _Out_writes_bytes_to_opt_(*RemoteAddressLength
,*RemoteAddressLength
) LPSOCKADDR RemoteAddress
,
2132 _In_opt_
const struct timeval
*timeout
,
2133 _Reserved_ LPWSAOVERLAPPED Reserved
);
2139 _In_ LPCSTR nodename
,
2140 _In_ LPCSTR servicename
,
2141 _Inout_opt_ LPDWORD LocalAddressLength
,
2142 _Out_writes_bytes_to_opt_(*LocalAddressLength
,*LocalAddressLength
) LPSOCKADDR LocalAddress
,
2143 _Inout_opt_ LPDWORD RemoteAddressLength
,
2144 _Out_writes_bytes_to_opt_(*RemoteAddressLength
,*RemoteAddressLength
) LPSOCKADDR RemoteAddress
,
2145 _In_opt_
const struct timeval
*timeout
,
2146 _Reserved_ LPWSAOVERLAPPED Reserved
);
2152 _In_ PSOCKET_ADDRESS_LIST SocketAddress
,
2153 _Inout_opt_ LPDWORD LocalAddressLength
,
2154 _Out_writes_bytes_to_opt_(*LocalAddressLength
,*LocalAddressLength
) LPSOCKADDR LocalAddress
,
2155 _Inout_opt_ LPDWORD RemoteAddressLength
,
2156 _Out_writes_bytes_to_opt_(*RemoteAddressLength
,*RemoteAddressLength
) LPSOCKADDR RemoteAddress
,
2157 _In_opt_
const struct timeval
*timeout
,
2158 _Reserved_ LPWSAOVERLAPPED Reserved
);
2163 WSACreateEvent(void);
2168 WSADuplicateSocketA(
2170 _In_ DWORD dwProcessId
,
2171 _Out_ LPWSAPROTOCOL_INFOA lpProtocolInfo
);
2176 WSADuplicateSocketW(
2178 _In_ DWORD dwProcessId
,
2179 _Out_ LPWSAPROTOCOL_INFOW lpProtocolInfo
);
2182 #define WSADuplicateSocket WSADuplicateSocketW
2184 #define WSADuplicateSocket WSADuplicateSocketA
2190 WSAEnumNetworkEvents(
2192 _In_ WSAEVENT hEventObject
,
2193 _Out_ LPWSANETWORKEVENTS lpNetworkEvents
);
2199 _In_opt_ LPINT lpiProtocols
,
2200 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
2201 _Inout_ LPDWORD lpdwBufferLength
);
2207 _In_opt_ LPINT lpiProtocols
,
2208 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
2209 _Inout_ LPDWORD lpdwBufferLength
);
2212 #define WSAEnumProtocols WSAEnumProtocolsW
2214 #define WSAEnumProtocols WSAEnumProtocolsA
2222 _In_opt_ WSAEVENT hEventObject
,
2223 _In_
long lNetworkEvents
);
2228 WSAGetOverlappedResult(
2230 _In_ LPWSAOVERLAPPED lpOverlapped
,
2231 _Out_ LPDWORD lpcbTransfer
,
2233 _Out_ LPDWORD lpdwFlags
);
2240 _In_ LPWSABUF lpQOSName
,
2248 _In_ u_long hostlong
,
2249 _Out_ u_long FAR
*lpnetlong
);
2256 _In_ u_short hostshort
,
2257 _Out_ u_short FAR
*lpnetshort
);
2264 _In_ DWORD dwIoControlCode
,
2265 _In_reads_bytes_opt_(cbInBuffer
) LPVOID lpvInBuffer
,
2266 _In_ DWORD cbInBuffer
,
2267 _Out_writes_bytes_to_opt_(cbOutBuffer
, *lpcbBytesReturned
) LPVOID lpvOutBuffer
,
2268 _In_ DWORD cbOutBuffer
,
2269 _Out_ LPDWORD lpcbBytesReturned
,
2270 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2271 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2278 _In_reads_bytes_(namelen
) const struct sockaddr FAR
*name
,
2280 _In_opt_ LPWSABUF lpCallerData
,
2281 _Out_opt_ LPWSABUF lpCalleeData
,
2282 _In_opt_ LPQOS lpSQOS
,
2283 _In_opt_ LPQOS lpGQOS
,
2284 _In_ DWORD dwFlags
);
2291 _In_ u_long netlong
,
2292 _Out_ u_long FAR
*lphostlong
);
2299 _In_ u_short netshort
,
2300 _Out_ u_short FAR
*lphostshort
);
2307 _In_reads_(dwBufferCount
) __out_data_source(NETWORK
) LPWSABUF lpBuffers
,
2308 _In_ DWORD dwBufferCount
,
2309 _Out_opt_ LPDWORD lpNumberOfBytesRecvd
,
2310 _Inout_ LPDWORD lpFlags
,
2311 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2312 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2319 _In_opt_
__out_data_source(NETWORK
) LPWSABUF lpInboundDisconnectData
);
2326 _In_reads_(dwBufferCount
) __out_data_source(NETWORK
) LPWSABUF lpBuffers
,
2327 _In_ DWORD dwBufferCount
,
2328 _Out_opt_ LPDWORD lpNumberOfBytesRecvd
,
2329 _Inout_ LPDWORD lpFlags
,
2330 _Out_writes_bytes_to_opt_(*lpFromlen
,*lpFromlen
) struct sockaddr FAR
*lpFrom
,
2331 _Inout_opt_ LPINT lpFromlen
,
2332 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2333 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2339 _In_ WSAEVENT hEvent
);
2346 _In_opt_ LPWSABUF lpOutboundDisconnectData
);
2353 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
2354 _In_ DWORD dwBufferCount
,
2355 _Out_opt_ LPDWORD lpNumberOfBytesSent
,
2357 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2358 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2365 _In_reads_(dwBufferCount
) LPWSABUF lpBuffers
,
2366 _In_ DWORD dwBufferCount
,
2367 _Out_opt_ LPDWORD lpNumberOfBytesSent
,
2369 _In_reads_bytes_opt_(iTolen
) const struct sockaddr FAR
*lpTo
,
2371 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2372 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2378 _In_ WSAEVENT hEvent
);
2380 _Must_inspect_result_
2388 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
2390 _In_ DWORD dwFlags
);
2392 _Must_inspect_result_
2400 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
2402 _In_ DWORD dwFlags
);
2405 #define WSASocket WSASocketW
2407 #define WSASocket WSASocketA
2413 WSAWaitForMultipleEvents(
2415 _In_reads_(cEvents
) const WSAEVENT FAR
*lphEvents
,
2417 _In_ DWORD dwTimeout
,
2418 _In_ BOOL fAlertable
);
2423 WSAAddressToStringA(
2424 _In_reads_bytes_(dwAddressLength
) LPSOCKADDR lpsaAddress
,
2425 _In_ DWORD dwAddressLength
,
2426 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
2427 _Out_writes_to_(*lpdwAddressStringLength
,*lpdwAddressStringLength
) LPSTR lpszAddressString
,
2428 _Inout_ LPDWORD lpdwAddressStringLength
);
2433 WSAAddressToStringW(
2434 _In_reads_bytes_(dwAddressLength
) LPSOCKADDR lpsaAddress
,
2435 _In_ DWORD dwAddressLength
,
2436 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
2437 _Out_writes_to_(*lpdwAddressStringLength
,*lpdwAddressStringLength
) LPWSTR lpszAddressString
,
2438 _Inout_ LPDWORD lpdwAddressStringLength
);
2441 #define WSAAddressToString WSAAddressToStringW
2443 #define WSAAddressToString WSAAddressToStringA
2449 WSAStringToAddressA(
2450 _In_ LPSTR AddressString
,
2451 _In_ INT AddressFamily
,
2452 _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo
,
2453 _Out_writes_bytes_to_(*lpAddressLength
,*lpAddressLength
) LPSOCKADDR lpAddress
,
2454 _Inout_ LPINT lpAddressLength
);
2459 WSAStringToAddressW(
2460 _In_ LPWSTR AddressString
,
2461 _In_ INT AddressFamily
,
2462 _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo
,
2463 _Out_writes_bytes_to_(*lpAddressLength
,*lpAddressLength
) LPSOCKADDR lpAddress
,
2464 _Inout_ LPINT lpAddressLength
);
2467 #define WSAStringToAddress WSAStringToAddressW
2469 #define WSAStringToAddress WSAStringToAddressA
2475 WSALookupServiceBeginA(
2476 _In_ LPWSAQUERYSETA lpqsRestrictions
,
2477 _In_ DWORD dwControlFlags
,
2478 _Out_ LPHANDLE lphLookup
);
2483 WSALookupServiceBeginW(
2484 _In_ LPWSAQUERYSETW lpqsRestrictions
,
2485 _In_ DWORD dwControlFlags
,
2486 _Out_ LPHANDLE lphLookup
);
2489 #define WSALookupServiceBegin WSALookupServiceBeginW
2491 #define WSALookupServiceBegin WSALookupServiceBeginA
2497 WSALookupServiceNextA(
2498 _In_ HANDLE hLookup
,
2499 _In_ DWORD dwControlFlags
,
2500 _Inout_ LPDWORD lpdwBufferLength
,
2501 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAQUERYSETA lpqsResults
);
2506 WSALookupServiceNextW(
2507 _In_ HANDLE hLookup
,
2508 _In_ DWORD dwControlFlags
,
2509 _Inout_ LPDWORD lpdwBufferLength
,
2510 _Out_writes_bytes_to_opt_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSAQUERYSETW lpqsResults
);
2513 #define WSALookupServiceNext WSALookupServiceNextW
2515 #define WSALookupServiceNext WSALookupServiceNextA
2521 WSALookupServiceEnd(
2522 _In_ HANDLE hLookup
);
2527 WSAInstallServiceClassA(
2528 _In_ LPWSASERVICECLASSINFOA lpServiceClassInfo
);
2533 WSAInstallServiceClassW(
2534 _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo
);
2537 #define WSAInstallServiceClass WSAInstallServiceClassW
2539 #define WSAInstallServiceClass WSAInstallServiceClassA
2545 WSARemoveServiceClass(
2546 _In_ LPGUID lpServiceClassId
);
2551 WSAGetServiceClassInfoA(
2552 _In_ LPGUID lpProviderId
,
2553 _In_ LPGUID lpServiceClassId
,
2554 _Inout_ LPDWORD lpdwBufSize
,
2555 _Out_writes_bytes_to_(*lpdwBufSize
,*lpdwBufSize
) LPWSASERVICECLASSINFOA lpServiceClassInfo
);
2560 WSAGetServiceClassInfoW(
2561 _In_ LPGUID lpProviderId
,
2562 _In_ LPGUID lpServiceClassId
,
2563 _Inout_ LPDWORD lpdwBufSize
,
2564 _Out_writes_bytes_to_(*lpdwBufSize
,*lpdwBufSize
) LPWSASERVICECLASSINFOW lpServiceClassInfo
);
2567 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
2569 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
2575 WSAEnumNameSpaceProvidersA(
2576 _Inout_ LPDWORD lpdwBufferLength
,
2577 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOA lpnspBuffer
);
2582 WSAEnumNameSpaceProvidersW(
2583 _Inout_ LPDWORD lpdwBufferLength
,
2584 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOW lpnspBuffer
);
2587 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
2589 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
2592 _Success_(return == 0)
2596 WSAGetServiceClassNameByClassIdA(
2597 _In_ LPGUID lpServiceClassId
,
2598 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPSTR lpszServiceClassName
,
2599 _Inout_ LPDWORD lpdwBufferLength
);
2601 _Success_(return == 0)
2605 WSAGetServiceClassNameByClassIdW(
2606 _In_ LPGUID lpServiceClassId
,
2607 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSTR lpszServiceClassName
,
2608 _Inout_ LPDWORD lpdwBufferLength
);
2611 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
2613 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
2620 _In_ LPWSAQUERYSETA lpqsRegInfo
,
2621 _In_ WSAESETSERVICEOP essoperation
,
2622 _In_ DWORD dwControlFlags
);
2628 _In_ LPWSAQUERYSETW lpqsRegInfo
,
2629 _In_ WSAESETSERVICEOP essoperation
,
2630 _In_ DWORD dwControlFlags
);
2633 #define WSASetService WSASetServiceW
2635 #define WSASetService WSASetServiceA
2641 WSAProviderConfigChange(
2642 _Inout_ LPHANDLE lpNotificationHandle
,
2643 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2644 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2646 #if(_WIN32_WINNT >= 0x0501)
2651 _In_ HANDLE hLookup
,
2652 _In_ DWORD dwControlCode
,
2653 _In_reads_bytes_opt_(cbInBuffer
) LPVOID lpvInBuffer
,
2654 _In_ DWORD cbInBuffer
,
2655 _Out_writes_bytes_to_opt_(cbOutBuffer
, *lpcbBytesReturned
) LPVOID lpvOutBuffer
,
2656 _In_ DWORD cbOutBuffer
,
2657 _Out_ LPDWORD lpcbBytesReturned
,
2658 _In_opt_ LPWSACOMPLETION lpCompletion
);
2659 #endif /* (_WIN32_WINNT >= 0x0501) */
2661 #if(_WIN32_WINNT >= 0x0600)
2668 _In_ LPWSAMSG lpMsg
,
2670 _Out_opt_ LPDWORD lpNumberOfBytesSent
,
2671 _Inout_opt_ LPWSAOVERLAPPED lpOverlapped
,
2672 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
2677 WSAEnumNameSpaceProvidersExA(
2678 _Inout_ LPDWORD lpdwBufferLength
,
2679 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOEXA lpnspBuffer
);
2684 WSAEnumNameSpaceProvidersExW(
2685 _Inout_ LPDWORD lpdwBufferLength
,
2686 _Out_writes_bytes_to_(*lpdwBufferLength
,*lpdwBufferLength
) LPWSANAMESPACE_INFOEXW lpnspBuffer
);
2689 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
2691 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA
2698 _Inout_ LPWSAPOLLFD fdArray
,
2702 #endif /* (_WIN32_WINNT >= 0x0600) */
2704 #endif /* INCL_WINSOCK_API_PROTOTYPES */
2706 typedef struct sockaddr_in FAR
*LPSOCKADDR_IN
;
2707 typedef struct linger LINGER
;
2708 typedef struct linger
*PLINGER
;
2709 typedef struct linger FAR
*LPLINGER
;
2710 typedef struct fd_set FD_SET
;
2711 typedef struct fd_set
*PFD_SET
;
2712 typedef struct fd_set FAR
*LPFD_SET
;
2713 typedef struct hostent HOSTENT
;
2714 typedef struct hostent
*PHOSTENT
;
2715 typedef struct hostent FAR
*LPHOSTENT
;
2716 typedef struct servent SERVENT
;
2717 typedef struct servent
*PSERVENT
;
2718 typedef struct servent FAR
*LPSERVENT
;
2719 typedef struct protoent PROTOENT
;
2720 typedef struct protoent
*PPROTOENT
;
2721 typedef struct protoent FAR
*LPPROTOENT
;
2722 typedef struct timeval TIMEVAL
;
2723 typedef struct timeval
*PTIMEVAL
;
2724 typedef struct timeval FAR
*LPTIMEVAL
;
2726 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
2727 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
2728 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
2729 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
2730 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
2731 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
2737 #ifdef _NEED_POPPACK
2738 #include <poppack.h>
2742 #if(_WIN32_WINNT >= 0x0501)
2744 #include <wsipv6ok.h>
2748 #endif /* !(defined _WINSOCK2API_ || defined _WINSOCKAPI_) */