3 #if !(defined _WINSOCK2API_ || defined _WINSOCK_H)
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
43 #if !defined(__ROS_LONG64__)
45 #define __ROS_LONG64__
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
;
63 typedef unsigned int u_long
;
65 #define _BSDTYPES_DEFINED
66 #endif /* ! def _BSDTYPES_DEFINED */
68 #if(_WIN32_WINNT >= 0x0501)
69 typedef unsigned __int64 u_int64
;
70 #endif /* (_WIN32_WINNT >= 0x0501) */
74 typedef UINT_PTR SOCKET
;
80 #ifndef _SYS_TYPES_FD_SET
82 /* fd_set may be defined by the newlib <sys/types.h>
83 * if __USE_W32_SOCKETS not defined.
89 typedef struct fd_set
{
91 SOCKET fd_array
[FD_SETSIZE
];
94 extern int PASCAL FAR
__WSAFDIsSet(SOCKET
,fd_set FAR
*);
97 #define FD_CLR(fd, set) do { \
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]; \
106 ((fd_set FAR*)(set))->fd_count--; \
114 /* this differs from the define in winsock.h and in cygwin sys/types.h */
115 #define FD_SET(fd, set) do { \
117 for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
118 if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
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++; \
132 #define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count=0)
136 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR*)(set))
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 */
144 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
146 #ifndef _TIMEVAL_DEFINED
148 /* also in sys/time.h */
149 #define _TIMEVAL_DEFINED
150 #define _STRUCT_TIMEVAL
156 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
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))
163 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
165 #endif /* _TIMEVAL_DEFINED */
167 #define h_addr h_addr_list[0]
182 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
183 #define _IOR(x,y,t) (IOC_OUT|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
184 #define _IOW(x,y,t) (IOC_IN|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
185 #define FIONBIO _IOW('f', 126, u_long)
211 #define SO_CONDITIONAL_ACCEPT 0x3002
213 #define SOMAXCONN 0x7fffffff
216 #define MSG_DONTROUTE 4
217 #if(_WIN32_WINNT >= 0x0502)
218 #define MSG_WAITALL 8
221 #define h_errno WSAGetLastError()
222 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
223 #define TRY_AGAIN WSATRY_AGAIN
224 #define NO_RECOVERY WSANO_RECOVERY
225 #define NO_DATA WSANO_DATA
226 #define NO_ADDRESS WSANO_ADDRESS
228 #endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */
230 #define IOCPARM_MASK 0x7f
231 #define IOC_VOID 0x20000000
232 #define IOC_OUT 0x40000000
233 #define IOC_IN 0x80000000
234 #define IOC_INOUT (IOC_IN|IOC_OUT)
236 #define FIONREAD _IOR('f', 127, u_long)
237 #define FIOASYNC _IOW('f', 125, u_long)
238 #define SIOCSHIWAT _IOW('s', 0, u_long)
239 #define SIOCGHIWAT _IOR('s', 1, u_long)
240 #define SIOCSLOWAT _IOW('s', 2, u_long)
241 #define SIOCGLOWAT _IOR('s', 3, u_long)
242 #define SIOCATMARK _IOR('s', 7, u_long)
244 #define IPPORT_ECHO 7
245 #define IPPORT_DISCARD 9
246 #define IPPORT_SYSTAT 11
247 #define IPPORT_DAYTIME 13
248 #define IPPORT_NETSTAT 15
249 #define IPPORT_FTP 21
250 #define IPPORT_TELNET 23
251 #define IPPORT_SMTP 25
252 #define IPPORT_TIMESERVER 37
253 #define IPPORT_NAMESERVER 42
254 #define IPPORT_WHOIS 43
255 #define IPPORT_MTP 57
256 #define IPPORT_TFTP 69
257 #define IPPORT_RJE 77
258 #define IPPORT_FINGER 79
259 #define IPPORT_TTYLINK 87
260 #define IPPORT_SUPDUP 95
261 #define IPPORT_EXECSERVER 512
262 #define IPPORT_LOGINSERVER 513
263 #define IPPORT_CMDSERVER 514
264 #define IPPORT_EFSSERVER 520
265 #define IPPORT_BIFFUDP 512
266 #define IPPORT_WHOSERVER 513
267 #define IPPORT_ROUTESERVER 520
268 #define IPPORT_RESERVED 1024
269 #define IMPLINK_IP 155
270 #define IMPLINK_LOWEXPER 156
271 #define IMPLINK_HIGHEXPER 158
275 #define s_addr S_un.S_addr
276 #define s_host S_un.S_un_b.s_b2
277 #define s_net S_un.S_un_b.s_b1
278 #define s_imp S_un.S_un_w.s_w2
279 #define s_impno S_un.S_un_b.s_b4
280 #define s_lh S_un.S_un_b.s_b3
282 typedef struct in_addr
{
284 struct { u_char s_b1
,s_b2
,s_b3
,s_b4
; } S_un_b
;
285 struct { u_short s_w1
,s_w2
; } S_un_w
;
288 } IN_ADDR
, *PIN_ADDR
;
292 #define ADDR_ANY INADDR_ANY
294 #define WSADESCRIPTION_LEN 256
295 #define WSASYS_STATUS_LEN 128
297 typedef struct WSAData
{
301 unsigned short iMaxSockets
;
302 unsigned short iMaxUdpDg
;
304 char szDescription
[WSADESCRIPTION_LEN
+1];
305 char szSystemStatus
[WSASYS_STATUS_LEN
+1];
307 char szDescription
[WSADESCRIPTION_LEN
+1];
308 char szSystemStatus
[WSASYS_STATUS_LEN
+1];
309 unsigned short iMaxSockets
;
310 unsigned short iMaxUdpDg
;
312 } WSADATA
, FAR
*LPWSADATA
;
314 #define INVALID_SOCKET (SOCKET)(~0)
316 #define SOCKET_ERROR (-1)
318 #define FROM_PROTOCOL_INFO (-1)
320 #define SOCK_STREAM 1
324 #define SOCK_SEQPACKET 5
327 #define SO_ACCEPTCONN 2
328 #define SO_REUSEADDR 4
329 #define SO_KEEPALIVE 8
330 #define SO_DONTROUTE 16
331 #define SO_BROADCAST 32
332 #define SO_USELOOPBACK 64
333 #define SO_LINGER 128
334 #define SO_OOBINLINE 256
335 #define SO_DONTLINGER (int)(~SO_LINGER)
336 #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR))
338 #define SO_SNDBUF 0x1001
339 #define SO_RCVBUF 0x1002
340 #define SO_SNDLOWAT 0x1003
341 #define SO_RCVLOWAT 0x1004
342 #define SO_SNDTIMEO 0x1005
343 #define SO_RCVTIMEO 0x1006
344 #define SO_ERROR 0x1007
345 #define SO_TYPE 0x1008
347 #define SO_GROUP_ID 0x2001
348 #define SO_GROUP_PRIORITY 0x2002
349 #define SO_MAX_MSG_SIZE 0x2003
350 #define SO_PROTOCOL_INFOA 0x2004
351 #define SO_PROTOCOL_INFOW 0x2005
353 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
355 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
357 #define PVD_CONFIG 0x3001
364 #define PF_UNSPEC AF_UNSPEC
365 #define PF_UNIX AF_UNIX
366 #define PF_INET AF_INET
367 #define PF_IMPLINK AF_IMPLINK
368 #define PF_PUP AF_PUP
369 #define PF_CHAOS AF_CHAOS
371 #define PF_IPX AF_IPX
372 #define PF_ISO AF_ISO
373 #define PF_OSI AF_OSI
374 #define PF_ECMA AF_ECMA
375 #define PF_DATAKIT AF_DATAKIT
376 #define PF_CCITT AF_CCITT
377 #define PF_SNA AF_SNA
378 #define PF_DECnet AF_DECnet
379 #define PF_DLI AF_DLI
380 #define PF_LAT AF_LAT
381 #define PF_HYLINK AF_HYLINK
382 #define PF_APPLETALK AF_APPLETALK
383 #define PF_VOICEVIEW AF_VOICEVIEW
384 #define PF_FIREFOX AF_FIREFOX
385 #define PF_UNKNOWN1 AF_UNKNOWN1
386 #define PF_BAN AF_BAN
387 #define PF_ATM AF_ATM
388 #define PF_INET6 AF_INET6
389 #if(_WIN32_WINNT >= 0x0600)
390 #define PF_BTH AF_BTH
392 #define PF_MAX AF_MAX
394 #define SOL_SOCKET 0xffff
396 #define MSG_PARTIAL 0x8000
397 #define MSG_INTERRUPT 0x10
398 #define MSG_MAXIOVLEN 16
400 #define MAXGETHOSTSTRUCT 1024
402 #define FD_READ_BIT 0
403 #define FD_READ (1 << FD_READ_BIT)
404 #define FD_WRITE_BIT 1
405 #define FD_WRITE (1 << FD_WRITE_BIT)
407 #define FD_OOB (1 << FD_OOB_BIT)
408 #define FD_ACCEPT_BIT 3
409 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
410 #define FD_CONNECT_BIT 4
411 #define FD_CONNECT (1 << FD_CONNECT_BIT)
412 #define FD_CLOSE_BIT 5
413 #define FD_CLOSE (1 << FD_CLOSE_BIT)
415 #define FD_QOS (1 << FD_QOS_BIT)
416 #define FD_GROUP_QOS_BIT 7
417 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
418 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
419 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
420 #define FD_ADDRESS_LIST_CHANGE_BIT 9
421 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
422 #define FD_MAX_EVENTS 10
423 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
427 #define WSABASEERR 10000
428 #define WSAEINTR (WSABASEERR+4)
429 #define WSAEBADF (WSABASEERR+9)
430 #define WSAEACCES (WSABASEERR+13)
431 #define WSAEFAULT (WSABASEERR+14)
432 #define WSAEINVAL (WSABASEERR+22)
433 #define WSAEMFILE (WSABASEERR+24)
434 #define WSAEWOULDBLOCK (WSABASEERR+35)
435 #define WSAEINPROGRESS (WSABASEERR+36)
436 #define WSAEALREADY (WSABASEERR+37)
437 #define WSAENOTSOCK (WSABASEERR+38)
438 #define WSAEDESTADDRREQ (WSABASEERR+39)
439 #define WSAEMSGSIZE (WSABASEERR+40)
440 #define WSAEPROTOTYPE (WSABASEERR+41)
441 #define WSAENOPROTOOPT (WSABASEERR+42)
442 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
443 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
444 #define WSAEOPNOTSUPP (WSABASEERR+45)
445 #define WSAEPFNOSUPPORT (WSABASEERR+46)
446 #define WSAEAFNOSUPPORT (WSABASEERR+47)
447 #define WSAEADDRINUSE (WSABASEERR+48)
448 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
449 #define WSAENETDOWN (WSABASEERR+50)
450 #define WSAENETUNREACH (WSABASEERR+51)
451 #define WSAENETRESET (WSABASEERR+52)
452 #define WSAECONNABORTED (WSABASEERR+53)
453 #define WSAECONNRESET (WSABASEERR+54)
454 #define WSAENOBUFS (WSABASEERR+55)
455 #define WSAEISCONN (WSABASEERR+56)
456 #define WSAENOTCONN (WSABASEERR+57)
457 #define WSAESHUTDOWN (WSABASEERR+58)
458 #define WSAETOOMANYREFS (WSABASEERR+59)
459 #define WSAETIMEDOUT (WSABASEERR+60)
460 #define WSAECONNREFUSED (WSABASEERR+61)
461 #define WSAELOOP (WSABASEERR+62)
462 #define WSAENAMETOOLONG (WSABASEERR+63)
463 #define WSAEHOSTDOWN (WSABASEERR+64)
464 #define WSAEHOSTUNREACH (WSABASEERR+65)
465 #define WSAENOTEMPTY (WSABASEERR+66)
466 #define WSAEPROCLIM (WSABASEERR+67)
467 #define WSAEUSERS (WSABASEERR+68)
468 #define WSAEDQUOT (WSABASEERR+69)
469 #define WSAESTALE (WSABASEERR+70)
470 #define WSAEREMOTE (WSABASEERR+71)
471 #define WSASYSNOTREADY (WSABASEERR+91)
472 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
473 #define WSANOTINITIALISED (WSABASEERR+93)
474 #define WSAEDISCON (WSABASEERR+101)
475 #define WSAENOMORE (WSABASEERR+102)
476 #define WSAECANCELLED (WSABASEERR+103)
477 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
478 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
479 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
480 #define WSASYSCALLFAILURE (WSABASEERR+107)
481 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
482 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
483 #define WSA_E_NO_MORE (WSABASEERR+110)
484 #define WSA_E_CANCELLED (WSABASEERR+111)
485 #define WSAEREFUSED (WSABASEERR+112)
486 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
487 #define WSATRY_AGAIN (WSABASEERR+1002)
488 #define WSANO_RECOVERY (WSABASEERR+1003)
489 #define WSANO_DATA (WSABASEERR+1004)
490 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
491 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
492 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
493 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
494 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
495 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
496 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
497 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
498 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
499 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
500 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
501 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
502 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
503 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
504 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
505 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
506 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
507 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
508 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
509 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
510 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
511 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
512 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
513 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
514 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
515 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
516 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
518 #endif /* !WSABASEERR */
522 #define WSAAPI FAR PASCAL
523 #define WSAEVENT HANDLE
524 #define LPWSAEVENT LPHANDLE
525 #define WSAOVERLAPPED OVERLAPPED
526 typedef struct _OVERLAPPED
*LPWSAOVERLAPPED
;
527 #define WSA_IO_PENDING (ERROR_IO_PENDING)
528 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
529 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
530 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
531 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
532 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
533 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
534 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
535 #define WSA_WAIT_FAILED ((DWORD)-1L)
536 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
537 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
538 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
539 #define WSA_INFINITE (INFINITE)
543 #define WSAAPI FAR PASCAL
544 typedef DWORD WSAEVENT
, FAR
* LPWSAEVENT
;
546 typedef struct _WSAOVERLAPPED
{
552 } WSAOVERLAPPED
, FAR
* LPWSAOVERLAPPED
;
554 #define WSA_IO_PENDING (WSAEWOULDBLOCK)
555 #define WSA_IO_INCOMPLETE (WSAEWOULDBLOCK)
556 #define WSA_INVALID_HANDLE (WSAENOTSOCK)
557 #define WSA_INVALID_PARAMETER (WSAEINVAL)
558 #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS)
559 #define WSA_OPERATION_ABORTED (WSAEINTR)
561 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
562 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
563 #define WSA_WAIT_FAILED ((DWORD)-1L)
564 #define WSA_WAIT_EVENT_0 ((DWORD)0)
565 #define WSA_WAIT_TIMEOUT ((DWORD)0x102L)
566 #define WSA_INFINITE ((DWORD)-1L)
572 typedef struct _QualityOfService
{
573 FLOWSPEC SendingFlowspec
;
574 FLOWSPEC ReceivingFlowspec
;
575 WSABUF ProviderSpecific
;
578 #define CF_ACCEPT 0x0000
579 #define CF_REJECT 0x0001
580 #define CF_DEFER 0x0002
581 #define SD_RECEIVE 0x00
585 typedef unsigned int GROUP
;
587 #define SG_UNCONSTRAINED_GROUP 0x01
588 #define SG_CONSTRAINED_GROUP 0x02
590 typedef struct _WSANETWORKEVENTS
{
592 int iErrorCode
[FD_MAX_EVENTS
];
593 } WSANETWORKEVENTS
, *LPWSANETWORKEVENTS
;
599 #define MAX_PROTOCOL_CHAIN 7
601 #define BASE_PROTOCOL 1
602 #define LAYERED_PROTOCOL 0
604 typedef struct _WSAPROTOCOLCHAIN
{
606 DWORD ChainEntries
[MAX_PROTOCOL_CHAIN
];
607 } WSAPROTOCOLCHAIN
, *LPWSAPROTOCOLCHAIN
;
609 #define WSAPROTOCOL_LEN 255
611 typedef struct _WSAPROTOCOL_INFOA
{
612 DWORD dwServiceFlags1
;
613 DWORD dwServiceFlags2
;
614 DWORD dwServiceFlags3
;
615 DWORD dwServiceFlags4
;
616 DWORD dwProviderFlags
;
618 DWORD dwCatalogEntryId
;
619 WSAPROTOCOLCHAIN ProtocolChain
;
626 int iProtocolMaxOffset
;
627 int iNetworkByteOrder
;
630 DWORD dwProviderReserved
;
631 CHAR szProtocol
[WSAPROTOCOL_LEN
+1];
632 } WSAPROTOCOL_INFOA
, *LPWSAPROTOCOL_INFOA
;
634 typedef struct _WSAPROTOCOL_INFOW
{
635 DWORD dwServiceFlags1
;
636 DWORD dwServiceFlags2
;
637 DWORD dwServiceFlags3
;
638 DWORD dwServiceFlags4
;
639 DWORD dwProviderFlags
;
641 DWORD dwCatalogEntryId
;
642 WSAPROTOCOLCHAIN ProtocolChain
;
649 int iProtocolMaxOffset
;
650 int iNetworkByteOrder
;
653 DWORD dwProviderReserved
;
654 WCHAR szProtocol
[WSAPROTOCOL_LEN
+1];
655 } WSAPROTOCOL_INFOW
, * LPWSAPROTOCOL_INFOW
;
658 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO
;
659 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO
;
661 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO
;
662 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO
;
665 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
666 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
667 #define PFL_HIDDEN 0x00000004
668 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
669 #define PFL_NETWORKDIRECT_PROVIDER 0x00000010
671 #define XP1_CONNECTIONLESS 0x00000001
672 #define XP1_GUARANTEED_DELIVERY 0x00000002
673 #define XP1_GUARANTEED_ORDER 0x00000004
674 #define XP1_MESSAGE_ORIENTED 0x00000008
675 #define XP1_PSEUDO_STREAM 0x00000010
676 #define XP1_GRACEFUL_CLOSE 0x00000020
677 #define XP1_EXPEDITED_DATA 0x00000040
678 #define XP1_CONNECT_DATA 0x00000080
679 #define XP1_DISCONNECT_DATA 0x00000100
680 #define XP1_SUPPORT_BROADCAST 0x00000200
681 #define XP1_SUPPORT_MULTIPOINT 0x00000400
682 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
683 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000
684 #define XP1_QOS_SUPPORTED 0x00002000
685 #define XP1_INTERRUPT 0x00004000
686 #define XP1_UNI_SEND 0x00008000
687 #define XP1_UNI_RECV 0x00010000
688 #define XP1_IFS_HANDLES 0x00020000
689 #define XP1_PARTIAL_MESSAGE 0x00040000
690 #define XP1_SAN_SUPPORT_SDP 0x00080000
692 #define BIGENDIAN 0x0000
693 #define LITTLEENDIAN 0x0001
695 #define SECURITY_PROTOCOL_NONE 0x0000
697 #define JL_SENDER_ONLY 0x01
698 #define JL_RECEIVER_ONLY 0x02
701 #define WSA_FLAG_OVERLAPPED 0x01
702 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
703 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
704 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
705 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
706 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
709 (CALLBACK
*LPCONDITIONPROC
)(
710 IN LPWSABUF lpCallerId
,
711 IN LPWSABUF lpCallerData
,
714 IN LPWSABUF lpCalleeId
,
715 IN LPWSABUF lpCalleeData
,
717 IN DWORD_PTR dwCallbackData
);
720 (CALLBACK
*LPWSAOVERLAPPED_COMPLETION_ROUTINE
)(
722 IN DWORD cbTransferred
,
723 IN LPWSAOVERLAPPED lpOverlapped
,
726 #if(_WIN32_WINNT >= 0x0501)
728 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
730 typedef enum _WSACOMPLETIONTYPE
{
731 NSP_NOTIFY_IMMEDIATELY
= 0,
736 } WSACOMPLETIONTYPE
, * PWSACOMPLETIONTYPE
, *LPWSACOMPLETIONTYPE
;
738 typedef struct _WSACOMPLETION
{
739 WSACOMPLETIONTYPE Type
;
747 LPWSAOVERLAPPED lpOverlapped
;
750 LPWSAOVERLAPPED lpOverlapped
;
751 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc
;
754 LPWSAOVERLAPPED lpOverlapped
;
759 } WSACOMPLETION
, *PWSACOMPLETION
, *LPWSACOMPLETION
;
761 #endif /* (_WIN32_WINNT >= 0x0501) */
763 #define TH_NETDEV 0x00000001
764 #define TH_TAPI 0x00000002
766 #ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
767 #define __BLOB_T_DEFINED
768 /* wine is using a diff define */
769 #ifndef _tagBLOB_DEFINED
770 #define _tagBLOB_DEFINED
771 #define _BLOB_DEFINED
772 #define _LPBLOB_DEFINED
774 typedef struct _BLOB
{
777 } BLOB
,*PBLOB
,*LPBLOB
;
779 #endif /* _tagBLOB_DEFINED */
781 #endif /* __BLOB_T_DEFINED */
783 #define SERVICE_MULTIPLE 0x00000001
788 #define NS_PEER_BROWSE 3
791 #define NS_TCPIP_LOCAL 10
792 #define NS_TCPIP_HOSTS 11
796 #if(_WIN32_WINNT >= 0x0501)
799 #if(_WIN32_WINNT >= 0x0600)
806 #if(_WIN32_WINNT >= 0x0600)
808 #define NS_PNRPNAME 38
809 #define NS_PNRPCLOUD 39
813 #define NS_NISPLUS 42
817 #define RES_UNUSED_1 0x00000001
818 #define RES_FLUSH_CACHE 0x00000002
820 #define RES_SERVICE 0x00000004
823 #define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
824 #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
825 #define SERVICE_TYPE_VALUE_SAPIDA "SapId"
826 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
828 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
829 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
831 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
832 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
834 #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
835 #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
838 #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
839 #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
840 #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
841 #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
843 #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
844 #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
845 #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
846 #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
849 typedef struct _AFPROTOCOLS
{
852 } AFPROTOCOLS
, *PAFPROTOCOLS
, *LPAFPROTOCOLS
;
854 typedef enum _WSAEcomparator
{
857 } WSAECOMPARATOR
, *PWSAECOMPARATOR
, *LPWSAECOMPARATOR
;
859 typedef struct _WSAVersion
{
861 WSAECOMPARATOR ecHow
;
862 } WSAVERSION
, *PWSAVERSION
, *LPWSAVERSION
;
864 typedef struct _WSAQuerySetA
{
866 LPSTR lpszServiceInstanceName
;
867 LPGUID lpServiceClassId
;
868 LPWSAVERSION lpVersion
;
871 LPGUID lpNSProviderId
;
873 DWORD dwNumberOfProtocols
;
874 LPAFPROTOCOLS lpafpProtocols
;
875 LPSTR lpszQueryString
;
876 DWORD dwNumberOfCsAddrs
;
877 LPCSADDR_INFO lpcsaBuffer
;
880 } WSAQUERYSETA
, *PWSAQUERYSETA
, *LPWSAQUERYSETA
;
882 typedef struct _WSAQuerySetW
{
884 LPWSTR lpszServiceInstanceName
;
885 LPGUID lpServiceClassId
;
886 LPWSAVERSION lpVersion
;
889 LPGUID lpNSProviderId
;
891 DWORD dwNumberOfProtocols
;
892 LPAFPROTOCOLS lpafpProtocols
;
893 LPWSTR lpszQueryString
;
894 DWORD dwNumberOfCsAddrs
;
895 LPCSADDR_INFO lpcsaBuffer
;
898 } WSAQUERYSETW
, *PWSAQUERYSETW
, *LPWSAQUERYSETW
;
900 typedef struct _WSAQuerySet2A
{
902 LPSTR lpszServiceInstanceName
;
903 LPWSAVERSION lpVersion
;
906 LPGUID lpNSProviderId
;
908 DWORD dwNumberOfProtocols
;
909 LPAFPROTOCOLS lpafpProtocols
;
910 LPSTR lpszQueryString
;
911 DWORD dwNumberOfCsAddrs
;
912 LPCSADDR_INFO lpcsaBuffer
;
915 } WSAQUERYSET2A
, *PWSAQUERYSET2A
, *LPWSAQUERYSET2A
;
917 typedef struct _WSAQuerySet2W
{
919 LPWSTR lpszServiceInstanceName
;
920 LPWSAVERSION lpVersion
;
923 LPGUID lpNSProviderId
;
925 DWORD dwNumberOfProtocols
;
926 LPAFPROTOCOLS lpafpProtocols
;
927 LPWSTR lpszQueryString
;
928 DWORD dwNumberOfCsAddrs
;
929 LPCSADDR_INFO lpcsaBuffer
;
932 } WSAQUERYSET2W
, *PWSAQUERYSET2W
, *LPWSAQUERYSET2W
;
935 typedef WSAQUERYSETW WSAQUERYSET
;
936 typedef PWSAQUERYSETW PWSAQUERYSET
;
937 typedef LPWSAQUERYSETW LPWSAQUERYSET
;
938 typedef WSAQUERYSET2W WSAQUERYSET2
;
939 typedef PWSAQUERYSET2W PWSAQUERYSET2
;
940 typedef LPWSAQUERYSET2W LPWSAQUERYSET2
;
942 typedef WSAQUERYSETA WSAQUERYSET
;
943 typedef PWSAQUERYSETA PWSAQUERYSET
;
944 typedef LPWSAQUERYSETA LPWSAQUERYSET
;
945 typedef WSAQUERYSET2A WSAQUERYSET2
;
946 typedef PWSAQUERYSET2A PWSAQUERYSET2
;
947 typedef LPWSAQUERYSET2A LPWSAQUERYSET2
;
950 #define LUP_DEEP 0x0001
951 #define LUP_CONTAINERS 0x0002
952 #define LUP_NOCONTAINERS 0x0004
953 #define LUP_NEAREST 0x0008
954 #define LUP_RETURN_NAME 0x0010
955 #define LUP_RETURN_TYPE 0x0020
956 #define LUP_RETURN_VERSION 0x0040
957 #define LUP_RETURN_COMMENT 0x0080
958 #define LUP_RETURN_ADDR 0x0100
959 #define LUP_RETURN_BLOB 0x0200
960 #define LUP_RETURN_ALIASES 0x0400
961 #define LUP_RETURN_QUERY_STRING 0x0800
962 #define LUP_RETURN_ALL 0x0FF0
963 #define LUP_RES_SERVICE 0x8000
964 #define LUP_FLUSHCACHE 0x1000
965 #define LUP_FLUSHPREVIOUS 0x2000
966 #define LUP_NON_AUTHORITATIVE 0x4000
967 #define LUP_SECURE 0x8000
968 #define LUP_RETURN_PREFERRED_NAMES 0x10000
969 #define LUP_ADDRCONFIG 0x00100000
970 #define LUP_DUAL_ADDR 0x00200000
971 #define LUP_FILESERVER 0x00400000
973 #define RESULT_IS_ALIAS 0x0001
974 #if(_WIN32_WINNT >= 0x0501)
975 #define RESULT_IS_ADDED 0x0010
976 #define RESULT_IS_CHANGED 0x0020
977 #define RESULT_IS_DELETED 0x0040
980 typedef enum _WSAESETSERVICEOP
{
981 RNRSERVICE_REGISTER
=0,
982 RNRSERVICE_DEREGISTER
,
984 } WSAESETSERVICEOP
, *PWSAESETSERVICEOP
, *LPWSAESETSERVICEOP
;
986 typedef struct _WSANSClassInfoA
{
992 } WSANSCLASSINFOA
, *PWSANSCLASSINFOA
, *LPWSANSCLASSINFOA
;
994 typedef struct _WSANSClassInfoW
{
1000 } WSANSCLASSINFOW
, *PWSANSCLASSINFOW
, *LPWSANSCLASSINFOW
;
1003 typedef WSANSCLASSINFOW WSANSCLASSINFO
;
1004 typedef PWSANSCLASSINFOW PWSANSCLASSINFO
;
1005 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO
;
1007 typedef WSANSCLASSINFOA WSANSCLASSINFO
;
1008 typedef PWSANSCLASSINFOA PWSANSCLASSINFO
;
1009 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO
;
1012 typedef struct _WSAServiceClassInfoA
{
1013 LPGUID lpServiceClassId
;
1014 LPSTR lpszServiceClassName
;
1016 LPWSANSCLASSINFOA lpClassInfos
;
1017 } WSASERVICECLASSINFOA
, *PWSASERVICECLASSINFOA
, *LPWSASERVICECLASSINFOA
;
1019 typedef struct _WSAServiceClassInfoW
{
1020 LPGUID lpServiceClassId
;
1021 LPWSTR lpszServiceClassName
;
1023 LPWSANSCLASSINFOW lpClassInfos
;
1024 } WSASERVICECLASSINFOW
, *PWSASERVICECLASSINFOW
, *LPWSASERVICECLASSINFOW
;
1027 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO
;
1028 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO
;
1029 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO
;
1031 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO
;
1032 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO
;
1033 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO
;
1036 typedef struct _WSANAMESPACE_INFOA
{
1041 LPSTR lpszIdentifier
;
1042 } WSANAMESPACE_INFOA
, *PWSANAMESPACE_INFOA
, *LPWSANAMESPACE_INFOA
;
1044 typedef struct _WSANAMESPACE_INFOW
{
1049 LPWSTR lpszIdentifier
;
1050 } WSANAMESPACE_INFOW
, *PWSANAMESPACE_INFOW
, *LPWSANAMESPACE_INFOW
;
1052 typedef struct _WSANAMESPACE_INFOEXA
{
1057 LPSTR lpszIdentifier
;
1058 BLOB ProviderSpecific
;
1059 } WSANAMESPACE_INFOEXA
, *PWSANAMESPACE_INFOEXA
, *LPWSANAMESPACE_INFOEXA
;
1061 typedef struct _WSANAMESPACE_INFOEXW
{
1066 LPWSTR lpszIdentifier
;
1067 BLOB ProviderSpecific
;
1068 } WSANAMESPACE_INFOEXW
, *PWSANAMESPACE_INFOEXW
, *LPWSANAMESPACE_INFOEXW
;
1071 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO
;
1072 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO
;
1073 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO
;
1074 typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX
;
1075 typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX
;
1076 typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX
;
1078 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO
;
1079 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO
;
1080 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO
;
1081 typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX
;
1082 typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX
;
1083 typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX
;
1084 #endif /* UNICODE */
1086 #if(_WIN32_WINNT >= 0x0600)
1088 #define POLLRDNORM 0x0100
1089 #define POLLRDBAND 0x0200
1090 #define POLLIN (POLLRDNORM | POLLRDBAND)
1091 #define POLLPRI 0x0400
1093 #define POLLWRNORM 0x0010
1094 #define POLLOUT (POLLWRNORM)
1095 #define POLLWRBAND 0x0020
1097 #define POLLERR 0x0001
1098 #define POLLHUP 0x0002
1099 #define POLLNVAL 0x0004
1101 typedef struct pollfd
{
1105 } WSAPOLLFD
, *PWSAPOLLFD
, FAR
*LPWSAPOLLFD
;
1107 #endif /* (_WIN32_WINNT >= 0x0600) */
1109 #if INCL_WINSOCK_API_TYPEDEFS
1112 (WSAAPI
*LPFN_ACCEPT
)(
1114 OUT
struct sockaddr FAR
*addr OPTIONAL
,
1115 IN OUT
int FAR
*addrlen OPTIONAL
);
1118 (WSAAPI
*LPFN_BIND
)(
1120 IN
const struct sockaddr FAR
*name
,
1124 (WSAAPI
*LPFN_CLOSESOCKET
)(
1128 (WSAAPI
*LPFN_CONNECT
)(
1130 IN
const struct sockaddr FAR
*name
,
1134 (WSAAPI
*LPFN_IOCTLSOCKET
)(
1137 IN OUT u_long FAR
*argp
);
1140 (WSAAPI
*LPFN_GETPEERNAME
)(
1142 OUT
struct sockaddr FAR
*name
,
1143 IN OUT
int FAR
*namelen
);
1146 (WSAAPI
*LPFN_GETSOCKNAME
)(
1148 OUT
struct sockaddr FAR
*name
,
1149 IN OUT
int FAR
*namelen
);
1152 (WSAAPI
*LPFN_GETSOCKOPT
)(
1156 OUT
char FAR
*optval
,
1157 IN OUT
int FAR
*optlen
);
1160 (WSAAPI
*LPFN_HTONL
)(
1161 IN u_long hostlong
);
1164 (WSAAPI
*LPFN_HTONS
)(
1165 IN u_short hostshort
);
1167 typedef unsigned long
1168 (WSAAPI
*LPFN_INET_ADDR
)(
1169 IN
const char FAR
*cp
);
1172 (WSAAPI
*LPFN_INET_NTOA
)(
1173 IN
struct in_addr in
);
1176 (WSAAPI
*LPFN_LISTEN
)(
1181 (WSAAPI
*LPFN_NTOHL
)(
1185 (WSAAPI
*LPFN_NTOHS
)(
1186 IN u_short netshort
);
1189 (WSAAPI
*LPFN_RECV
)(
1196 (WSAAPI
*LPFN_RECVFROM
)(
1201 OUT
struct sockaddr FAR
*from OPTIONAL
,
1202 IN OUY
int FAR
* fromlen OPTIONAL
);
1205 (WSAAPI
*LPFN_SELECT
)(
1207 IN OUT fd_set FAR
*readfds OPTIONAL
,
1208 IN OUT fd_set FAR
*writefds OPTIONAL
,
1209 IN OUT fd_set FAR
*exceptfds OPTIONAL
,
1210 IN
const struct timeval FAR
*timeout OPTIONAL
);
1213 (WSAAPI
*LPFN_SEND
)(
1215 IN
const char FAR
*buf
,
1220 (WSAAPI
*LPFN_SENDTO
)(
1222 IN
const char FAR
*buf
,
1225 IN
const struct sockaddr FAR
*to OPTIONAL
,
1229 (WSAAPI
*LPFN_SETSOCKOPT
)(
1233 IN
const char FAR
*optval OPTIONAL
,
1237 (WSAAPI
*LPFN_SHUTDOWN
)(
1242 (WSAAPI
*LPFN_SOCKET
)(
1247 typedef struct hostent FAR
*
1248 (WSAAPI
*LPFN_GETHOSTBYADDR
)(
1249 IN
const char FAR
*addr
,
1253 typedef struct hostent FAR
*
1254 (WSAAPI
*LPFN_GETHOSTBYNAME
)(
1255 IN
const char FAR
*name
);
1258 (WSAAPI
*LPFN_GETHOSTNAME
)(
1262 typedef struct servent FAR
*
1263 (WSAAPI
*LPFN_GETSERVBYPORT
)(
1265 IN
const char FAR
*proto
);
1267 typedef struct servent FAR
*
1268 (WSAAPI
*LPFN_GETSERVBYNAME
)(
1269 IN
const char FAR
*name
,
1270 IN
const char FAR
*proto
);
1272 typedef struct protoent FAR
*
1273 (WSAAPI
*LPFN_GETPROTOBYNUMBER
)(
1276 typedef struct protoent FAR
*
1277 (WSAAPI
*LPFN_GETPROTOBYNAME
)(
1278 IN
const char FAR
*name
);
1281 (WSAAPI
*LPFN_WSASTARTUP
)(
1282 IN WORD wVersionRequired
,
1283 OUT LPWSADATA lpWSAData
);
1286 (WSAAPI
*LPFN_WSACLEANUP
)(void);
1289 (WSAAPI
*LPFN_WSASETLASTERROR
)(
1293 (WSAAPI
*LPFN_WSAGETLASTERROR
)(void);
1296 (WSAAPI
*LPFN_WSAISBLOCKING
)(void);
1299 (WSAAPI
*LPFN_WSAUNHOOKBLOCKINGHOOK
)(void);
1302 (WSAAPI
*LPFN_WSASETBLOCKINGHOOK
)(
1303 IN FARPROC lpBlockFunc
);
1306 (WSAAPI
*LPFN_WSACANCELBLOCKINGCALL
)(void);
1309 (WSAAPI
*LPFN_WSAASYNCGETSERVBYNAME
)(
1312 IN
const char FAR
*name
,
1313 IN
const char FAR
*proto
,
1318 (WSAAPI
*LPFN_WSAASYNCGETSERVBYPORT
)(
1322 IN
const char FAR
*proto
,
1327 (WSAAPI
*LPFN_WSAASYNCGETPROTOBYNAME
)(
1330 IN
const char FAR
*name
,
1335 (WSAAPI
*LPFN_WSAASYNCGETPROTOBYNUMBER
)(
1343 (WSAAPI
*LPFN_WSAASYNCGETHOSTBYNAME
)(
1346 IN
const char FAR
*name
,
1351 (WSAAPI
*LPFN_WSAASYNCGETHOSTBYADDR
)(
1354 IN
const char FAR
*addr
,
1361 (WSAAPI
*LPFN_WSACANCELASYNCREQUEST
)(
1362 IN HANDLE hAsyncTaskHandle
);
1365 (WSAAPI
*LPFN_WSAASYNCSELECT
)(
1372 (WSAAPI
*LPFN_WSAACCEPT
)(
1374 OUT
struct sockaddr FAR
*addr OPTIONAL
,
1375 IN OUT LPINT addrlen OPTIONAL
,
1376 IN LPCONDITIONPROC lpfnCondition OPTIONAL
,
1377 IN DWORD_PTR dwCallbackData OPTIONAL
);
1380 (WSAAPI
*LPFN_WSACLOSEEVENT
)(
1381 IN WSAEVENT hEvent
);
1384 (WSAAPI
*LPFN_WSACONNECT
)(
1386 IN
const struct sockaddr FAR
*name
,
1388 IN LPWSABUF lpCallerData OPTIONAL
,
1389 OUT LPWSABUF lpCalleeData OPTIONAL
,
1390 IN LPQOS lpSQOS OPTIONAL
,
1391 IN LPQOS lpGQOS OPTIONAL
);
1394 (WSAAPI
*LPFN_WSACREATEEVENT
)(void);
1397 (WSAAPI
*LPFN_WSADUPLICATESOCKETA
)(
1399 IN DWORD dwProcessId
,
1400 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
);
1403 (WSAAPI
*LPFN_WSADUPLICATESOCKETW
)(
1405 IN DWORD dwProcessId
,
1406 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
);
1409 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
1411 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
1415 (WSAAPI
*LPFN_WSAENUMNETWORKEVENTS
)(
1417 IN WSAEVENT hEventObject
,
1418 OUT LPWSANETWORKEVENTS lpNetworkEvents
);
1421 (WSAAPI
*LPFN_WSAENUMPROTOCOLSA
)(
1422 IN LPINT lpiProtocols OPTIONAL
,
1423 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL
,
1424 IN OUT LPDWORD lpdwBufferLength
);
1427 (WSAAPI
*LPFN_WSAENUMPROTOCOLSW
)(
1428 IN LPINT lpiProtocols OPTIONAL
,
1429 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL
,
1430 IN OUT LPDWORD lpdwBufferLength
);
1433 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
1435 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
1439 (WSAAPI
*LPFN_WSAEVENTSELECT
)(
1441 IN WSAEVENT hEventObject
,
1442 IN
long lNetworkEvents
);
1445 (WSAAPI
*LPFN_WSAGETOVERLAPPEDRESULT
)(
1447 IN LPWSAOVERLAPPED lpOverlapped
,
1448 OUT LPDWORD lpcbTransfer
,
1450 OUT LPDWORD lpdwFlags
);
1453 (WSAAPI
*LPFN_WSAGETQOSBYNAME
)(
1455 IN LPWSABUF lpQOSName
,
1459 (WSAAPI
*LPFN_WSAHTONL
)(
1462 OUT u_long FAR
*lpnetlong
);
1465 (WSAAPI
*LPFN_WSAHTONS
)(
1467 IN u_short hostshort
,
1468 OUT u_short FAR
*lpnetshort
);
1471 (WSAAPI
*LPFN_WSAIOCTL
)(
1473 IN DWORD dwIoControlCode
,
1474 IN LPVOID lpvInBuffer OPTIONAL
,
1475 IN DWORD cbInBuffer
,
1476 OUT LPVOID lpvOutBuffer OPTIONAL
,
1477 IN DWORD cbOutBuffer
,
1478 OUT LPDWORD lpcbBytesReturned
,
1479 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1480 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1483 (WSAAPI
*LPFN_WSAJOINLEAF
)(
1485 IN
const struct sockaddr FAR
*name
,
1487 IN LPWSABUF lpCallerData OPTIONAL
,
1488 OUT LPWSABUF lpCalleeData OPTIONAL
,
1489 IN LPQOS lpSQOS OPTIONAL
,
1490 IN LPQOS lpGQOS OPTIONAL
,
1494 (WSAAPI
*LPFN_WSANTOHL
)(
1497 OUT u_long FAR
*lphostlong
);
1500 (WSAAPI
*LPFN_WSANTOHS
)(
1502 IN u_short netshort
,
1503 OUT u_short FAR
*lphostshort
);
1506 (WSAAPI
*LPFN_WSARECV
)(
1508 IN LPWSABUF lpBuffers
,
1509 IN DWORD dwBufferCount
,
1510 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
1511 IN OUT LPDWORD lpFlags
,
1512 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1513 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1516 (WSAAPI
*LPFN_WSARECVDISCONNECT
)(
1518 OUT LPWSABUF lpInboundDisconnectData
);
1521 (WSAAPI
*LPFN_WSARECVFROM
)(
1523 IN LPWSABUF lpBuffers
,
1524 IN DWORD dwBufferCount
,
1525 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
1526 IN OUT LPDWORD lpFlags
,
1527 OUT
struct sockaddr FAR
*lpFrom OPTIONAL
,
1528 IN OUT LPINT lpFromlen OPTIONAL
,
1529 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1530 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1533 (WSAAPI
*LPFN_WSARESETEVENT
)(
1534 IN WSAEVENT hEvent
);
1537 (WSAAPI
*LPFN_WSASEND
)(
1539 IN LPWSABUF lpBuffers
,
1540 IN DWORD dwBufferCount
,
1541 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
1543 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1544 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1547 (WSAAPI
*LPFN_WSASENDDISCONNECT
)(
1549 IN LPWSABUF lpOutboundDisconnectData OPTIONAL
);
1552 (WSAAPI
*LPFN_WSASENDTO
)(
1554 IN LPWSABUF lpBuffers
,
1555 IN DWORD dwBufferCount
,
1556 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
1558 IN
const struct sockaddr FAR
*lpTo
,
1560 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1561 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1564 (WSAAPI
*LPFN_WSASETEVENT
)(
1565 IN WSAEVENT hEvent
);
1568 (WSAAPI
*LPFN_WSASOCKETA
)(
1572 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
1577 (WSAAPI
*LPFN_WSASOCKETW
)(
1581 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
1586 #define LPFN_WSASOCKET LPFN_WSASOCKETW
1588 #define LPFN_WSASOCKET LPFN_WSASOCKETA
1592 (WSAAPI
*LPFN_WSAWAITFORMULTIPLEEVENTS
)(
1594 IN
const WSAEVENT FAR
*lphEvents
,
1597 IN BOOL fAlertable
);
1600 (WSAAPI
*LPFN_WSAADDRESSTOSTRINGA
)(
1601 IN LPSOCKADDR lpsaAddress
,
1602 IN DWORD dwAddressLength
,
1603 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
1604 OUT LPSTR lpszAddressString
,
1605 IN OUT LPDWORD lpdwAddressStringLength
);
1608 (WSAAPI
*LPFN_WSAADDRESSTOSTRINGW
)(
1609 IN LPSOCKADDR lpsaAddress
,
1610 IN DWORD dwAddressLength
,
1611 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
1612 OUT LPWSTR lpszAddressString
,
1613 IN OUT LPDWORD lpdwAddressStringLength
);
1616 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
1618 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
1622 (WSAAPI
*LPFN_WSASTRINGTOADDRESSA
)(
1623 IN LPSTR AddressString
,
1624 IN INT AddressFamily
,
1625 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
1626 OUT LPSOCKADDR lpAddress
,
1627 IN OUT LPINT lpAddressLength
);
1630 (WSAAPI
*LPFN_WSASTRINGTOADDRESSW
)(
1631 IN LPWSTR AddressString
,
1632 IN INT AddressFamily
,
1633 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
1634 OUT LPSOCKADDR lpAddress
,
1635 IN OUT LPINT lpAddressLength
);
1638 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
1640 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
1644 (WSAAPI
*LPFN_WSALOOKUPSERVICEBEGINA
)(
1645 IN LPWSAQUERYSETA lpqsRestrictions
,
1646 IN DWORD dwControlFlags
,
1647 OUT LPHANDLE lphLookup
);
1650 (WSAAPI
*LPFN_WSALOOKUPSERVICEBEGINW
)(
1651 IN LPWSAQUERYSETW lpqsRestrictions
,
1652 IN DWORD dwControlFlags
,
1653 OUT LPHANDLE lphLookup
);
1656 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
1658 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
1662 (WSAAPI
*LPFN_WSALOOKUPSERVICENEXTA
)(
1664 IN DWORD dwControlFlags
,
1665 IN OUT LPDWORD lpdwBufferLength
,
1666 OUT LPWSAQUERYSETA lpqsResults
);
1669 (WSAAPI
*LPFN_WSALOOKUPSERVICENEXTW
)(
1671 IN DWORD dwControlFlags
,
1672 IN OUT LPDWORD lpdwBufferLength
,
1673 OUT LPWSAQUERYSETW lpqsResults OPTIONAL
);
1676 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
1678 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
1682 (WSAAPI
*LPFN_WSALOOKUPSERVICEEND
)(
1686 (WSAAPI
*LPFN_WSAINSTALLSERVICECLASSA
)(
1687 IN LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1690 (WSAAPI
*LPFN_WSAINSTALLSERVICECLASSW
)(
1691 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1694 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
1696 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
1700 (WSAAPI
*LPFN_WSAREMOVESERVICECLASS
)(
1701 IN LPGUID lpServiceClassId
);
1704 (WSAAPI
*LPFN_WSAGETSERVICECLASSINFOA
)(
1705 IN LPGUID lpProviderId
,
1706 IN LPGUID lpServiceClassId
,
1707 IN OUT LPDWORD lpdwBufSize
,
1708 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1711 (WSAAPI
*LPFN_WSAGETSERVICECLASSINFOW
)(
1712 IN LPGUID lpProviderId
,
1713 IN LPGUID lpServiceClassId
,
1714 IN OUT LPDWORD lpdwBufSize
,
1715 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1718 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
1720 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
1724 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSA
)(
1725 IN OUT LPDWORD lpdwBufferLength
,
1726 OUT LPWSANAMESPACE_INFOA lpnspBuffer
);
1729 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSW
)(
1730 IN OUT LPDWORD lpdwBufferLength
,
1731 OUT LPWSANAMESPACE_INFOW lpnspBuffer
);
1734 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
1736 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
1740 (WSAAPI
*LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
)(
1741 IN LPGUID lpServiceClassId
,
1742 OUT LPSTR lpszServiceClassName
,
1743 IN OUT LPDWORD lpdwBufferLength
);
1746 (WSAAPI
*LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
)(
1747 IN LPGUID lpServiceClassId
,
1748 OUT LPWSTR lpszServiceClassName
,
1749 IN OUT LPDWORD lpdwBufferLength
);
1752 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
1754 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
1758 (WSAAPI
*LPFN_WSASETSERVICEA
)(
1759 IN LPWSAQUERYSETA lpqsRegInfo
,
1760 IN WSAESETSERVICEOP essoperation
,
1761 IN DWORD dwControlFlags
);
1764 (WSAAPI
*LPFN_WSASETSERVICEW
)(
1765 IN LPWSAQUERYSETW lpqsRegInfo
,
1766 IN WSAESETSERVICEOP essoperation
,
1767 IN DWORD dwControlFlags
);
1770 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
1772 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
1776 (WSAAPI
*LPFN_WSAPROVIDERCONFIGCHANGE
)(
1777 IN OUT LPHANDLE lpNotificationHandle OPTIONAL
,
1778 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
1779 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
1781 #if(_WIN32_WINNT >= 0x0501)
1783 (WSAAPI
*LPFN_WSANSPIOCTL
)(
1785 IN DWORD dwControlCode
,
1786 IN LPVOID lpvInBuffer OPTIONAL
,
1787 IN DWORD cbInBuffer
,
1788 OUT LPVOID lpvOutBuffer OPTIONAL
,
1789 IN DWORD cbOutBuffer
,
1790 OUT LPDWORD lpcbBytesReturned
,
1791 IN LPWSACOMPLETION lpCompletion OPTIONAL
);
1792 #endif /* (_WIN32_WINNT >= 0x0501) */
1794 #if (_WIN32_WINNT >= 0x0600)
1797 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSEXA
)(
1798 IN OUT LPDWORD lpdwBufferLength
,
1799 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer
);
1802 (WSAAPI
*LPFN_WSAENUMNAMESPACEPROVIDERSEXW
)(
1803 IN OUT LPDWORD lpdwBufferLength
,
1804 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer
);
1807 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
1809 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXA
1812 #endif /* (_WIN32_WINNT >= 0x600) */
1814 #endif /* INCL_WINSOCK_API_TYPEDEFS */
1816 #if INCL_WINSOCK_API_PROTOTYPES
1824 OUT
struct sockaddr FAR
*addr OPTIONAL
,
1825 IN OUT
int FAR
*addrlen OPTIONAL
);
1832 IN
const struct sockaddr FAR
*addr
,
1846 IN
const struct sockaddr FAR
*name
,
1855 IN OUT u_long FAR
*argp
);
1862 OUT
struct sockaddr FAR
*name
,
1863 IN OUT
int FAR
*namelen
);
1870 OUT
struct sockaddr FAR
*name
,
1871 IN OUT
int FAR
*namelen
);
1880 OUT
char FAR
*optval
,
1881 IN OUT
int FAR
*optlen
);
1887 IN u_long hostlong
);
1893 IN u_short hostshort
);
1899 IN
const char FAR
*cp
);
1905 IN
struct in_addr in
);
1924 IN u_short netshort
);
1943 OUT
struct sockaddr FAR
*from OPTIONAL
,
1944 IN OUY
int FAR
*fromlen OPTIONAL
);
1951 IN OUT fd_set FAR
*readfds OPTIONAL
,
1952 IN OUT fd_set FAR
*writefds OPTIONAL
,
1953 IN OUT fd_set FAR
*exceptfds OPTIONAL
,
1954 IN
const struct timeval FAR
*timeout OPTIONAL
);
1961 IN
const char FAR
*buf
,
1970 IN
const char FAR
*buf
,
1973 IN
const struct sockaddr FAR
*to OPTIONAL
,
1983 IN
const char FAR
*optval OPTIONAL
,
2002 struct hostent FAR
*
2005 IN
const char FAR
*addr
,
2010 struct hostent FAR
*
2013 IN
const char FAR
*name
);
2023 struct servent FAR
*
2027 IN
const char FAR
*proto
);
2030 struct servent FAR
*
2033 IN
const char FAR
*name
,
2034 IN
const char FAR
*proto
);
2037 struct protoent FAR
*
2043 struct protoent FAR
*
2046 IN
const char FAR
*name
);
2052 IN WORD wVersionRequired
,
2053 OUT LPWSADATA lpWSAData
);
2069 WSAGetLastError(void);
2074 WSAIsBlocking(void);
2079 WSAUnhookBlockingHook(void);
2085 IN FARPROC lpBlockFunc
);
2090 WSACancelBlockingCall(void);
2095 WSAAsyncGetServByName(
2098 IN
const char FAR
*name
,
2099 IN
const char FAR
*proto
,
2106 WSAAsyncGetServByPort(
2110 IN
const char FAR
*proto
,
2117 WSAAsyncGetProtoByName(
2120 IN
const char FAR
*name
,
2127 WSAAsyncGetProtoByNumber(
2137 WSAAsyncGetHostByName(
2140 IN
const char FAR
*name
,
2147 WSAAsyncGetHostByAddr(
2150 IN
const char FAR
*addr
,
2159 WSACancelAsyncRequest(
2160 IN HANDLE hAsyncTaskHandle
);
2176 OUT
struct sockaddr FAR
*addr OPTIONAL
,
2177 IN OUT LPINT addrlen OPTIONAL
,
2178 IN LPCONDITIONPROC lpfnCondition OPTIONAL
,
2179 IN DWORD_PTR dwCallbackData OPTIONAL
);
2185 IN WSAEVENT hEvent
);
2192 IN
const struct sockaddr FAR
*name
,
2194 IN LPWSABUF lpCallerData OPTIONAL
,
2195 OUT LPWSABUF lpCalleeData OPTIONAL
,
2196 IN LPQOS lpSQOS OPTIONAL
,
2197 IN LPQOS lpGQOS OPTIONAL
);
2200 #define WSAConnectByName WSAConnectByNameW
2202 #define WSAConnectByName WSAConnectByNameA
2210 IN LPWSTR servicename
,
2211 IN OUT LPDWORD LocalAddressLength
,
2212 OUT LPSOCKADDR LocalAddress
,
2213 IN OUT LPDWORD RemoteAddressLength
,
2214 OUT LPSOCKADDR RemoteAddress
,
2215 IN
const struct timeval
*timeout
,
2216 IN LPWSAOVERLAPPED Reserved OPTIONAL
);
2223 IN LPCSTR servicename
,
2224 IN OUT LPDWORD LocalAddressLength
,
2225 OUT LPSOCKADDR LocalAddress
,
2226 IN OUT LPDWORD RemoteAddressLength
,
2227 OUT LPSOCKADDR RemoteAddress
,
2228 IN
const struct timeval
*timeout
,
2229 IN LPWSAOVERLAPPED Reserved OPTIONAL
);
2235 IN PSOCKET_ADDRESS_LIST SocketAddress
,
2236 IN OUT LPDWORD LocalAddressLength
,
2237 OUT LPSOCKADDR LocalAddress
,
2238 IN OUT LPDWORD RemoteAddressLength
,
2239 OUT LPSOCKADDR RemoteAddress
,
2240 IN
const struct timeval
*timeout
,
2241 IN LPWSAOVERLAPPED Reserved OPTIONAL
);
2246 WSACreateEvent(void);
2251 WSADuplicateSocketA(
2253 IN DWORD dwProcessId
,
2254 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
);
2259 WSADuplicateSocketW(
2261 IN DWORD dwProcessId
,
2262 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
);
2265 #define WSADuplicateSocket WSADuplicateSocketW
2267 #define WSADuplicateSocket WSADuplicateSocketA
2273 WSAEnumNetworkEvents(
2275 IN WSAEVENT hEventObject
,
2276 OUT LPWSANETWORKEVENTS lpNetworkEvents
);
2282 IN LPINT lpiProtocols OPTIONAL
,
2283 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer OPTIONAL
,
2284 IN OUT LPDWORD lpdwBufferLength
);
2290 IN LPINT lpiProtocols OPTIONAL
,
2291 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL
,
2292 IN OUT LPDWORD lpdwBufferLength
);
2295 #define WSAEnumProtocols WSAEnumProtocolsW
2297 #define WSAEnumProtocols WSAEnumProtocolsA
2305 IN WSAEVENT hEventObject
,
2306 IN
long lNetworkEvents
);
2311 WSAGetOverlappedResult(
2313 IN LPWSAOVERLAPPED lpOverlapped
,
2314 OUT LPDWORD lpcbTransfer
,
2316 OUT LPDWORD lpdwFlags
);
2323 IN LPWSABUF lpQOSName
,
2332 OUT u_long FAR
*lpnetlong
);
2339 IN u_short hostshort
,
2340 OUT u_short FAR
*lpnetshort
);
2347 IN DWORD dwIoControlCode
,
2348 IN LPVOID lpvInBuffer OPTIONAL
,
2349 IN DWORD cbInBuffer
,
2350 OUT LPVOID lpvOutBuffer OPTIONAL
,
2351 IN DWORD cbOutBuffer
,
2352 OUT LPDWORD lpcbBytesReturned
,
2353 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2354 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2361 IN
const struct sockaddr FAR
*name
,
2363 IN LPWSABUF lpCallerData OPTIONAL
,
2364 OUT LPWSABUF lpCalleeData OPTIONAL
,
2365 IN LPQOS lpSQOS OPTIONAL
,
2366 IN LPQOS lpGQOS OPTIONAL
,
2375 OUT u_long FAR
*lphostlong
);
2382 IN u_short netshort
,
2383 OUT u_short FAR
*lphostshort
);
2390 IN LPWSABUF lpBuffers
,
2391 IN DWORD dwBufferCount
,
2392 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
2393 IN OUT LPDWORD lpFlags
,
2394 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2395 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2402 IN LPWSABUF lpInboundDisconnectData OPTIONAL
);
2409 IN OUT LPWSABUF lpBuffers
,
2410 IN DWORD dwBufferCount
,
2411 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL
,
2412 IN OUT LPDWORD lpFlags
,
2413 OUT
struct sockaddr FAR
*lpFrom
,
2414 IN OUT LPINT lpFromlen OPTIONAL
,
2415 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2416 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2422 IN WSAEVENT hEvent
);
2429 IN LPWSABUF lpOutboundDisconnectData OPTIONAL
);
2436 IN LPWSABUF lpBuffers
,
2437 IN DWORD dwBufferCount
,
2438 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
2440 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2441 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2448 IN LPWSABUF lpBuffers
,
2449 IN DWORD dwBufferCount
,
2450 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
2452 IN
const struct sockaddr FAR
*lpTo OPTIONAL
,
2454 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2455 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2461 IN WSAEVENT hEvent
);
2470 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
2481 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
2486 #define WSASocket WSASocketW
2488 #define WSASocket WSASocketA
2494 WSAWaitForMultipleEvents(
2496 IN
const WSAEVENT FAR
*lphEvents
,
2499 IN BOOL fAlertable
);
2504 WSAAddressToStringA(
2505 IN LPSOCKADDR lpsaAddress
,
2506 IN DWORD dwAddressLength
,
2507 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
2508 OUT LPSTR lpszAddressString
,
2509 IN OUT LPDWORD lpdwAddressStringLength
);
2514 WSAAddressToStringW(
2515 IN LPSOCKADDR lpsaAddress
,
2516 IN DWORD dwAddressLength
,
2517 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
2518 OUT LPWSTR lpszAddressString
,
2519 IN OUT LPDWORD lpdwAddressStringLength
);
2522 #define WSAAddressToString WSAAddressToStringW
2524 #define WSAAddressToString WSAAddressToStringA
2530 WSAStringToAddressA(
2531 IN LPSTR AddressString
,
2532 IN INT AddressFamily
,
2533 IN LPWSAPROTOCOL_INFOA lpProtocolInfo OPTIONAL
,
2534 OUT LPSOCKADDR lpAddress
,
2535 IN OUT LPINT lpAddressLength
);
2540 WSAStringToAddressW(
2541 IN LPWSTR AddressString
,
2542 IN INT AddressFamily
,
2543 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL
,
2544 OUT LPSOCKADDR lpAddress
,
2545 IN OUT LPINT lpAddressLength
);
2548 #define WSAStringToAddress WSAStringToAddressW
2550 #define WSAStringToAddress WSAStringToAddressA
2556 WSALookupServiceBeginA(
2557 IN LPWSAQUERYSETA lpqsRestrictions
,
2558 IN DWORD dwControlFlags
,
2559 OUT LPHANDLE lphLookup
);
2564 WSALookupServiceBeginW(
2565 IN LPWSAQUERYSETW lpqsRestrictions
,
2566 IN DWORD dwControlFlags
,
2567 OUT LPHANDLE lphLookup
);
2570 #define WSALookupServiceBegin WSALookupServiceBeginW
2572 #define WSALookupServiceBegin WSALookupServiceBeginA
2578 WSALookupServiceNextA(
2580 IN DWORD dwControlFlags
,
2581 IN OUT LPDWORD lpdwBufferLength
,
2582 OUT LPWSAQUERYSETA lpqsResults
);
2587 WSALookupServiceNextW(
2589 IN DWORD dwControlFlags
,
2590 IN OUT LPDWORD lpdwBufferLength
,
2591 OUT LPWSAQUERYSETW lpqsResults OPTIONAL
);
2594 #define WSALookupServiceNext WSALookupServiceNextW
2596 #define WSALookupServiceNext WSALookupServiceNextA
2602 WSALookupServiceEnd(
2608 WSAInstallServiceClassA(
2609 IN LPWSASERVICECLASSINFOA lpServiceClassInfo
);
2614 WSAInstallServiceClassW(
2615 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
2618 #define WSAInstallServiceClass WSAInstallServiceClassW
2620 #define WSAInstallServiceClass WSAInstallServiceClassA
2626 WSARemoveServiceClass(
2627 IN LPGUID lpServiceClassId
);
2632 WSAGetServiceClassInfoA(
2633 IN LPGUID lpProviderId
,
2634 IN LPGUID lpServiceClassId
,
2635 IN OUT LPDWORD lpdwBufSize
,
2636 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo
);
2641 WSAGetServiceClassInfoW(
2642 IN LPGUID lpProviderId
,
2643 IN LPGUID lpServiceClassId
,
2644 IN OUT LPDWORD lpdwBufSize
,
2645 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
);
2648 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
2650 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
2656 WSAEnumNameSpaceProvidersA(
2657 IN OUT LPDWORD lpdwBufferLength
,
2658 OUT LPWSANAMESPACE_INFOA lpnspBuffer
);
2663 WSAEnumNameSpaceProvidersW(
2664 IN OUT LPDWORD lpdwBufferLength
,
2665 OUT LPWSANAMESPACE_INFOW lpnspBuffer
);
2668 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
2670 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
2676 WSAGetServiceClassNameByClassIdA(
2677 IN LPGUID lpServiceClassId
,
2678 OUT LPSTR lpszServiceClassName
,
2679 IN OUT LPDWORD lpdwBufferLength
);
2684 WSAGetServiceClassNameByClassIdW(
2685 IN LPGUID lpServiceClassId
,
2686 OUT LPWSTR lpszServiceClassName
,
2687 IN OUT LPDWORD lpdwBufferLength
);
2690 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
2692 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
2699 IN LPWSAQUERYSETA lpqsRegInfo
,
2700 IN WSAESETSERVICEOP essoperation
,
2701 IN DWORD dwControlFlags
);
2707 IN LPWSAQUERYSETW lpqsRegInfo
,
2708 IN WSAESETSERVICEOP essoperation
,
2709 IN DWORD dwControlFlags
);
2712 #define WSASetService WSASetServiceW
2714 #define WSASetService WSASetServiceA
2720 WSAProviderConfigChange(
2721 IN OUT LPHANDLE lpNotificationHandle OPTIONAL
,
2722 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2723 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2725 #if(_WIN32_WINNT >= 0x0501)
2731 IN DWORD dwControlCode
,
2732 IN LPVOID lpvInBuffer OPTIONAL
,
2733 IN DWORD cbInBuffer
,
2734 OUT LPVOID lpvOutBuffer OPTIONAL
,
2735 IN DWORD cbOutBuffer
,
2736 OUT LPDWORD lpcbBytesReturned
,
2737 IN LPWSACOMPLETION lpCompletion OPTIONAL
);
2738 #endif /* (_WIN32_WINNT >= 0x0501) */
2740 #if(_WIN32_WINNT >= 0x0600)
2749 OUT LPDWORD lpNumberOfBytesSent OPTIONAL
,
2750 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
2751 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
);
2756 WSAEnumNameSpaceProvidersExA(
2757 IN OUT LPDWORD lpdwBufferLength
,
2758 OUT LPWSANAMESPACE_INFOEXA lpnspBuffer
);
2763 WSAEnumNameSpaceProvidersExW(
2764 IN OUT LPDWORD lpdwBufferLength
,
2765 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer
);
2768 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
2770 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA
2777 IN OUT LPWSAPOLLFD fdArray
,
2781 #endif /* (_WIN32_WINNT >= 0x0600) */
2783 #endif /* INCL_WINSOCK_API_PROTOTYPES */
2785 typedef struct sockaddr_in FAR
*LPSOCKADDR_IN
;
2786 typedef struct linger LINGER
;
2787 typedef struct linger
*PLINGER
;
2788 typedef struct linger FAR
*LPLINGER
;
2789 typedef struct fd_set FD_SET
;
2790 typedef struct fd_set
*PFD_SET
;
2791 typedef struct fd_set FAR
*LPFD_SET
;
2792 typedef struct hostent HOSTENT
;
2793 typedef struct hostent
*PHOSTENT
;
2794 typedef struct hostent FAR
*LPHOSTENT
;
2795 typedef struct servent SERVENT
;
2796 typedef struct servent
*PSERVENT
;
2797 typedef struct servent FAR
*LPSERVENT
;
2798 typedef struct protoent PROTOENT
;
2799 typedef struct protoent
*PPROTOENT
;
2800 typedef struct protoent FAR
*LPPROTOENT
;
2801 typedef struct timeval TIMEVAL
;
2802 typedef struct timeval
*PTIMEVAL
;
2803 typedef struct timeval FAR
*LPTIMEVAL
;
2805 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
2806 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
2807 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
2808 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
2809 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
2810 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
2816 #ifdef _NEED_POPPACK
2817 #include <poppack.h>
2821 #if(_WIN32_WINNT >= 0x0501)
2823 #include <wsipv6ok.h>