/* * winsock2.h Windows Sockets (version 2) functions * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #ifndef _WINSOCK2API_ #define _WINSOCK2API_ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #define _WINSOCKAPI_ #ifndef _WINDOWS_ #include #endif #include #include #ifdef __cplusplus extern "C" { #endif /* Macro to specify socket functions */ #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT /* Calling convention for socket functions */ #define WSAAPI PASCAL /* Primitive types from Unix */ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; #if (_WIN32_WINNT >= 0x0501) typedef unsigned __int64 u_int64; #endif #include /* Socket data type */ typedef UINT_PTR SOCKET; /* Group data type */ typedef unsigned int GROUP; /* Alternate names of Win32 data types */ #define WSAEVENT HANDLE #define LPWSAEVENT LPHANDLE #define WSAOVERLAPPED OVERLAPPED typedef OVERLAPPED *LPWSAOVERLAPPED; /* Alternate names of Win32 constants */ #define WSA_WAIT_FAILED WAIT_FAILED #define WSA_WAIT_EVENT_0 WAIT_OBJECT_0 #define WSA_WAIT_IO_COMPLETION WAIT_IO_COMPLETION #define WSA_WAIT_TIMEOUT WAIT_TIMEOUT #define WSA_INFINITE INFINITE /* Number of sockets in fd_set (can be overriden by the user) */ #ifndef FD_SETSIZE #define FD_SETSIZE 64 #endif /* Flags to define ioctlsocket() commands */ #define IOCPARM_MASK 0x0000007F #define IOC_VOID 0x20000000 #define IOC_OUT 0x40000000 #define IOC_IN 0x80000000 #define IOC_INOUT (IOC_IN | IOC_OUT) /* Macros to define ioctlsocket() commands */ #define _IO( p1, p2 ) (IOC_VOID | ((p1) << 8) | (p2)) #define _IOR( p1, p2, p3 ) \ (IOC_OUT | (((long)sizeof( p3 ) & IOCPARM_MASK) << 16) | ((p1) << 8) | (p2)) #define _IOW( p1, p2, p3 ) \ (IOC_IN | (((long)sizeof( p3 ) & IOCPARM_MASK) << 16) | ((p1) << 8) | (p2)) /* Commands for ioctlsocket() */ #define FIONREAD _IOR( 'f', 127, u_long ) #define FIONBIO _IOW( 'f', 126, u_long ) #define FIOASYNC _IOW( 'f', 125, u_long ) #define SIOCSHIWAT _IOW( 's', 0, u_long ) #define SIOCGHIWAT _IOR( 's', 1, u_long ) #define SIOCSLOWAT _IOW( 's', 2, u_long ) #define SIOCGLOWAT _IOR( 's', 3, u_long ) #define SIOCATMARK _IOR( 's', 7, u_long ) /* IP port numbers */ #define IPPORT_ECHO 7 #define IPPORT_DISCARD 9 #define IPPORT_SYSTAT 11 #define IPPORT_DAYTIME 13 #define IPPORT_NETSTAT 15 #define IPPORT_FTP 21 #define IPPORT_TELNET 23 #define IPPORT_SMTP 25 #define IPPORT_TIMESERVER 37 #define IPPORT_NAMESERVER 42 #define IPPORT_WHOIS 43 #define IPPORT_MTP 57 #define IPPORT_TFTP 69 #define IPPORT_RJE 77 #define IPPORT_FINGER 79 #define IPPORT_TTYLINK 87 #define IPPORT_SUPDUP 95 #define IPPORT_EXECSERVER 512 #define IPPORT_LOGINSERVER 513 #define IPPORT_CMDSERVER 514 #define IPPORT_EFSSERVER 520 #define IPPORT_BIFFUDP 512 #define IPPORT_WHOSERVER 513 #define IPPORT_ROUTESERVER 520 #define IPPORT_RESERVED 1024 /* Link numbers */ #define IMPLINK_IP 155 #define IMPLINK_LOWEXPER 156 #define IMPLINK_HIGHEXPER 158 /* String lengths */ #define WSADESCRIPTION_LEN 256 #define WSASYS_STATUS_LEN 128 /* Socket special values */ #define INVALID_SOCKET 0xFFFFFFFF #define SOCKET_ERROR (-1) /* Address family special value */ #define FROM_PROTOCOL_INFO (-1) /* Socket types */ #define SOCK_STREAM 1 #define SOCK_DGRAM 2 #define SOCK_RAW 3 #define SOCK_RDM 4 #define SOCK_SEQPACKET 5 /* Socket option flags */ #define SO_DEBUG 0x0001 #define SO_ACCEPTCONN 0x0002 #define SO_REUSEADDR 0x0004 #define SO_KEEPALIVE 0x0008 #define SO_DONTROUTE 0x0010 #define SO_BROADCAST 0x0020 #define SO_USELOOPBACK 0x0040 #define SO_LINGER 0x0080 #define SO_OOBINLINE 0x0100 #define SO_DONTLINGER (int)(~SO_LINGER) #define SO_EXCLUSIVEADDRUSE (int)(~SO_REUSEADDR) /* Other socket options */ #define SO_SNDBUF 0x1001 #define SO_RCVBUF 0x1002 #define SO_SNDLOWAT 0x1003 #define SO_RCVLOWAT 0x1004 #define SO_SNDTIMEO 0x1005 #define SO_RCVTIMEO 0x1006 #define SO_ERROR 0x1007 #define SO_TYPE 0x1008 #define SO_GROUP_ID 0x2001 #define SO_GROUP_PRIORITY 0x2002 #define SO_MAX_MSG_SIZE 0x2003 #define SO_PROTOCOL_INFOA 0x2004 #define SO_PROTOCOL_INFOW 0x2005 #define PVD_CONFIG 0x3001 #define SO_CONDITIONAL_ACCEPT 0x3002 #ifdef UNICODE #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW #else #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA #endif /* Protocol families */ #define PF_UNSPEC AF_UNSPEC #define PF_UNIX AF_UNIX #define PF_INET AF_INET #define PF_IMPLINK AF_IMPLINK #define PF_PUP AF_PUP #define PF_CHAOS AF_CHAOS #define PF_NS AF_NS #define PF_IPX AF_IPX #define PF_ISO AF_ISO #define PF_OSI AF_OSI #define PF_ECMA AF_ECMA #define PF_DATAKIT AF_DATAKIT #define PF_CCITT AF_CCITT #define PF_SNA AF_SNA #define PF_DECnet AF_DECnet #define PF_DLI AF_DLI #define PF_LAT AF_LAT #define PF_HYLINK AF_HYLINK #define PF_APPLETALK AF_APPLETALK #define PF_VOICEVIEW AF_VOICEVIEW #define PF_FIREFOX AF_FIREFOX #define PF_UNKNOWN1 AF_UNKNOWN1 #define PF_BAN AF_BAN #define PF_ATM AF_ATM #define PF_INET6 AF_INET6 #if (_WIN32_WINNT >= 0x0600) #define PF_BTH AF_BTH #endif #define PF_MAX AF_MAX /* Special level number for getsockopt() and setsockopt() */ #define SOL_SOCKET 0xFFFF /* Maximum queue length for listen() */ #define SOMAXCONN 5 /* Socket message flags */ #define MSG_OOB 0x00000001L #define MSG_PEEK 0x00000002L #define MSG_DONTROUTE 0x00000004L #if (_WIN32_WINNT >= 0x0502) #define MSG_WAITALL 0x00000008L #endif #define MSG_INTERRUPT 0x00000010L #define MSG_PARTIAL 0x00008000L #define MSG_MAXIOVLEN 16 /* Maximum size of a gethostby*() structure */ #define MAXGETHOSTSTRUCT 1024 /* Network event bits and indices */ #define FD_READ_BIT 0 #define FD_WRITE_BIT 1 #define FD_OOB_BIT 2 #define FD_ACCEPT_BIT 3 #define FD_CONNECT_BIT 4 #define FD_CLOSE_BIT 5 #define FD_QOS_BIT 6 #define FD_GROUP_QOS_BIT 7 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8 #define FD_ADDRESS_LIST_CHANGE_BIT 9 #define FD_MAX_EVENTS 10 #define FD_READ (1 << FD_READ_BIT) #define FD_WRITE (1 << FD_WRITE_BIT) #define FD_OOB (1 << FD_OOB_BIT) #define FD_ACCEPT (1 << FD_ACCEPT_BIT) #define FD_CONNECT (1 << FD_CONNECT_BIT) #define FD_CLOSE (1 << FD_CLOSE_BIT) #define FD_QOS (1 << FD_QOS_BIT) #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT) #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT) #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT) #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1) /* Old names of socket error codes (defined in winerror.h) */ #define HOST_NOT_FOUND WSAHOST_NOT_FOUND #define TRY_AGAIN WSATRY_AGAIN #define NO_RECOVERY WSANO_RECOVERY #define NO_DATA WSANO_DATA #define WSANO_ADDRESS WSANO_DATA #define NO_ADDRESS WSANO_ADDRESS /* Alternate names of Win32 errors */ #define WSA_IO_PENDING ERROR_IO_PENDING #define WSA_IO_INCOMPLETE ERROR_IO_INCOMPLETE #define WSA_INVALID_HANDLE ERROR_INVALID_HANDLE #define WSA_INVALID_PARAMETER ERROR_INVALID_PARAMETER #define WSA_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY #define WSA_OPERATION_ABORTED ERROR_OPERATION_ABORTED /* Miscellaneous socket constants */ #define WSA_INVALID_EVENT ((WSAEVENT)NULL) #define WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS #define WSA_WAIT_FAILED WAIT_FAILED #define WSA_WAIT_EVENT_0 WAIT_OBJECT_0 #define WSA_WAIT_IO_COMPLETION WAIT_IO_COMPLETION #define WSA_WAIT_TIMEOUT WAIT_TIMEOUT #define WSA_INFINITE INFINITE /* Condition function return values */ #define CF_ACCEPT 0x0000 #define CF_REJECT 0x0001 #define CF_DEFER 0x0002 /* Constants for shutdown() */ #define SD_RECEIVE 0x00 #define SD_SEND 0x01 #define SD_BOTH 0x02 /* Socket group constants */ #define SG_UNCONSTRAINED_GROUP 0x01 #define SG_CONSTRAINED_GROUP 0x02 /* Maximum number of protocol chain entries */ #define MAX_PROTOCOL_CHAIN 7 /* Protocol types */ #define BASE_PROTOCOL 1 #define LAYERED_PROTOCOL 0 /* Protocol length */ #define WSAPROTOCOL_LEN 255 /* Provider flags */ #define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001L #define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002L #define PFL_HIDDEN 0x00000004L #define PFL_MATCHES_PROTOCOL_ZERO 0x00000008L #define PFL_NETWORKDIRECT_PROVIDER 0x00000010L /* Service flags */ #define XP1_CONNECTIONLESS 0x00000001L #define XP1_GUARANTEED_DELIVERY 0x00000002L #define XP1_GUARANTEED_ORDER 0x00000004L #define XP1_MESSAGE_ORIENTED 0x00000008L #define XP1_PSEUDO_STREAM 0x00000010L #define XP1_GRACEFUL_CLOSE 0x00000020L #define XP1_EXPEDITED_DATA 0x00000040L #define XP1_CONNECT_DATA 0x00000080L #define XP1_DISCONNECT_DATA 0x00000100L #define XP1_SUPPORT_BROADCAST 0x00000200L #define XP1_SUPPORT_MULTIPOINT 0x00000400L #define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800L #define XP1_MULTIPOINT_DATA_PLANE 0x00001000L #define XP1_QOS_SUPPORTED 0x00002000L #define XP1_INTERRUPT 0x00004000L #define XP1_UNI_SEND 0x00008000L #define XP1_UNI_RECV 0x00010000L #define XP1_IFS_HANDLES 0x00020000L #define XP1_PARTIAL_MESSAGE 0x00040000L #define XP1_SAN_SUPPORT_SDP 0x00080000L /* WSAJoinLeaf() flags */ #define JL_SENDER_ONLY 0x01 #define JL_RECEIVER_ONLY 0x02 #define JL_BOTH 0x04 /* WSASocket() flags */ #define WSA_FLAG_OVERLAPPED 0x01 #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02 #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04 #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08 #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40 /* WSANSPIoctl() commands */ #if (_WIN32_WINNT >= 0x0501) #define SIO_NSP_NOTIFY_CHANGE _WSAIOW( IOC_WS2, 25 ) #endif /* SIO_TRANSLATE_HANDLE flags */ #define TH_NETDEV 0x00000001L #define TH_TAPI 0x00000002L /* Service installation flags */ #define SERVICE_MULTIPLE 0x00000001L /* WSAGetAddressByName() resolution flags */ #define RES_UNUSED_1 0x00000001L #define RES_FLUSH_CACHE 0x00000002L #define RES_SERVICE 0x00000004L /* Service type names */ #define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket" #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket" #define SERVICE_TYPE_VALUE_SAPIDA "SapId" #define SERVICE_TYPE_VALUE_SAPIDW L"SapId" #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" #define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId" #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId" #ifdef UNICODE #define SERVICE_TYPE_VALUE_IPXPORT SERVICE_TYPE_VALUE_IPXPORTW #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW #else #define SERVICE_TYPE_VALUE_IPXPORT SERVICE_TYPE_VALUE_IPXPORTA #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA #define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA #endif /* Lookup control flags */ #define LUP_DEEP 0x00000001L #define LUP_CONTAINERS 0x00000002L #define LUP_NOCONTAINERS 0x00000004L #define LUP_NEAREST 0x00000008L #define LUP_RETURN_NAME 0x00000010L #define LUP_RETURN_TYPE 0x00000020L #define LUP_RETURN_VERSION 0x00000040L #define LUP_RETURN_COMMENT 0x00000080L #define LUP_RETURN_ADDR 0x00000100L #define LUP_RETURN_BLOB 0x00000200L #define LUP_RETURN_ALIASES 0x00000400L #define LUP_RETURN_QUERY_STRING 0x00000800L #define LUP_RETURN_ALL 0x00000FF0L #define LUP_RES_SERVICE 0x00008000L #define LUP_FLUSHCACHE 0x00001000L #define LUP_FLUSHPREVIOUS 0x00002000L #define LUP_NON_AUTHORITATIVE 0x00004000L #define LUP_SECURE 0x00008000L #define LUP_RETURN_PREFERRED_NAMES 0x00010000L #define LUP_ADDRCONFIG 0x00100000L #define LUP_DUAL_ADDR 0x00200000L #define LUP_FILESERVER 0x00400000L /* Result flags */ #define RESULT_IS_ALIAS 0x0001 #if (_WIN32_WINNT >= 0x0501) #define RESULT_IS_ADDED 0x0010 #define RESULT_IS_CHANGED 0x0020 #define RESULT_IS_DELETED 0x0040 #endif /* WSAPoll() event flags */ #if (_WIN32_WINNT >= 0x0600) #define POLLRDNORM 0x0100 #define POLLRDBAND 0x0200 #define POLLIN (POLLRDNORM | POLLRDBAND) #define POLLPRI 0x0400 #define POLLWRNORM 0x0010 #define POLLOUT POLLWRNORM #define POLLWRBAND 0x0020 #define POLLERR 0x0001 #define POLLHUP 0x0002 #define POLLNVAL 0x0004 #endif /* Set of sockets */ typedef struct fd_set { u_int fd_count; SOCKET fd_array[FD_SETSIZE]; } fd_set; /* Time value */ struct timeval { long tv_sec; long tv_usec; }; /* Host entity */ struct hostent { char *h_name; char **h_aliases; short h_addrtype; short h_length; char **h_addr_list; }; #define h_addr h_addr_list[0] /* Network entity */ struct netent { char *n_name; char **n_aliases; short n_addrtype; u_long n_net; }; /* Server entity */ struct servent { char *s_name; char **s_aliases; short s_port; char *s_proto; }; /* Protocol entity */ struct protoent { char *p_name; char **p_aliases; short p_proto; }; /* WSA data */ typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN + 1]; char szSystemStatus[WSASYS_STATUS_LEN + 1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char *lpVendorInfo; } WSADATA; typedef WSADATA *LPWSADATA; /* Socket protocol */ struct sockproto { u_short sp_family; u_short sp_protocol; }; /* SO_LINGER information */ struct linger { u_short l_onoff; u_short l_linger; }; /* Quality of Service */ typedef struct _QualityOfService { FLOWSPEC SendingFlowspec; FLOWSPEC ReceivingFlowspec; WSABUF ProviderSpecific; } QOS; typedef QOS *LPQOS; /* Windows Sockets network events */ typedef struct _WSANETWORKEVENTS { long lNetworkEvents; int iErrorCode[FD_MAX_EVENTS]; } WSANETWORKEVENTS; typedef WSANETWORKEVENTS *LPWSANETWORKEVENTS; /* Windows Sockets protocol chain */ typedef struct _WSAPROTOCOLCHAIN { int ChainLen; DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; } WSAPROTOCOLCHAIN; typedef WSAPROTOCOLCHAIN *LPWSAPROTOCOLCHAIN; /* Windows Sockets protocol information */ typedef struct _WSAPROTOCOL_INFOA { DWORD dwServiceFlags1; DWORD dwServiceFlags2; DWORD dwServiceFlags3; DWORD dwServiceFlags4; DWORD dwProviderFlags; GUID ProviderId; DWORD dwCatalogEntryId; WSAPROTOCOLCHAIN ProtocolChain; int iVersion; int iAddressFamily; int iMaxSockAddr; int iMinSockAddr; int iSocketType; int iProtocol; int iProtocolMaxOffset; int iNetworkByteOrder; int iSecurityScheme; DWORD dwMessageSize; DWORD dwProviderReserved; CHAR szProtocol[WSAPROTOCOL_LEN + 1]; } WSAPROTOCOL_INFOA; typedef WSAPROTOCOL_INFOA *LPWSAPROTOCOL_INFOA; typedef struct _WSAPROTOCOL_INFOW { DWORD dwServiceFlags1; DWORD dwServiceFlags2; DWORD dwServiceFlags3; DWORD dwServiceFlags4; DWORD dwProviderFlags; GUID ProviderId; DWORD dwCatalogEntryId; WSAPROTOCOLCHAIN ProtocolChain; int iVersion; int iAddressFamily; int iMaxSockAddr; int iMinSockAddr; int iSocketType; int iProtocol; int iProtocolMaxOffset; int iNetworkByteOrder; int iSecurityScheme; DWORD dwMessageSize; DWORD dwProviderReserved; WCHAR szProtocol[WSAPROTOCOL_LEN + 1]; } WSAPROTOCOL_INFOW; typedef WSAPROTOCOL_INFOW *LPWSAPROTOCOL_INFOW; #ifdef UNICODE typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO; typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO; #else typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; #endif /* Windows Sockets callbacks */ typedef int (CALLBACK *LPCONDITIONPROC)( LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD_PTR ); typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)( DWORD, DWORD, LPWSAOVERLAPPED, DWORD ); /* Windows Sockets completion types */ #if (_WIN32_WINNT >= 0x0501) typedef enum _WSACOMPLETIONTYPE { NSP_NOTIFY_IMMEDIATELY = 0, NSP_NOTIFY_HWND = 1, NSP_NOTIFY_EVENT = 2, NSP_NOTIFY_PORT = 3, NSP_NOTIFY_APC = 4 } WSACOMPLETIONTYPE; typedef WSACOMPLETIONTYPE *PWSACOMPLETIONTYPE; typedef WSACOMPLETIONTYPE *LPWSACOMPLETIONTYPE; #endif /* Windows Sockets completion information */ #if (_WIN32_WINNT >= 0x0501) typedef struct _WSACOMPLETION { WSACOMPLETIONTYPE Type; union { struct { HWND hWnd; UINT uMsg; WPARAM context; } WindowMessage; struct { LPWSAOVERLAPPED lpOverlapped; } Event; struct { LPWSAOVERLAPPED lpOverlapped; LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; } Apc; struct { LPWSAOVERLAPPED lpOverlapped; HANDLE hPort; ULONG_PTR Key; } Port; } Parameters; } WSACOMPLETION; typedef WSACOMPLETION *PWSACOMPLETION; typedef WSACOMPLETION *LPWSACOMPLETION; #endif /* Blob */ #ifndef _BLOB_DEFINED #define _BLOB_DEFINED typedef struct tagBLOB { ULONG cbSize; BYTE *pBlobData; } BLOB; typedef BLOB *LPBLOB; #endif /* _BLOB_DEFINED */ /* Address family protocols */ typedef struct _AFPROTOCOLS { INT iAddressFamily; INT iProtocol; } AFPROTOCOLS; typedef AFPROTOCOLS *PAFPROTOCOLS; typedef AFPROTOCOLS *LPAFPROTOCOLS; /* Windows Sockets comparators */ typedef enum _WSAEcomparator { COMP_EQUAL = 0, COMP_NOTLESS = 1 } WSAECOMPARATOR; typedef WSAECOMPARATOR *PWSAECOMPARATOR; typedef WSAECOMPARATOR *LPWSAECOMPARATOR; /* Windows Sockets version */ typedef struct _WSAVersion { DWORD dwVersion; WSAECOMPARATOR ecHow; } WSAVERSION; typedef WSAVERSION *PWSAVERSION; typedef WSAVERSION *LPWSAVERSION; /* Windows Sockets query set */ typedef struct _WSAQuerySetA { DWORD dwSize; LPSTR lpszServiceInstanceName; LPGUID lpServiceClassId; LPWSAVERSION lpVersion; LPSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob; } WSAQUERYSETA; typedef WSAQUERYSETA *PWSAQUERYSETA; typedef WSAQUERYSETA *LPWSAQUERYSETA; typedef struct _WSAQuerySetW { DWORD dwSize; LPWSTR lpszServiceInstanceName; LPGUID lpServiceClassId; LPWSAVERSION lpVersion; LPWSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPWSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPWSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob; } WSAQUERYSETW; typedef WSAQUERYSETW *PWSAQUERYSETW; typedef WSAQUERYSETW *LPWSAQUERYSETW; #ifdef UNICODE typedef WSAQUERYSETW WSAQUERYSET; typedef PWSAQUERYSETW PWSAQUERYSET; typedef LPWSAQUERYSETW LPWSAQUERYSET; #else typedef WSAQUERYSETA WSAQUERYSET; typedef PWSAQUERYSETA PWSAQUERYSET; typedef LPWSAQUERYSETA LPWSAQUERYSET; #endif /* Windows Sockets query set (version 2) */ typedef struct _WSAQuerySet2A { DWORD dwSize; LPSTR lpszServiceInstanceName; LPWSAVERSION lpVersion; LPSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob; } WSAQUERYSET2A; typedef WSAQUERYSET2A *PWSAQUERYSET2A; typedef WSAQUERYSET2A *LPWSAQUERYSET2A; typedef struct _WSAQuerySet2W { DWORD dwSize; LPWSTR lpszServiceInstanceName; LPWSAVERSION lpVersion; LPWSTR lpszComment; DWORD dwNameSpace; LPGUID lpNSProviderId; LPWSTR lpszContext; DWORD dwNumberOfProtocols; LPAFPROTOCOLS lpafpProtocols; LPWSTR lpszQueryString; DWORD dwNumberOfCsAddrs; LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob; } WSAQUERYSET2W; typedef WSAQUERYSET2W *PWSAQUERYSET2W; typedef WSAQUERYSET2W *LPWSAQUERYSET2W; #ifdef UNICODE typedef WSAQUERYSET2W WSAQUERYSET2; typedef PWSAQUERYSET2W PWSAQUERYSET2; typedef LPWSAQUERYSET2W LPWSAQUERYSET2; #else typedef WSAQUERYSET2A WSAQUERYSET2; typedef PWSAQUERYSET2A PWSAQUERYSET2; typedef LPWSAQUERYSET2A LPWSAQUERYSET2; #endif /* Windows Sockets service options */ typedef enum _WSAESETSERVICEOP { RNRSERVICE_REGISTER = 0, RNRSERVICE_DEREGISTER = 1, RNRSERVICE_DELETE = 2 } WSAESETSERVICEOP; typedef WSAESETSERVICEOP *PWSAESETSERVICEOP; typedef WSAESETSERVICEOP *LPWSAESETSERVICEOP; /* Windows Sockets namespace class information */ typedef struct _WSANSClassInfoA { LPSTR lpszName; DWORD dwNameSpace; DWORD dwValueType; DWORD dwValueSize; LPVOID lpValue; } WSANSCLASSINFOA; typedef WSANSCLASSINFOA *PWSANSCLASSINFOA; typedef WSANSCLASSINFOA *LPWSANSCLASSINFOA; typedef struct _WSANSClassInfoW { LPWSTR lpszName; DWORD dwNameSpace; DWORD dwValueType; DWORD dwValueSize; LPVOID lpValue; } WSANSCLASSINFOW; typedef WSANSCLASSINFOW *PWSANSCLASSINFOW; typedef WSANSCLASSINFOW *LPWSANSCLASSINFOW; #ifdef UNICODE typedef WSANSCLASSINFOW WSANSCLASSINFO; typedef PWSANSCLASSINFOW PWSANSCLASSINFO; typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO; #else typedef WSANSCLASSINFOA WSANSCLASSINFO; typedef PWSANSCLASSINFOA PWSANSCLASSINFO; typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO; #endif /* Windows Sockets service class information */ typedef struct _WSAServiceClassInfoA { LPGUID lpServiceClassId; LPSTR lpszServiceClassName; DWORD dwCount; LPWSANSCLASSINFOA lpClassInfos; } WSASERVICECLASSINFOA; typedef WSASERVICECLASSINFOA *PWSASERVICECLASSINFOA; typedef WSASERVICECLASSINFOA *LPWSASERVICECLASSINFOA; typedef struct _WSAServiceClassInfoW { LPGUID lpServiceClassId; LPWSTR lpszServiceClassName; DWORD dwCount; LPWSANSCLASSINFOW lpClassInfos; } WSASERVICECLASSINFOW; typedef WSASERVICECLASSINFOW *PWSASERVICECLASSINFOW; typedef WSASERVICECLASSINFOW *LPWSASERVICECLASSINFOW; #ifdef UNICODE typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO; typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; #else typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO; typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; #endif /* Windows Sockets namespace information */ typedef struct _WSANAMESPACE_INFOA { GUID NSProviderId; DWORD dwNameSpace; BOOL fActive; DWORD dwVersion; LPSTR lpszIdentifier; } WSANAMESPACE_INFOA; typedef WSANAMESPACE_INFOA *PWSANAMESPACE_INFOA; typedef WSANAMESPACE_INFOA *LPWSANAMESPACE_INFOA; typedef struct _WSANAMESPACE_INFOW { GUID NSProviderId; DWORD dwNameSpace; BOOL fActive; DWORD dwVersion; LPWSTR lpszIdentifier; } WSANAMESPACE_INFOW; typedef WSANAMESPACE_INFOW *PWSANAMESPACE_INFOW; typedef WSANAMESPACE_INFOW *LPWSANAMESPACE_INFOW; #ifdef UNICODE typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO; typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO; typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO; #else typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO; typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; #endif /* Windows Sockets namespace information (extended version) */ typedef struct _WSANAMESPACE_INFOEXA { GUID NSProviderId; DWORD dwNameSpace; BOOL fActive; DWORD dwVersion; LPSTR lpszIdentifier; BLOB ProviderSpecific; } WSANAMESPACE_INFOEXA; typedef WSANAMESPACE_INFOEXA *PWSANAMESPACE_INFOEXA; typedef WSANAMESPACE_INFOEXA *LPWSANAMESPACE_INFOEXA; typedef struct _WSANAMESPACE_INFOEXW { GUID NSProviderId; DWORD dwNameSpace; BOOL fActive; DWORD dwVersion; LPWSTR lpszIdentifier; BLOB ProviderSpecific; } WSANAMESPACE_INFOEXW; typedef WSANAMESPACE_INFOEXW *PWSANAMESPACE_INFOEXW; typedef WSANAMESPACE_INFOEXW *LPWSANAMESPACE_INFOEXW; #ifdef UNICODE typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX; typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX; typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX; #else typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX; typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX; typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX; #endif /* WSAPoll() parameters */ #if (_WIN32_WINNT >= 0x0600) typedef struct pollfd { SOCKET fd; SHORT events; SHORT revents; } WSAPOLLFD; typedef WSAPOLLFD *PWSAPOLLFD; typedef WSAPOLLFD *LPWSAPOLLFD; #endif /* Win32-style names for structures */ typedef struct sockaddr_in *LPSOCKADDR_IN; typedef struct linger LINGER; typedef struct linger *PLINGER; typedef struct linger *LPLINGER; typedef struct fd_set FD_SET; typedef struct fd_set *PFD_SET; typedef struct fd_set *LPFD_SET; typedef struct hostent HOSTENT; typedef struct hostent *PHOSTENT; typedef struct hostent *LPHOSTENT; typedef struct servent SERVENT; typedef struct servent *PSERVENT; typedef struct servent *LPSERVENT; typedef struct protoent PROTOENT; typedef struct protoent *PPROTOENT; typedef struct protoent *LPPROTOENT; typedef struct timeval TIMEVAL; typedef struct timeval *PTIMEVAL; typedef struct timeval *LPTIMEVAL; /* Functions in WS2_32.DLL */ WINSOCK_API_LINKAGE SOCKET WSAAPI WSAAccept( SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD_PTR ); WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringA( LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD ); WINSOCK_API_LINKAGE INT WSAAPI WSAAddressToStringW( LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByAddr( HWND, u_int, const char *, int, int, char *, int ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetHostByName( HWND, u_int, const char *, char *, int ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByName( HWND, u_int, const char *, char *, int ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetProtoByNumber( HWND, u_int, int, char *, int ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByName( HWND, u_int, const char *, const char *, char *, int ); WINSOCK_API_LINKAGE HANDLE WSAAPI WSAAsyncGetServByPort( HWND, u_int, int, const char *, char *, int ); WINSOCK_API_LINKAGE int WSAAPI WSAAsyncSelect( SOCKET, HWND, u_int, long ); WINSOCK_API_LINKAGE int WSAAPI WSACancelAsyncRequest( HANDLE ); WINSOCK_API_LINKAGE int WSAAPI WSACancelBlockingCall( void ); WINSOCK_API_LINKAGE int WSAAPI WSACleanup( void ); WINSOCK_API_LINKAGE BOOL WSAAPI WSACloseEvent( WSAEVENT ); WINSOCK_API_LINKAGE int WSAAPI WSAConnect( SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAConnectByList( SOCKET, PSOCKET_ADDRESS_LIST, LPDWORD, LPSOCKADDR, LPDWORD, LPSOCKADDR, const struct timeval *, LPWSAOVERLAPPED ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAConnectByNameA( SOCKET, LPCSTR, LPCSTR, LPDWORD, LPSOCKADDR, LPDWORD, LPSOCKADDR, const struct timeval *, LPWSAOVERLAPPED ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAConnectByNameW( SOCKET, LPWSTR, LPWSTR, LPDWORD, LPSOCKADDR, LPDWORD, LPSOCKADDR, const struct timeval *, LPWSAOVERLAPPED ); WINSOCK_API_LINKAGE WSAEVENT WSAAPI WSACreateEvent( void ); WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketA( SOCKET, DWORD, LPWSAPROTOCOL_INFOA ); WINSOCK_API_LINKAGE int WSAAPI WSADuplicateSocketW( SOCKET, DWORD, LPWSAPROTOCOL_INFOW ); WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersA( LPDWORD, LPWSANAMESPACE_INFOA ); WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersW( LPDWORD, LPWSANAMESPACE_INFOW ); WINSOCK_API_LINKAGE int WSAAPI WSAEnumNetworkEvents( SOCKET, WSAEVENT, LPWSANETWORKEVENTS ); WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsA( LPINT, LPWSAPROTOCOL_INFOA, LPDWORD ); WINSOCK_API_LINKAGE int WSAAPI WSAEnumProtocolsW( LPINT, LPWSAPROTOCOL_INFOW, LPDWORD ); WINSOCK_API_LINKAGE int WSAAPI WSAEventSelect( SOCKET, WSAEVENT, long ); WINSOCK_API_LINKAGE int WSAAPI WSAGetLastError( void ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAGetOverlappedResult( SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAGetQOSByName( SOCKET, LPWSABUF, LPQOS ); WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoA( LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA ); WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassInfoW( LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW ); WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdA( LPGUID, LPSTR, LPDWORD ); WINSOCK_API_LINKAGE INT WSAAPI WSAGetServiceClassNameByClassIdW( LPGUID, LPWSTR, LPDWORD ); WINSOCK_API_LINKAGE int WSAAPI WSAHtonl( SOCKET, u_long, u_long * ); WINSOCK_API_LINKAGE int WSAAPI WSAHtons( SOCKET, u_short, u_short * ); WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassA( LPWSASERVICECLASSINFOA ); WINSOCK_API_LINKAGE INT WSAAPI WSAInstallServiceClassW( LPWSASERVICECLASSINFOW ); WINSOCK_API_LINKAGE int WSAAPI WSAIoctl( SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAIsBlocking( void ); WINSOCK_API_LINKAGE SOCKET WSAAPI WSAJoinLeaf( SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD ); WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginA( LPWSAQUERYSETA, DWORD, LPHANDLE ); WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceBeginW( LPWSAQUERYSETW, DWORD, LPHANDLE ); WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceEnd( HANDLE ); WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextA( HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA ); WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceNextW( HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW ); WINSOCK_API_LINKAGE int WSAAPI WSANtohl( SOCKET, u_long, u_long * ); WINSOCK_API_LINKAGE int WSAAPI WSANtohs( SOCKET, u_short, u_short * ); WINSOCK_API_LINKAGE INT WSAAPI WSAProviderConfigChange( LPHANDLE, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE int WSAAPI WSARecv( SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE int WSAAPI WSARecvDisconnect( SOCKET, LPWSABUF ); WINSOCK_API_LINKAGE int WSAAPI WSARecvFrom( SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE INT WSAAPI WSARemoveServiceClass( LPGUID ); WINSOCK_API_LINKAGE BOOL WSAAPI WSAResetEvent( WSAEVENT ); WINSOCK_API_LINKAGE int WSAAPI WSASend( SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE int WSAAPI WSASendDisconnect( SOCKET, LPWSABUF ); WINSOCK_API_LINKAGE int WSAAPI WSASendMsg( SOCKET, LPWSABUF, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE int WSAAPI WSASendTo( SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE ); WINSOCK_API_LINKAGE FARPROC WSAAPI WSASetBlockingHook( FARPROC ); WINSOCK_API_LINKAGE BOOL WSAAPI WSASetEvent( WSAEVENT ); WINSOCK_API_LINKAGE void WSAAPI WSASetLastError( int ); WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceA( LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD ); WINSOCK_API_LINKAGE INT WSAAPI WSASetServiceW( LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD ); WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketA( int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD ); WINSOCK_API_LINKAGE SOCKET WSAAPI WSASocketW( int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD ); WINSOCK_API_LINKAGE int WSAAPI WSAStartup( WORD, LPWSADATA ); WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressA( LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT ); WINSOCK_API_LINKAGE INT WSAAPI WSAStringToAddressW( LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT ); WINSOCK_API_LINKAGE int WSAAPI WSAUnhookBlockingHost( void ); WINSOCK_API_LINKAGE DWORD WSAAPI WSAWaitForMultipleEvents( DWORD, const WSAEVENT *, BOOL, DWORD, BOOL ); WINSOCK_API_LINKAGE int WSAAPI __WSAFDIsSet( SOCKET, fd_set * ); WINSOCK_API_LINKAGE SOCKET WSAAPI accept( SOCKET, struct sockaddr *, int * ); WINSOCK_API_LINKAGE int WSAAPI bind( SOCKET, const struct sockaddr *, int ); WINSOCK_API_LINKAGE int WSAAPI closesocket( SOCKET ); WINSOCK_API_LINKAGE int WSAAPI connect( SOCKET, const struct sockaddr *, int ); WINSOCK_API_LINKAGE struct hostent * WSAAPI gethostbyaddr( const char *, int, int ); WINSOCK_API_LINKAGE struct hostent * WSAAPI gethostbyname( const char * ); WINSOCK_API_LINKAGE int WSAAPI gethostname( char *, int ); WINSOCK_API_LINKAGE int WSAAPI getpeername( SOCKET, struct sockaddr *, int * ); WINSOCK_API_LINKAGE struct protoent * WSAAPI getprotobyname( const char * ); WINSOCK_API_LINKAGE struct protoent * WSAAPI getprotobynumber( int ); WINSOCK_API_LINKAGE struct servent * WSAAPI getservbyname( const char *, const char * ); WINSOCK_API_LINKAGE struct servent * WSAAPI getservbyport( int, const char * ); WINSOCK_API_LINKAGE int WSAAPI getsockname( SOCKET, struct sockaddr *, int * ); WINSOCK_API_LINKAGE int WSAAPI getsockopt( SOCKET, int, int, char *, int * ); WINSOCK_API_LINKAGE u_long WSAAPI htonl( u_long ); WINSOCK_API_LINKAGE u_short WSAAPI htons( u_short ); WINSOCK_API_LINKAGE unsigned long WSAAPI inet_addr( const char * ); WINSOCK_API_LINKAGE char * WSAAPI inet_ntoa( struct in_addr ); WINSOCK_API_LINKAGE int WSAAPI ioctlsocket( SOCKET, long, u_long * ); WINSOCK_API_LINKAGE int WSAAPI listen( SOCKET, int ); WINSOCK_API_LINKAGE u_long WSAAPI ntohl( u_long ); WINSOCK_API_LINKAGE u_short WSAAPI ntohs( u_short ); WINSOCK_API_LINKAGE int WSAAPI recv( SOCKET, char *, int, int ); WINSOCK_API_LINKAGE int WSAAPI recvfrom( SOCKET, char *, int, int, struct sockaddr *, int * ); WINSOCK_API_LINKAGE int WSAAPI select( int, fd_set *, fd_set *, fd_set *, const struct timeval * ); WINSOCK_API_LINKAGE int WSAAPI send( SOCKET, const char *, int, int ); WINSOCK_API_LINKAGE int WSAAPI sendto( SOCKET, const char *, int, int, const struct sockaddr *, int ); WINSOCK_API_LINKAGE int WSAAPI setsockopt( SOCKET, int, int, const char *, int ); WINSOCK_API_LINKAGE int WSAAPI shutdown( SOCKET, int ); WINSOCK_API_LINKAGE SOCKET WSAAPI socket( int, int, int ); #if (_WIN32_WINNT >= 0x0501) WINSOCK_API_LINKAGE INT WSAAPI WSANSPIoctl( HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION ); #endif #if (_WIN32_WINNT >= 0x0600) WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersExA( LPDWORD, LPWSANAMESPACE_INFOEXA ); WINSOCK_API_LINKAGE INT WSAAPI WSAEnumNameSpaceProvidersExW( LPDWORD, LPWSANAMESPACE_INFOEXW ); WINSOCK_API_LINKAGE int WSAAPI WSAPoll( LPWSAPOLLFD, ULONG, INT ); #endif /* Map generic function names to the appropriate ANSI or Unicode version. */ #ifdef UNICODE #define WSAAddressToString WSAAddressToStringW #define WSAConnectByName WSAConnectByNameW #define WSADuplicateSocket WSADuplicateSocketW #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW #define WSAEnumProtocols WSAEnumProtocolsW #define WSAGetServiceClassInfo WSAGetServiceClassInfoW #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW #define WSAInstallServiceClass WSAInstallServiceClassW #define WSALookupServiceBegin WSALookupServiceBeginW #define WSALookupServiceNext WSALookupServiceNextW #define WSASetService WSASetServiceW #define WSASocket WSASocketW #define WSAStringToAddress WSAStringToAddressW #if (_WIN32_WINNT >= 0x0600) #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW #endif #else #define WSAAddressToString WSAAddressToStringA #define WSAConnectByName WSAConnectByNameA #define WSADuplicateSocket WSADuplicateSocketA #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA #define WSAEnumProtocols WSAEnumProtocolsA #define WSAGetServiceClassInfo WSAGetServiceClassInfoA #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA #define WSAInstallServiceClass WSAInstallServiceClassA #define WSALookupServiceBegin WSALookupServiceBeginA #define WSALookupServiceNext WSALookupServiceNextA #define WSASetService WSASetServiceA #define WSASocket WSASocketA #define WSAStringToAddress WSAStringToAddressA #if (_WIN32_WINNT >= 0x0600) #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA #endif #endif /* Macros to manipulate the fd_set structure */ #define FD_CLR( p1, p2 ) \ { \ u_int __counter; \ __counter = 0; \ while( __counter < ((fd_set *)(p2))->fd_count && \ ((fd_set *)(p2))->fd_array[__counter] != p1 ) { \ __counter++; \ } \ if( ((fd_set *)(p2))->fd_array[__counter] == p1 ) { \ for( ; __counter < ((fd_set *)(p2))->fd_count - 1; __counter++ ) { \ ((fd_set *)(p2))->fd_array[__counter] = \ ((fd_set *)(p2))->fd_array[__counter - 1]; \ } \ ((fd_set *)(p2))->fd_count--; \ } \ } #define FD_SET( p1, p2 ) \ if( ((fd_set *)(p2))->fd_count < FD_SETSIZE ) { \ ((fd_set *)(p2))->fd_array[((fd_set *)(p2))->fd_count++] = p1; \ } #define FD_ZERO( x ) (((fd_set *)(x))->fd_count = 0) #define FD_ISSET( p1, p2 ) __WSAFDIsSet( (SOCKET)(p1), (fd_set *)(p2) ) /* Macros to manipulate time values */ #define timerisset( x ) ((x)->tv_sec || (x)->tv_usec) #define timercmp( p1, p2, p3 ) \ ((p1)->tv_sec p3 (p2)->tv_sec || ((p1)->tv_sec == (p2)->tv_sec && \ (p1)->tv_usec p3 (p2)->tv_usec)) #define timerclear( x ) ((x)->tv_sec = (x)->tv_usec = 0) /* Macros to manipulate the parameters to asynchronous completion messages */ #define WSAMAKEASYNCREPLY( p1, p2 ) MAKELONG( p1, p2 ) #define WSAMAKESELECTREPLY( p1, p2 ) MAKELONG( p1, p2 ) #define WSAGETASYNCBUFLEN( x ) LOWORD( x ) #define WSAGETASYNCERROR( x ) HIWORD( x ) #define WSAGETSELECTEVENT( x ) LOWORD( x ) #define WSAGETSELECTERROR( x ) HIWORD( x ) /* Macro for compatiblity */ #define h_errno WSAGetLastError() #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _WINSOCK2API_ */