1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7 #ifndef _WINSOCK2API_ 8 #define _WINSOCK2API_ 9 10 #include <_mingw_unicode.h> 11 12 #ifndef _WINSOCKAPI_ 13 #define _WINSOCKAPI_ 14 #else 15 #warning Please include winsock2.h before windows.h 16 #endif 17 18 #ifndef INCL_WINSOCK_API_TYPEDEFS 19 #define INCL_WINSOCK_API_TYPEDEFS 0 20 #endif 21 22 #ifndef _INC_WINDOWS 23 #include <windows.h> 24 #endif 25 26 #ifndef MAKEWORD 27 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8)) 28 #endif 29 30 #ifndef WINSOCK_VERSION 31 #define WINSOCK_VERSION MAKEWORD(2,2) 32 #endif 33 34 #ifndef WINSOCK_API_LINKAGE 35 #ifdef DECLSPEC_IMPORT 36 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT 37 #else 38 #define WINSOCK_API_LINKAGE 39 #endif 40 #endif /* WINSOCK_API_LINKAGE */ 41 #define WSAAPI WINAPI 42 43 /* undefine macros from winsock.h */ 44 #include <psdk_inc/_ws1_undef.h> 45 46 #ifdef __LP64__ 47 #pragma push_macro("u_long") 48 #undef u_long 49 #define u_long __ms_u_long 50 #endif 51 52 #include <_timeval.h> 53 #include <_bsd_types.h> 54 #include <inaddr.h> 55 #include <psdk_inc/_socket_types.h> 56 #include <psdk_inc/_fd_types.h> 57 #include <psdk_inc/_ip_types.h> 58 #include <psdk_inc/_wsadata.h> 59 #include <ws2def.h> /* FIXME: include order */ 60 61 #ifdef __cplusplus 62 extern "C" { 63 #endif 64 65 #define IOCPARM_MASK 0x7f 66 #define IOC_VOID 0x20000000 67 #define IOC_OUT 0x40000000 68 #define IOC_IN 0x80000000 69 #define IOC_INOUT (IOC_IN|IOC_OUT) 70 71 #define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) 72 #define _IOR(x,y,t) (IOC_OUT|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) 73 #define _IOW(x,y,t) (IOC_IN|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) 74 75 #define FIONREAD _IOR('f',127,u_long) 76 #define FIONBIO _IOW('f',126,u_long) 77 #define FIOASYNC _IOW('f',125,u_long) 78 79 #define SIOCSHIWAT _IOW('s',0,u_long) 80 #define SIOCGHIWAT _IOR('s',1,u_long) 81 #define SIOCSLOWAT _IOW('s',2,u_long) 82 #define SIOCGLOWAT _IOR('s',3,u_long) 83 #define SIOCATMARK _IOR('s',7,u_long) 84 85 #define IPPROTO_IP 0 86 #define IPPROTO_HOPOPTS 0 87 #define IPPROTO_ICMP 1 88 #define IPPROTO_IGMP 2 89 #define IPPROTO_GGP 3 90 #define IPPROTO_IPV4 4 91 #define IPPROTO_ST 5 92 #define IPPROTO_TCP 6 93 #define IPPROTO_CBT 7 94 #define IPPROTO_EGP 8 95 #define IPPROTO_IGP 9 96 #define IPPROTO_PUP 12 97 #define IPPROTO_UDP 17 98 #define IPPROTO_IDP 22 99 #define IPPROTO_RDP 27 100 #define IPPROTO_IPV6 41 101 #define IPPROTO_ROUTING 43 102 #define IPPROTO_FRAGMENT 44 103 #define IPPROTO_ESP 50 104 #define IPPROTO_AH 51 105 #define IPPROTO_ICMPV6 58 106 #define IPPROTO_NONE 59 107 #define IPPROTO_DSTOPTS 60 108 #define IPPROTO_ND 77 109 #define IPPROTO_ICLFXBM 78 110 #define IPPROTO_PIM 103 111 #define IPPROTO_PGM 113 112 #define IPPROTO_L2TP 115 113 #define IPPROTO_SCTP 132 114 115 #define IPPROTO_RAW 255 116 #define IPPROTO_MAX 256 117 118 #define IPPORT_ECHO 7 119 #define IPPORT_DISCARD 9 120 #define IPPORT_SYSTAT 11 121 #define IPPORT_DAYTIME 13 122 #define IPPORT_NETSTAT 15 123 #define IPPORT_FTP 21 124 #define IPPORT_TELNET 23 125 #define IPPORT_SMTP 25 126 #define IPPORT_TIMESERVER 37 127 #define IPPORT_NAMESERVER 42 128 #define IPPORT_WHOIS 43 129 #define IPPORT_MTP 57 130 131 #define IPPORT_TFTP 69 132 #define IPPORT_RJE 77 133 #define IPPORT_FINGER 79 134 #define IPPORT_TTYLINK 87 135 #define IPPORT_SUPDUP 95 136 137 #define IPPORT_EXECSERVER 512 138 #define IPPORT_LOGINSERVER 513 139 #define IPPORT_CMDSERVER 514 140 #define IPPORT_EFSSERVER 520 141 142 #define IPPORT_BIFFUDP 512 143 #define IPPORT_WHOSERVER 513 144 #define IPPORT_ROUTESERVER 520 145 146 #define IPPORT_RESERVED 1024 147 148 #define IMPLINK_IP 155 149 #define IMPLINK_LOWEXPER 156 150 #define IMPLINK_HIGHEXPER 158 151 152 153 #define IN_CLASSA(i) (((__LONG32)(i) & 0x80000000)==0) 154 #define IN_CLASSA_NET 0xff000000 155 #define IN_CLASSA_NSHIFT 24 156 #define IN_CLASSA_HOST 0x00ffffff 157 #define IN_CLASSA_MAX 128 158 159 #define IN_CLASSB(i) (((__LONG32)(i) & 0xc0000000)==0x80000000) 160 #define IN_CLASSB_NET 0xffff0000 161 #define IN_CLASSB_NSHIFT 16 162 #define IN_CLASSB_HOST 0x0000ffff 163 #define IN_CLASSB_MAX 65536 164 165 #define IN_CLASSC(i) (((__LONG32)(i) & 0xe0000000)==0xc0000000) 166 #define IN_CLASSC_NET 0xffffff00 167 #define IN_CLASSC_NSHIFT 8 168 #define IN_CLASSC_HOST 0x000000ff 169 170 #define IN_CLASSD(i) (((__LONG32)(i) & 0xf0000000)==0xe0000000) 171 #define IN_CLASSD_NET 0xf0000000 172 #define IN_CLASSD_NSHIFT 28 173 #define IN_CLASSD_HOST 0x0fffffff 174 #define IN_MULTICAST(i) IN_CLASSD(i) 175 176 #define INADDR_ANY (u_long)0x00000000 177 #define INADDR_LOOPBACK 0x7f000001 178 #define INADDR_BROADCAST (u_long)0xffffffff 179 #define INADDR_NONE 0xffffffff 180 181 #define ADDR_ANY INADDR_ANY 182 183 #define FROM_PROTOCOL_INFO (-1) 184 185 #define SOCK_STREAM 1 186 #define SOCK_DGRAM 2 187 #define SOCK_RAW 3 188 #define SOCK_RDM 4 189 #define SOCK_SEQPACKET 5 190 191 #define SO_DEBUG 0x0001 192 #define SO_ACCEPTCONN 0x0002 193 #define SO_REUSEADDR 0x0004 194 #define SO_KEEPALIVE 0x0008 195 #define SO_DONTROUTE 0x0010 196 #define SO_BROADCAST 0x0020 197 #define SO_USELOOPBACK 0x0040 198 #define SO_LINGER 0x0080 199 #define SO_OOBINLINE 0x0100 200 201 #define SO_DONTLINGER (int)(~SO_LINGER) 202 #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR)) 203 204 #define SO_SNDBUF 0x1001 205 #define SO_RCVBUF 0x1002 206 #define SO_SNDLOWAT 0x1003 207 #define SO_RCVLOWAT 0x1004 208 #define SO_SNDTIMEO 0x1005 209 #define SO_RCVTIMEO 0x1006 210 #define SO_ERROR 0x1007 211 #define SO_TYPE 0x1008 212 213 #define SO_GROUP_ID 0x2001 214 #define SO_GROUP_PRIORITY 0x2002 215 #define SO_MAX_MSG_SIZE 0x2003 216 #define SO_PROTOCOL_INFOA 0x2004 217 #define SO_PROTOCOL_INFOW 0x2005 218 219 #define SO_PROTOCOL_INFO __MINGW_NAME_AW(SO_PROTOCOL_INFO) 220 221 #define PVD_CONFIG 0x3001 222 #define SO_CONDITIONAL_ACCEPT 0x3002 223 224 #define TCP_NODELAY 0x0001 225 226 #define AF_UNSPEC 0 227 228 #define AF_UNIX 1 229 #define AF_INET 2 230 #define AF_IMPLINK 3 231 #define AF_PUP 4 232 #define AF_CHAOS 5 233 #define AF_NS 6 234 #define AF_IPX AF_NS 235 #define AF_ISO 7 236 #define AF_OSI AF_ISO 237 #define AF_ECMA 8 238 #define AF_DATAKIT 9 239 #define AF_CCITT 10 240 #define AF_SNA 11 241 #define AF_DECnet 12 242 #define AF_DLI 13 243 #define AF_LAT 14 244 #define AF_HYLINK 15 245 #define AF_APPLETALK 16 246 #define AF_NETBIOS 17 247 #define AF_VOICEVIEW 18 248 #define AF_FIREFOX 19 249 #define AF_UNKNOWN1 20 250 #define AF_BAN 21 251 #define AF_ATM 22 252 #define AF_INET6 23 253 #define AF_CLUSTER 24 254 #define AF_12844 25 255 #define AF_IRDA 26 256 #define AF_NETDES 28 257 #define AF_TCNPROCESS 29 258 #define AF_TCNMESSAGE 30 259 #define AF_ICLFXBM 31 260 #define AF_BTH 32 261 #define AF_MAX 33 262 263 #define _SS_MAXSIZE 128 264 #define _SS_ALIGNSIZE (8) 265 266 #define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short)) 267 #define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) 268 269 struct sockaddr_storage { 270 short ss_family; 271 char __ss_pad1[_SS_PAD1SIZE]; 272 273 __MINGW_EXTENSION __int64 __ss_align; 274 char __ss_pad2[_SS_PAD2SIZE]; 275 }; 276 277 #define PF_UNSPEC AF_UNSPEC 278 #define PF_UNIX AF_UNIX 279 #define PF_INET AF_INET 280 #define PF_IMPLINK AF_IMPLINK 281 #define PF_PUP AF_PUP 282 #define PF_CHAOS AF_CHAOS 283 #define PF_NS AF_NS 284 #define PF_IPX AF_IPX 285 #define PF_ISO AF_ISO 286 #define PF_OSI AF_OSI 287 #define PF_ECMA AF_ECMA 288 #define PF_DATAKIT AF_DATAKIT 289 #define PF_CCITT AF_CCITT 290 #define PF_SNA AF_SNA 291 #define PF_DECnet AF_DECnet 292 #define PF_DLI AF_DLI 293 #define PF_LAT AF_LAT 294 #define PF_HYLINK AF_HYLINK 295 #define PF_APPLETALK AF_APPLETALK 296 #define PF_VOICEVIEW AF_VOICEVIEW 297 #define PF_FIREFOX AF_FIREFOX 298 #define PF_UNKNOWN1 AF_UNKNOWN1 299 #define PF_BAN AF_BAN 300 #define PF_ATM AF_ATM 301 #define PF_INET6 AF_INET6 302 #define PF_BTH AF_BTH 303 304 #define PF_MAX AF_MAX 305 306 #define SOL_SOCKET 0xffff 307 308 #define SOMAXCONN 0x7fffffff 309 310 #define MSG_OOB 0x1 311 #define MSG_PEEK 0x2 312 #define MSG_DONTROUTE 0x4 313 314 #if(_WIN32_WINNT >= 0x0502) 315 #define MSG_WAITALL 0x8 316 #endif 317 318 #if(_WIN32_WINNT >= 0x0603) 319 #define MSG_PUSH_IMMEDIATE 0x20 320 #endif 321 322 #define MSG_PARTIAL 0x8000 323 324 #define MSG_INTERRUPT 0x10 325 326 #define MSG_MAXIOVLEN 16 327 328 #define MAXGETHOSTSTRUCT 1024 329 330 #define FD_READ_BIT 0 331 #define FD_READ (1 << FD_READ_BIT) 332 333 #define FD_WRITE_BIT 1 334 #define FD_WRITE (1 << FD_WRITE_BIT) 335 336 #define FD_OOB_BIT 2 337 #define FD_OOB (1 << FD_OOB_BIT) 338 339 #define FD_ACCEPT_BIT 3 340 #define FD_ACCEPT (1 << FD_ACCEPT_BIT) 341 342 #define FD_CONNECT_BIT 4 343 #define FD_CONNECT (1 << FD_CONNECT_BIT) 344 345 #define FD_CLOSE_BIT 5 346 #define FD_CLOSE (1 << FD_CLOSE_BIT) 347 348 #define FD_QOS_BIT 6 349 #define FD_QOS (1 << FD_QOS_BIT) 350 351 #define FD_GROUP_QOS_BIT 7 352 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT) 353 354 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8 355 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT) 356 357 #define FD_ADDRESS_LIST_CHANGE_BIT 9 358 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT) 359 360 #define FD_MAX_EVENTS 10 361 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1) 362 363 #include <psdk_inc/_wsa_errnos.h> 364 365 #define WSAEVENT HANDLE 366 #define LPWSAEVENT LPHANDLE 367 #define WSAOVERLAPPED OVERLAPPED 368 369 typedef struct _OVERLAPPED *LPWSAOVERLAPPED; 370 371 #define WSA_IO_PENDING (ERROR_IO_PENDING) 372 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE) 373 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE) 374 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER) 375 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY) 376 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED) 377 378 #define WSA_INVALID_EVENT ((WSAEVENT)NULL) 379 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) 380 #define WSA_WAIT_FAILED (WAIT_FAILED) 381 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0) 382 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION) 383 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT) 384 #define WSA_INFINITE (INFINITE) 385 386 typedef struct _WSABUF { 387 u_long len; 388 char *buf; 389 } WSABUF,*LPWSABUF; 390 391 #include <qos.h> 392 393 typedef struct _QualityOfService { 394 FLOWSPEC SendingFlowspec; 395 FLOWSPEC ReceivingFlowspec; 396 WSABUF ProviderSpecific; 397 } QOS,*LPQOS; 398 399 #define CF_ACCEPT 0x0000 400 #define CF_REJECT 0x0001 401 #define CF_DEFER 0x0002 402 403 #define SD_RECEIVE 0x00 404 #define SD_SEND 0x01 405 #define SD_BOTH 0x02 406 407 typedef unsigned int GROUP; 408 409 #define SG_UNCONSTRAINED_GROUP 0x01 410 #define SG_CONSTRAINED_GROUP 0x02 411 412 typedef struct _WSANETWORKEVENTS { 413 __LONG32 lNetworkEvents; 414 int iErrorCode[FD_MAX_EVENTS]; 415 } WSANETWORKEVENTS,*LPWSANETWORKEVENTS; 416 417 #ifndef GUID_DEFINED 418 #include <guiddef.h> 419 #endif 420 421 #define MAX_PROTOCOL_CHAIN 7 422 423 #define BASE_PROTOCOL 1 424 #define LAYERED_PROTOCOL 0 425 426 typedef struct _WSAPROTOCOLCHAIN { 427 int ChainLen; 428 429 DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; 430 } WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN; 431 432 #define WSAPROTOCOL_LEN 255 433 434 typedef struct _WSAPROTOCOL_INFOA { 435 DWORD dwServiceFlags1; 436 DWORD dwServiceFlags2; 437 DWORD dwServiceFlags3; 438 DWORD dwServiceFlags4; 439 DWORD dwProviderFlags; 440 GUID ProviderId; 441 DWORD dwCatalogEntryId; 442 WSAPROTOCOLCHAIN ProtocolChain; 443 int iVersion; 444 int iAddressFamily; 445 int iMaxSockAddr; 446 int iMinSockAddr; 447 int iSocketType; 448 int iProtocol; 449 int iProtocolMaxOffset; 450 int iNetworkByteOrder; 451 int iSecurityScheme; 452 DWORD dwMessageSize; 453 DWORD dwProviderReserved; 454 CHAR szProtocol[WSAPROTOCOL_LEN+1]; 455 } WSAPROTOCOL_INFOA,*LPWSAPROTOCOL_INFOA; 456 457 typedef struct _WSAPROTOCOL_INFOW { 458 DWORD dwServiceFlags1; 459 DWORD dwServiceFlags2; 460 DWORD dwServiceFlags3; 461 DWORD dwServiceFlags4; 462 DWORD dwProviderFlags; 463 GUID ProviderId; 464 DWORD dwCatalogEntryId; 465 WSAPROTOCOLCHAIN ProtocolChain; 466 int iVersion; 467 int iAddressFamily; 468 int iMaxSockAddr; 469 int iMinSockAddr; 470 int iSocketType; 471 int iProtocol; 472 int iProtocolMaxOffset; 473 int iNetworkByteOrder; 474 int iSecurityScheme; 475 DWORD dwMessageSize; 476 DWORD dwProviderReserved; 477 WCHAR szProtocol[WSAPROTOCOL_LEN+1]; 478 } WSAPROTOCOL_INFOW,*LPWSAPROTOCOL_INFOW; 479 480 __MINGW_TYPEDEF_AW(WSAPROTOCOL_INFO) 481 __MINGW_TYPEDEF_AW(LPWSAPROTOCOL_INFO) 482 483 #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001 484 #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002 485 #define PFL_HIDDEN 0x00000004 486 #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008 487 #define PFL_NETWORKDIRECT_PROVIDER 0x00000010 488 489 #define XP1_CONNECTIONLESS 0x00000001 490 #define XP1_GUARANTEED_DELIVERY 0x00000002 491 #define XP1_GUARANTEED_ORDER 0x00000004 492 #define XP1_MESSAGE_ORIENTED 0x00000008 493 #define XP1_PSEUDO_STREAM 0x00000010 494 #define XP1_GRACEFUL_CLOSE 0x00000020 495 #define XP1_EXPEDITED_DATA 0x00000040 496 #define XP1_CONNECT_DATA 0x00000080 497 #define XP1_DISCONNECT_DATA 0x00000100 498 #define XP1_SUPPORT_BROADCAST 0x00000200 499 #define XP1_SUPPORT_MULTIPOINT 0x00000400 500 #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800 501 #define XP1_MULTIPOINT_DATA_PLANE 0x00001000 502 #define XP1_QOS_SUPPORTED 0x00002000 503 #define XP1_INTERRUPT 0x00004000 504 #define XP1_UNI_SEND 0x00008000 505 #define XP1_UNI_RECV 0x00010000 506 #define XP1_IFS_HANDLES 0x00020000 507 #define XP1_PARTIAL_MESSAGE 0x00040000 508 #define XP1_SAN_SUPPORT_SDP 0x00080000 509 510 #define BIGENDIAN 0x0000 511 #define LITTLEENDIAN 0x0001 512 513 #define SECURITY_PROTOCOL_NONE 0x0000 514 515 #define JL_SENDER_ONLY 0x01 516 #define JL_RECEIVER_ONLY 0x02 517 #define JL_BOTH 0x04 518 519 #define WSA_FLAG_OVERLAPPED 0x01 520 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02 521 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04 522 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08 523 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 524 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40 525 #define WSA_FLAG_NO_HANDLE_INHERIT 0x80 526 #define WSA_FLAG_REGISTERED_IO 0x100 527 528 #define IOC_UNIX 0x00000000 529 #define IOC_WS2 0x08000000 530 #define IOC_PROTOCOL 0x10000000 531 #define IOC_VENDOR 0x18000000 532 533 #define _WSAIO(x,y) (IOC_VOID|(x)|(y)) 534 #define _WSAIOR(x,y) (IOC_OUT|(x)|(y)) 535 #define _WSAIOW(x,y) (IOC_IN|(x)|(y)) 536 #define _WSAIORW(x,y) (IOC_INOUT|(x)|(y)) 537 538 #define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1) 539 #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2) 540 #define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3) 541 #define SIO_FLUSH _WSAIO(IOC_WS2,4) 542 #define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5) 543 #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6) 544 #define SIO_GET_QOS _WSAIORW(IOC_WS2,7) 545 #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8) 546 #define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9) 547 #define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10) 548 #define SIO_SET_QOS _WSAIOW(IOC_WS2,11) 549 #define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12) 550 #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13) 551 #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20) 552 #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21) 553 #define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22) 554 #define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23) 555 #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24) 556 #define SIO_ADDRESS_LIST_SORT _WSAIORW(IOC_WS2,25) 557 #if (_WIN32_WINNT >= 0x0600) 558 #define SIO_RESERVED_1 _WSAIOW(IOC_WS2,26) 559 #define SIO_RESERVED_2 _WSAIOW(IOC_WS2,33) 560 #endif /* _WIN32_WINNT >= 0x0600 */ 561 562 typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF lpCallerId,LPWSABUF lpCallerData,LPQOS lpSQOS,LPQOS lpGQOS,LPWSABUF lpCalleeId,LPWSABUF lpCalleeData,GROUP *g,DWORD_PTR dwCallbackData); 563 typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,DWORD cbTransferred,LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags); 564 565 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25) 566 567 typedef enum _WSACOMPLETIONTYPE { 568 NSP_NOTIFY_IMMEDIATELY = 0, 569 NSP_NOTIFY_HWND, 570 NSP_NOTIFY_EVENT, 571 NSP_NOTIFY_PORT, 572 NSP_NOTIFY_APC 573 } WSACOMPLETIONTYPE,*PWSACOMPLETIONTYPE,*LPWSACOMPLETIONTYPE; 574 575 typedef struct _WSACOMPLETION { 576 WSACOMPLETIONTYPE Type; 577 union { 578 struct { 579 HWND hWnd; 580 UINT uMsg; 581 WPARAM context; 582 } WindowMessage; 583 struct { 584 LPWSAOVERLAPPED lpOverlapped; 585 } Event; 586 struct { 587 LPWSAOVERLAPPED lpOverlapped; 588 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; 589 } Apc; 590 struct { 591 LPWSAOVERLAPPED lpOverlapped; 592 HANDLE hPort; 593 ULONG_PTR Key; 594 } Port; 595 } Parameters; 596 } WSACOMPLETION,*PWSACOMPLETION,*LPWSACOMPLETION; 597 598 #define TH_NETDEV 0x00000001 599 #define TH_TAPI 0x00000002 600 601 typedef struct sockaddr_storage SOCKADDR_STORAGE; 602 typedef struct sockaddr_storage *PSOCKADDR_STORAGE; 603 typedef struct sockaddr_storage *LPSOCKADDR_STORAGE; 604 typedef u_short ADDRESS_FAMILY; 605 606 #ifndef _tagBLOB_DEFINED 607 #define _tagBLOB_DEFINED 608 #define _BLOB_DEFINED 609 #define _LPBLOB_DEFINED 610 typedef struct _BLOB { 611 ULONG cbSize; 612 BYTE *pBlobData; 613 } BLOB,*LPBLOB; 614 #endif /* _tagBLOB_DEFINED */ 615 616 #define SERVICE_MULTIPLE (0x00000001) 617 618 #define NS_ALL (0) 619 620 #define NS_SAP (1) 621 #define NS_NDS (2) 622 #define NS_PEER_BROWSE (3) 623 #define NS_SLP (5) 624 #define NS_DHCP (6) 625 626 #define NS_TCPIP_LOCAL (10) 627 #define NS_TCPIP_HOSTS (11) 628 #define NS_DNS (12) 629 #define NS_NETBT (13) 630 #define NS_WINS (14) 631 #if(_WIN32_WINNT >= 0x0501) 632 #define NS_NLA (15) 633 #endif 634 #if (_WIN32_WINNT >= 0x0600) 635 #define NS_BTH (16) 636 #endif 637 638 #define NS_NBP (20) 639 640 #define NS_MS (30) 641 #define NS_STDA (31) 642 #define NS_NTDS (32) 643 644 #if (_WIN32_WINNT >= 0x0600) 645 #define NS_EMAIL (37) 646 #define NS_PNRPNAME (38) 647 #define NS_PNRPCLOUD (39) 648 #endif 649 650 #define NS_X500 (40) 651 #define NS_NIS (41) 652 #define NS_NISPLUS (42) 653 654 #define NS_WRQ (50) 655 656 #define NS_NETDES (60) 657 658 #define RES_UNUSED_1 (0x00000001) 659 #define RES_FLUSH_CACHE (0x00000002) 660 #ifndef RES_SERVICE 661 #define RES_SERVICE (0x00000004) 662 #endif 663 664 #define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket" 665 #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket" 666 #define SERVICE_TYPE_VALUE_SAPIDA "SapId" 667 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId" 668 669 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" 670 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" 671 672 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" 673 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" 674 675 #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId" 676 #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId" 677 678 #define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID) 679 #define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT) 680 #define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT) 681 #define SERVICE_TYPE_VALUE_OBJECTID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_OBJECTID) 682 683 #ifndef __CSADDR_DEFINED__ 684 #define __CSADDR_DEFINED__ 685 686 typedef struct _SOCKET_ADDRESS { 687 LPSOCKADDR lpSockaddr; 688 INT iSockaddrLength; 689 } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; 690 691 typedef struct _CSADDR_INFO { 692 SOCKET_ADDRESS LocalAddr; 693 SOCKET_ADDRESS RemoteAddr; 694 INT iSocketType; 695 INT iProtocol; 696 } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; 697 #endif /* __CSADDR_DEFINED__ */ 698 699 typedef struct _SOCKET_ADDRESS_LIST { 700 INT iAddressCount; 701 SOCKET_ADDRESS Address[1]; 702 } SOCKET_ADDRESS_LIST,*PSOCKET_ADDRESS_LIST,*LPSOCKET_ADDRESS_LIST; 703 704 typedef struct _AFPROTOCOLS { 705 INT iAddressFamily; 706 INT iProtocol; 707 } AFPROTOCOLS,*PAFPROTOCOLS,*LPAFPROTOCOLS; 708 709 typedef enum _WSAEcomparator { 710 COMP_EQUAL = 0, 711 COMP_NOTLESS 712 } WSAECOMPARATOR,*PWSAECOMPARATOR,*LPWSAECOMPARATOR; 713 714 typedef struct _WSAVersion { 715 DWORD dwVersion; 716 WSAECOMPARATOR ecHow; 717 } WSAVERSION,*PWSAVERSION,*LPWSAVERSION; 718 719 typedef struct _WSAQuerySetA { 720 DWORD dwSize; 721 LPSTR lpszServiceInstanceName; 722 LPGUID lpServiceClassId; 723 LPWSAVERSION lpVersion; 724 LPSTR lpszComment; 725 DWORD dwNameSpace; 726 LPGUID lpNSProviderId; 727 LPSTR lpszContext; 728 DWORD dwNumberOfProtocols; 729 LPAFPROTOCOLS lpafpProtocols; 730 LPSTR lpszQueryString; 731 DWORD dwNumberOfCsAddrs; 732 LPCSADDR_INFO lpcsaBuffer; 733 DWORD dwOutputFlags; 734 LPBLOB lpBlob; 735 } WSAQUERYSETA,*PWSAQUERYSETA,*LPWSAQUERYSETA; 736 737 typedef struct _WSAQuerySetW { 738 DWORD dwSize; 739 LPWSTR lpszServiceInstanceName; 740 LPGUID lpServiceClassId; 741 LPWSAVERSION lpVersion; 742 LPWSTR lpszComment; 743 DWORD dwNameSpace; 744 LPGUID lpNSProviderId; 745 LPWSTR lpszContext; 746 DWORD dwNumberOfProtocols; 747 LPAFPROTOCOLS lpafpProtocols; 748 LPWSTR lpszQueryString; 749 DWORD dwNumberOfCsAddrs; 750 LPCSADDR_INFO lpcsaBuffer; 751 DWORD dwOutputFlags; 752 LPBLOB lpBlob; 753 } WSAQUERYSETW,*PWSAQUERYSETW,*LPWSAQUERYSETW; 754 755 __MINGW_TYPEDEF_AW(WSAQUERYSET) 756 __MINGW_TYPEDEF_AW(PWSAQUERYSET) 757 __MINGW_TYPEDEF_AW(LPWSAQUERYSET) 758 759 #define LUP_DEEP 0x0001 760 #define LUP_CONTAINERS 0x0002 761 #define LUP_NOCONTAINERS 0x0004 762 #define LUP_NEAREST 0x0008 763 #define LUP_RETURN_NAME 0x0010 764 #define LUP_RETURN_TYPE 0x0020 765 #define LUP_RETURN_VERSION 0x0040 766 #define LUP_RETURN_COMMENT 0x0080 767 #define LUP_RETURN_ADDR 0x0100 768 #define LUP_RETURN_BLOB 0x0200 769 #define LUP_RETURN_ALIASES 0x0400 770 #define LUP_RETURN_QUERY_STRING 0x0800 771 #define LUP_RETURN_ALL 0x0FF0 772 #define LUP_RES_SERVICE 0x8000 773 774 #define LUP_FLUSHCACHE 0x1000 775 #define LUP_FLUSHPREVIOUS 0x2000 776 777 #define LUP_NON_AUTHORITATIVE 0x4000 778 #define LUP_SECURE 0x8000 779 #define LUP_RETURN_PREFERRED_NAMES 0x10000 780 #define LUP_DNS_ONLY 0x20000 781 782 #define LUP_ADDRCONFIG 0x100000 783 #define LUP_DUAL_ADDR 0x200000 784 #define LUP_FILESERVER 0x400000 785 #define LUP_DISABLE_IDN_ENCODING 0x00800000 786 #define LUP_API_ANSI 0x01000000 787 788 #define LUP_RESOLUTION_HANDLE 0x80000000 789 790 #define LUP_RES_RESERVICE 0x8000 /* FIXME: not in PSDK anymore?? */ 791 792 #define RESULT_IS_ALIAS 0x0001 793 #if(_WIN32_WINNT >= 0x0501) 794 #define RESULT_IS_ADDED 0x0010 795 #define RESULT_IS_CHANGED 0x0020 796 #define RESULT_IS_DELETED 0x0040 797 #endif 798 799 typedef enum _WSAESETSERVICEOP { 800 RNRSERVICE_REGISTER = 0, 801 RNRSERVICE_DEREGISTER, 802 RNRSERVICE_DELETE 803 } WSAESETSERVICEOP,*PWSAESETSERVICEOP,*LPWSAESETSERVICEOP; 804 805 typedef struct _WSANSClassInfoA { 806 LPSTR lpszName; 807 DWORD dwNameSpace; 808 DWORD dwValueType; 809 DWORD dwValueSize; 810 LPVOID lpValue; 811 } WSANSCLASSINFOA,*PWSANSCLASSINFOA,*LPWSANSCLASSINFOA; 812 813 typedef struct _WSANSClassInfoW { 814 LPWSTR lpszName; 815 DWORD dwNameSpace; 816 DWORD dwValueType; 817 DWORD dwValueSize; 818 LPVOID lpValue; 819 } WSANSCLASSINFOW,*PWSANSCLASSINFOW,*LPWSANSCLASSINFOW; 820 821 __MINGW_TYPEDEF_AW(WSANSCLASSINFO) 822 __MINGW_TYPEDEF_AW(PWSANSCLASSINFO) 823 __MINGW_TYPEDEF_AW(LPWSANSCLASSINFO) 824 825 typedef struct _WSAServiceClassInfoA { 826 LPGUID lpServiceClassId; 827 LPSTR lpszServiceClassName; 828 DWORD dwCount; 829 LPWSANSCLASSINFOA lpClassInfos; 830 } WSASERVICECLASSINFOA,*PWSASERVICECLASSINFOA,*LPWSASERVICECLASSINFOA; 831 832 typedef struct _WSAServiceClassInfoW { 833 LPGUID lpServiceClassId; 834 LPWSTR lpszServiceClassName; 835 DWORD dwCount; 836 LPWSANSCLASSINFOW lpClassInfos; 837 } WSASERVICECLASSINFOW,*PWSASERVICECLASSINFOW,*LPWSASERVICECLASSINFOW; 838 839 __MINGW_TYPEDEF_AW(WSASERVICECLASSINFO) 840 __MINGW_TYPEDEF_AW(PWSASERVICECLASSINFO) 841 __MINGW_TYPEDEF_AW(LPWSASERVICECLASSINFO) 842 843 typedef struct _WSANAMESPACE_INFOA { 844 GUID NSProviderId; 845 DWORD dwNameSpace; 846 WINBOOL fActive; 847 DWORD dwVersion; 848 LPSTR lpszIdentifier; 849 } WSANAMESPACE_INFOA,*PWSANAMESPACE_INFOA,*LPWSANAMESPACE_INFOA; 850 851 typedef struct _WSANAMESPACE_INFOW { 852 GUID NSProviderId; 853 DWORD dwNameSpace; 854 WINBOOL fActive; 855 DWORD dwVersion; 856 LPWSTR lpszIdentifier; 857 } WSANAMESPACE_INFOW,*PWSANAMESPACE_INFOW,*LPWSANAMESPACE_INFOW; 858 859 __MINGW_TYPEDEF_AW(WSANAMESPACE_INFO) 860 __MINGW_TYPEDEF_AW(PWSANAMESPACE_INFO) 861 __MINGW_TYPEDEF_AW(LPWSANAMESPACE_INFO) 862 863 /* FIXME: WSAMSG originally lived in mswsock.h, 864 * newer SDKs moved it into a new ws2def.h. for 865 * now we keep it here. */ 866 typedef struct _WSAMSG { 867 LPSOCKADDR name; 868 INT namelen; 869 LPWSABUF lpBuffers; 870 DWORD dwBufferCount; 871 WSABUF Control; 872 DWORD dwFlags; 873 } WSAMSG,*PWSAMSG,*LPWSAMSG; 874 875 #if INCL_WINSOCK_API_TYPEDEFS 876 #define LPFN_WSADUPLICATESOCKET __MINGW_NAME_AW(LPFN_WSADUPLICATESOCKET) 877 #define LPFN_WSAENUMPROTOCOLS __MINGW_NAME_AW(LPFN_WSAENUMPROTOCOLS) 878 #define LPFN_WSASOCKET __MINGW_NAME_AW(LPFN_WSASOCKET) 879 #define LPFN_WSAADDRESSTOSTRING __MINGW_NAME_AW(LPFN_WSAADDRESSTOSTRING) 880 #define LPFN_WSASTRINGTOADDRESS __MINGW_NAME_AW(LPFN_WSASTRINGTOADDRESS) 881 #define LPFN_WSALOOKUPSERVICEBEGIN __MINGW_NAME_AW(LPFN_WSALOOKUPSERVICEBEGIN) 882 #define LPFN_WSALOOKUPSERVICENEXT __MINGW_NAME_AW(LPFN_WSALOOKUPSERVICENEXT) 883 #define LPFN_WSAINSTALLSERVICECLASS __MINGW_NAME_AW(LPFN_WSAINSTALLSERVICECLASS) 884 #define LPFN_WSAGETSERVICECLASSINFO __MINGW_NAME_AW(LPFN_WSAGETSERVICECLASSINFO) 885 #define LPFN_WSAENUMNAMESPACEPROVIDERS __MINGW_NAME_AW(LPFN_WSAENUMNAMESPACEPROVIDERS) 886 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID __MINGW_NAME_AW(LPFN_WSAGETSERVICECLASSNAMEBYCLASSID) 887 #define LPFN_WSASETSERVICE __MINGW_NAME_AW(LPFN_WSASETSERVICE) 888 889 typedef SOCKET (WSAAPI *LPFN_ACCEPT)(SOCKET s,struct sockaddr *addr,int *addrlen); 890 typedef int (WSAAPI *LPFN_BIND)(SOCKET s,const struct sockaddr *name,int namelen); 891 typedef int (WSAAPI *LPFN_CLOSESOCKET)(SOCKET s); 892 typedef int (WSAAPI *LPFN_CONNECT)(SOCKET s,const struct sockaddr *name,int namelen); 893 typedef int (WSAAPI *LPFN_IOCTLSOCKET)(SOCKET s,__LONG32 cmd,u_long *argp); 894 typedef int (WSAAPI *LPFN_GETPEERNAME)(SOCKET s,struct sockaddr *name,int *namelen); 895 typedef int (WSAAPI *LPFN_GETSOCKNAME)(SOCKET s,struct sockaddr *name,int *namelen); 896 typedef int (WSAAPI *LPFN_GETSOCKOPT)(SOCKET s,int level,int optname,char *optval,int *optlen); 897 typedef u_long (WSAAPI *LPFN_HTONL)(u_long hostlong); 898 typedef u_short (WSAAPI *LPFN_HTONS)(u_short hostshort); 899 typedef unsigned __LONG32 (WSAAPI *LPFN_INET_ADDR)(const char *cp); 900 typedef char *(WSAAPI *LPFN_INET_NTOA)(struct in_addr in); 901 typedef int (WSAAPI *LPFN_LISTEN)(SOCKET s,int backlog); 902 typedef u_long (WSAAPI *LPFN_NTOHL)(u_long netlong); 903 typedef u_short (WSAAPI *LPFN_NTOHS)(u_short netshort); 904 typedef int (WSAAPI *LPFN_RECV)(SOCKET s,char *buf,int len,int flags); 905 typedef int (WSAAPI *LPFN_RECVFROM)(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen); 906 typedef int (WSAAPI *LPFN_SELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout); 907 typedef int (WSAAPI *LPFN_SEND)(SOCKET s,const char *buf,int len,int flags); 908 typedef int (WSAAPI *LPFN_SENDTO)(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen); 909 typedef int (WSAAPI *LPFN_SETSOCKOPT)(SOCKET s,int level,int optname,const char *optval,int optlen); 910 typedef int (WSAAPI *LPFN_SHUTDOWN)(SOCKET s,int how); 911 typedef SOCKET (WSAAPI *LPFN_SOCKET)(int af,int type,int protocol); 912 typedef struct hostent *(WSAAPI *LPFN_GETHOSTBYADDR)(const char *addr,int len,int type); 913 typedef struct hostent *(WSAAPI *LPFN_GETHOSTBYNAME)(const char *name); 914 typedef int (WSAAPI *LPFN_GETHOSTNAME)(char *name,int namelen); 915 typedef struct servent *(WSAAPI *LPFN_GETSERVBYPORT)(int port,const char *proto); 916 typedef struct servent *(WSAAPI *LPFN_GETSERVBYNAME)(const char *name,const char *proto); 917 typedef struct protoent *(WSAAPI *LPFN_GETPROTOBYNUMBER)(int number); 918 typedef struct protoent *(WSAAPI *LPFN_GETPROTOBYNAME)(const char *name); 919 typedef int (WSAAPI *LPFN_WSASTARTUP)(WORD wVersionRequested,LPWSADATA lpWSAData); 920 typedef int (WSAAPI *LPFN_WSACLEANUP)(void); 921 typedef void (WSAAPI *LPFN_WSASETLASTERROR)(int iError); 922 typedef int (WSAAPI *LPFN_WSAGETLASTERROR)(void); 923 typedef WINBOOL (WSAAPI *LPFN_WSAISBLOCKING)(void); 924 typedef int (WSAAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void); 925 typedef FARPROC (WSAAPI *LPFN_WSASETBLOCKINGHOOK)(FARPROC lpBlockFunc); 926 typedef int (WSAAPI *LPFN_WSACANCELBLOCKINGCALL)(void); 927 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETSERVBYNAME)(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen); 928 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETSERVBYPORT)(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen); 929 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); 930 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND hWnd,u_int wMsg,int number,char *buf,int buflen); 931 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETHOSTBYNAME)(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); 932 typedef HANDLE (WSAAPI *LPFN_WSAASYNCGETHOSTBYADDR)(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen); 933 typedef int (WSAAPI *LPFN_WSACANCELASYNCREQUEST)(HANDLE hAsyncTaskHandle); 934 typedef int (WSAAPI *LPFN_WSAASYNCSELECT)(SOCKET s,HWND hWnd,u_int wMsg,__LONG32 lEvent); 935 typedef SOCKET (WSAAPI *LPFN_WSAACCEPT)(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData); 936 typedef WINBOOL (WSAAPI *LPFN_WSACLOSEEVENT)(WSAEVENT hEvent); 937 typedef int (WSAAPI *LPFN_WSACONNECT)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS); 938 typedef WSAEVENT (WSAAPI *LPFN_WSACREATEEVENT)(void); 939 typedef int (WSAAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo); 940 typedef int (WSAAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo); 941 typedef int (WSAAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents); 942 typedef int (WSAAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength); 943 typedef int (WSAAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength); 944 typedef int (WSAAPI *LPFN_WSAEVENTSELECT)(SOCKET s,WSAEVENT hEventObject,__LONG32 lNetworkEvents); 945 typedef WINBOOL (WSAAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags); 946 typedef WINBOOL (WSAAPI *LPFN_WSAGETQOSBYNAME)(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS); 947 typedef int (WSAAPI *LPFN_WSAHTONL)(SOCKET s,u_long hostlong,u_long *lpnetlong); 948 typedef int (WSAAPI *LPFN_WSAHTONS)(SOCKET s,u_short hostshort,u_short *lpnetshort); 949 typedef int (WSAAPI *LPFN_WSAIOCTL)(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 950 typedef SOCKET (WSAAPI *LPFN_WSAJOINLEAF)(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags); 951 typedef int (WSAAPI *LPFN_WSANTOHL)(SOCKET s,u_long netlong,u_long *lphostlong); 952 typedef int (WSAAPI *LPFN_WSANTOHS)(SOCKET s,u_short netshort,u_short *lphostshort); 953 typedef int (WSAAPI *LPFN_WSARECV)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 954 typedef int (WSAAPI *LPFN_WSARECVDISCONNECT)(SOCKET s,LPWSABUF lpInboundDisconnectData); 955 typedef int (WSAAPI *LPFN_WSARECVFROM)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 956 typedef WINBOOL (WSAAPI *LPFN_WSARESETEVENT)(WSAEVENT hEvent); 957 typedef int (WSAAPI *LPFN_WSASEND)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 958 typedef int (WSAAPI *LPFN_WSASENDDISCONNECT)(SOCKET s,LPWSABUF lpOutboundDisconnectData); 959 typedef int (WSAAPI *LPFN_WSASENDTO)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 960 typedef WINBOOL (WSAAPI *LPFN_WSASETEVENT)(WSAEVENT hEvent); 961 typedef SOCKET (WSAAPI *LPFN_WSASOCKETA)(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags); 962 typedef SOCKET (WSAAPI *LPFN_WSASOCKETW)(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags); 963 typedef DWORD (WSAAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD cEvents,const WSAEVENT *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable); 964 typedef INT (WSAAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength); 965 typedef INT (WSAAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength); 966 typedef INT (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); 967 typedef INT (WSAAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); 968 typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); 969 typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); 970 typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults); 971 typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults); 972 typedef INT (WSAAPI *LPFN_WSANSPIOCTL)(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion); 973 typedef INT (WSAAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE hLookup); 974 typedef INT (WSAAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA lpServiceClassInfo); 975 typedef INT (WSAAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW lpServiceClassInfo); 976 typedef INT (WSAAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID lpServiceClassId); 977 typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo); 978 typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo); 979 typedef INT (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer); 980 typedef INT (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer); 981 typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength); 982 typedef INT (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength); 983 typedef INT (WSAAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); 984 typedef INT (WSAAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); 985 typedef INT (WSAAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 986 #endif 987 988 #define WSADuplicateSocket __MINGW_NAME_AW(WSADuplicateSocket) 989 #define WSAEnumProtocols __MINGW_NAME_AW(WSAEnumProtocols) 990 #define WSAAddressToString __MINGW_NAME_AW(WSAAddressToString) 991 #define WSASocket __MINGW_NAME_AW(WSASocket) 992 #define WSAStringToAddress __MINGW_NAME_AW(WSAStringToAddress) 993 #define WSALookupServiceBegin __MINGW_NAME_AW(WSALookupServiceBegin) 994 #define WSALookupServiceNext __MINGW_NAME_AW(WSALookupServiceNext) 995 #define WSAInstallServiceClass __MINGW_NAME_AW(WSAInstallServiceClass) 996 #define WSAGetServiceClassInfo __MINGW_NAME_AW(WSAGetServiceClassInfo) 997 #define WSAEnumNameSpaceProviders __MINGW_NAME_AW(WSAEnumNameSpaceProviders) 998 #define WSAGetServiceClassNameByClassId __MINGW_NAME_AW(WSAGetServiceClassNameByClassId) 999 #define WSASetService __MINGW_NAME_AW(WSASetService) 1000 1001 #ifndef __WINSOCK_WS1_SHARED 1002 /* these 46 functions have the same prototypes as in winsock2 */ 1003 WINSOCK_API_LINKAGE SOCKET WSAAPI accept(SOCKET s,struct sockaddr *addr,int *addrlen); 1004 WINSOCK_API_LINKAGE int WSAAPI bind(SOCKET s,const struct sockaddr *name,int namelen); 1005 WINSOCK_API_LINKAGE int WSAAPI closesocket(SOCKET s); 1006 WINSOCK_API_LINKAGE int WSAAPI connect(SOCKET s,const struct sockaddr *name,int namelen); 1007 WINSOCK_API_LINKAGE int WSAAPI ioctlsocket(SOCKET s,__LONG32 cmd,u_long *argp); 1008 WINSOCK_API_LINKAGE int WSAAPI getpeername(SOCKET s,struct sockaddr *name,int *namelen); 1009 WINSOCK_API_LINKAGE int WSAAPI getsockname(SOCKET s,struct sockaddr *name,int *namelen); 1010 WINSOCK_API_LINKAGE int WSAAPI getsockopt(SOCKET s,int level,int optname,char *optval,int *optlen); 1011 #ifndef __INSIDE_CYGWIN__ 1012 WINSOCK_API_LINKAGE u_long WSAAPI htonl(u_long hostlong); 1013 WINSOCK_API_LINKAGE u_short WSAAPI htons(u_short hostshort); 1014 #endif /* !__INSIDE_CYGWIN__ */ 1015 WINSOCK_API_LINKAGE unsigned __LONG32 WSAAPI inet_addr(const char *cp); 1016 WINSOCK_API_LINKAGE char *WSAAPI inet_ntoa(struct in_addr in); 1017 WINSOCK_API_LINKAGE int WSAAPI listen(SOCKET s,int backlog); 1018 #ifndef __INSIDE_CYGWIN__ 1019 WINSOCK_API_LINKAGE u_long WSAAPI ntohl(u_long netlong); 1020 WINSOCK_API_LINKAGE u_short WSAAPI ntohs(u_short netshort); 1021 #endif /* !__INSIDE_CYGWIN__ */ 1022 WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags); 1023 WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen); 1024 #ifndef __INSIDE_CYGWIN__ 1025 WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout); 1026 #endif /* !__INSIDE_CYGWIN__ */ 1027 WINSOCK_API_LINKAGE int WSAAPI send(SOCKET s,const char *buf,int len,int flags); 1028 WINSOCK_API_LINKAGE int WSAAPI sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen); 1029 WINSOCK_API_LINKAGE int WSAAPI setsockopt(SOCKET s,int level,int optname,const char *optval,int optlen); 1030 WINSOCK_API_LINKAGE int WSAAPI shutdown(SOCKET s,int how); 1031 WINSOCK_API_LINKAGE SOCKET WSAAPI socket(int af,int type,int protocol); 1032 WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyaddr(const char *addr,int len,int type); 1033 WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyname(const char *name); 1034 WINSOCK_API_LINKAGE int WSAAPI gethostname(char *name,int namelen); 1035 WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyport(int port,const char *proto); 1036 WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyname(const char *name,const char *proto); 1037 WINSOCK_API_LINKAGE struct protoent *WSAAPI getprotobynumber(int number); 1038 WINSOCK_API_LINKAGE struct protoent *WSAAPI getprotobyname(const char *name); 1039 WINSOCK_API_LINKAGE int WSAAPI WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); 1040 WINSOCK_API_LINKAGE int WSAAPI WSACleanup(void); 1041 WINSOCK_API_LINKAGE void WSAAPI WSASetLastError(int iError); 1042 WINSOCK_API_LINKAGE int WSAAPI WSAGetLastError(void); 1043 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAIsBlocking(void); 1044 WINSOCK_API_LINKAGE int WSAAPI WSAUnhookBlockingHook(void); 1045 WINSOCK_API_LINKAGE FARPROC WSAAPI WSASetBlockingHook(FARPROC lpBlockFunc); 1046 WINSOCK_API_LINKAGE int WSAAPI WSACancelBlockingCall(void); 1047 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByName(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen); 1048 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByPort(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen); 1049 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); 1050 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByNumber(HWND hWnd,u_int wMsg,int number,char *buf,int buflen); 1051 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen); 1052 WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByAddr(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen); 1053 WINSOCK_API_LINKAGE int WSAAPI WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); 1054 WINSOCK_API_LINKAGE int WSAAPI WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,__LONG32 lEvent); 1055 #endif /* __WINSOCK_WS1_SHARED */ 1056 WINSOCK_API_LINKAGE SOCKET WSAAPI WSAAccept(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData); 1057 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSACloseEvent(WSAEVENT hEvent); 1058 WINSOCK_API_LINKAGE int WSAAPI WSAConnect(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS); 1059 WINSOCK_API_LINKAGE WSAEVENT WSAAPI WSACreateEvent(void); 1060 WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketA(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo); 1061 WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketW(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo); 1062 WINSOCK_API_LINKAGE int WSAAPI WSAEnumNetworkEvents(SOCKET s,WSAEVENT hEventObject,LPWSANETWORKEVENTS lpNetworkEvents); 1063 WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsA(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength); 1064 WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsW(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength); 1065 WINSOCK_API_LINKAGE int WSAAPI WSAEventSelect(SOCKET s,WSAEVENT hEventObject,__LONG32 lNetworkEvents); 1066 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAGetOverlappedResult(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags); 1067 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAGetQOSByName(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS); 1068 WINSOCK_API_LINKAGE int WSAAPI WSAHtonl(SOCKET s,u_long hostlong,u_long *lpnetlong); 1069 WINSOCK_API_LINKAGE int WSAAPI WSAHtons(SOCKET s,u_short hostshort,u_short *lpnetshort); 1070 WINSOCK_API_LINKAGE int WSAAPI WSAIoctl(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1071 WINSOCK_API_LINKAGE SOCKET WSAAPI WSAJoinLeaf(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags); 1072 WINSOCK_API_LINKAGE int WSAAPI WSANtohl(SOCKET s,u_long netlong,u_long *lphostlong); 1073 WINSOCK_API_LINKAGE int WSAAPI WSANtohs(SOCKET s,u_short netshort,u_short *lphostshort); 1074 WINSOCK_API_LINKAGE int WSAAPI WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1075 WINSOCK_API_LINKAGE int WSAAPI WSARecvDisconnect(SOCKET s,LPWSABUF lpInboundDisconnectData); 1076 WINSOCK_API_LINKAGE int WSAAPI WSARecvFrom(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1077 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSAResetEvent(WSAEVENT hEvent); 1078 WINSOCK_API_LINKAGE int WSAAPI WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1079 WINSOCK_API_LINKAGE int WSAAPI WSASendDisconnect(SOCKET s,LPWSABUF lpOutboundDisconnectData); 1080 WINSOCK_API_LINKAGE int WSAAPI WSASendTo(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1081 WINSOCK_API_LINKAGE WINBOOL WSAAPI WSASetEvent(WSAEVENT hEvent); 1082 WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketA(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags); 1083 WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketW(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags); 1084 WINSOCK_API_LINKAGE DWORD WSAAPI WSAWaitForMultipleEvents(DWORD cEvents,const WSAEVENT *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable); 1085 WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringA(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength); 1086 WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringW(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength); 1087 WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressA(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); 1088 WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressW(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength); 1089 WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); 1090 WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup); 1091 WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextA(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults); 1092 WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextW(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults); 1093 WINSOCK_API_LINKAGE INT WSAAPI WSANSPIoctl(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion); 1094 WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceEnd(HANDLE hLookup); 1095 WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA lpServiceClassInfo); 1096 WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW lpServiceClassInfo); 1097 WINSOCK_API_LINKAGE INT WSAAPI WSARemoveServiceClass(LPGUID lpServiceClassId); 1098 WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoA(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo); 1099 WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoW(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo); 1100 WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersA(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer); 1101 WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersW(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer); 1102 WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdA(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength); 1103 WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdW(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength); 1104 WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); 1105 WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceW(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags); 1106 WINSOCK_API_LINKAGE INT WSAAPI WSAProviderConfigChange(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); 1107 1108 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error) 1109 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error) 1110 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam) 1111 #define WSAGETASYNCERROR(lParam) HIWORD(lParam) 1112 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam) 1113 #define WSAGETSELECTERROR(lParam) HIWORD(lParam) 1114 1115 #if (_WIN32_WINNT >= 0x0600) 1116 typedef struct _WSANAMESPACE_INFOEXA { 1117 GUID NSProviderId; 1118 DWORD dwNameSpace; 1119 WINBOOL fActive; 1120 DWORD dwVersion; 1121 LPSTR lpszIdentifier; 1122 BLOB ProviderSpecific; 1123 } WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA; 1124 1125 typedef struct _WSANAMESPACE_INFOEXW { 1126 GUID NSProviderId; 1127 DWORD dwNameSpace; 1128 WINBOOL fActive; 1129 DWORD dwVersion; 1130 LPWSTR lpszIdentifier; 1131 BLOB ProviderSpecific; 1132 } WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW; 1133 1134 __MINGW_TYPEDEF_AW(WSANAMESPACE_INFOEX) 1135 __MINGW_TYPEDEF_AW(PWSANAMESPACE_INFOEX) 1136 __MINGW_TYPEDEF_AW(LPWSANAMESPACE_INFOEX) 1137 1138 typedef struct _WSAQUERYSET2A { 1139 DWORD dwSize; 1140 LPSTR lpszServiceInstanceName; 1141 LPWSAVERSION lpVersion; 1142 LPSTR lpszComment; 1143 DWORD dwNameSpace; 1144 LPGUID lpNSProviderId; 1145 LPSTR lpszContext; 1146 DWORD dwNumberOfProtocols; 1147 LPAFPROTOCOLS lpafpProtocols; 1148 LPSTR lpszQueryString; 1149 DWORD dwNumberOfCsAddrs; 1150 LPCSADDR_INFO lpcsaBuffer; 1151 DWORD dwOutputFlags; 1152 LPBLOB lpBlob; 1153 } WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A; 1154 1155 typedef struct _WSAQUERYSET2W { 1156 DWORD dwSize; 1157 LPWSTR lpszServiceInstanceName; 1158 LPWSAVERSION lpVersion; 1159 LPWSTR lpszComment; 1160 DWORD dwNameSpace; 1161 LPGUID lpNSProviderId; 1162 LPTSTR lpszContext; 1163 DWORD dwNumberOfProtocols; 1164 LPAFPROTOCOLS lpafpProtocols; 1165 LPWSTR lpszQueryString; 1166 DWORD dwNumberOfCsAddrs; 1167 LPCSADDR_INFO lpcsaBuffer; 1168 DWORD dwOutputFlags; 1169 LPBLOB lpBlob; 1170 } WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W; 1171 1172 #define POLLRDNORM 0x0100 1173 #define POLLRDBAND 0x0200 1174 #define POLLIN (POLLRDNORM | POLLRDBAND) 1175 #define POLLPRI 0x0400 1176 1177 #define POLLWRNORM 0x0010 1178 #define POLLOUT (POLLWRNORM) 1179 #define POLLWRBAND 0x0020 1180 1181 #define POLLERR 0x0001 1182 #define POLLHUP 0x0002 1183 #define POLLNVAL 0x0004 1184 1185 typedef struct pollfd { 1186 SOCKET fd; 1187 short events; 1188 short revents; 1189 } WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD; 1190 1191 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByList( 1192 SOCKET s, 1193 PSOCKET_ADDRESS_LIST SocketAddressList, 1194 LPDWORD LocalAddressLength, 1195 LPSOCKADDR LocalAddress, 1196 LPDWORD RemoteAddressLength, 1197 LPSOCKADDR RemoteAddress, 1198 const PTIMEVAL timeout, 1199 LPWSAOVERLAPPED Reserved 1200 ); 1201 1202 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByNameA( 1203 SOCKET s, 1204 LPSTR nodename, 1205 LPSTR servicename, 1206 LPDWORD LocalAddressLength, 1207 LPSOCKADDR LocalAddress, 1208 LPDWORD RemoteAddressLength, 1209 LPSOCKADDR RemoteAddress, 1210 const PTIMEVAL timeout, 1211 LPWSAOVERLAPPED Reserved 1212 ); 1213 1214 WINSOCK_API_LINKAGE WINBOOL PASCAL WSAConnectByNameW( 1215 SOCKET s, 1216 LPWSTR nodename, 1217 LPWSTR servicename, 1218 LPDWORD LocalAddressLength, 1219 LPSOCKADDR LocalAddress, 1220 LPDWORD RemoteAddressLength, 1221 LPSOCKADDR RemoteAddress, 1222 const PTIMEVAL timeout, 1223 LPWSAOVERLAPPED Reserved 1224 ); 1225 #define WSAConnectByName __MINGW_NAME_AW(WSAConnectByName) 1226 1227 INT WSAAPI WSAEnumNameSpaceProvidersExA( 1228 LPDWORD lpdwBufferLength, 1229 LPWSANAMESPACE_INFOEXA lpnspBuffer 1230 ); 1231 1232 INT WSAAPI WSAEnumNameSpaceProvidersExW( 1233 LPDWORD lpdwBufferLength, 1234 LPWSANAMESPACE_INFOEXW lpnspBuffer 1235 ); 1236 #define WSAEnumNameSpaceProvidersEx __MINGW_NAME_AW(WSAEnumNameSpaceProvidersEx) 1237 1238 int WSAAPI WSAPoll( 1239 WSAPOLLFD fdarray[], 1240 ULONG nfds, 1241 INT timeout 1242 ); 1243 1244 int WSAAPI WSASendMsg( 1245 SOCKET s, 1246 LPWSAMSG lpMsg, 1247 DWORD dwFlags, 1248 LPDWORD lpNumberOfBytesSent, 1249 LPWSAOVERLAPPED lpOverlapped, 1250 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine 1251 ); 1252 #endif /*(_WIN32_WINNT >= 0x0600)*/ 1253 1254 #ifdef __cplusplus 1255 } 1256 #endif 1257 1258 #ifdef _NEED_POPPACK 1259 #include <poppack.h> 1260 #endif 1261 1262 #ifdef IPV6STRICT 1263 #include <wsipv6ok.h> 1264 #endif 1265 1266 #ifdef __LP64__ 1267 #pragma pop_macro("u_long") 1268 #endif 1269 1270 #endif /* _WINSOCK2API_ */ 1271