diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/winsock2.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/winsock2.h | 3597 |
1 files changed, 3597 insertions, 0 deletions
diff --git a/public/sdk/inc/winsock2.h b/public/sdk/inc/winsock2.h new file mode 100644 index 000000000..4c5515927 --- /dev/null +++ b/public/sdk/inc/winsock2.h @@ -0,0 +1,3597 @@ +/* Winsock2.h -- definitions to be used with the WinSock 2 DLL and + * WinSock 2 applications. + * + * This header file corresponds to version 2.2.x of the WinSock API + * specification. + * + * This file includes parts which are Copyright (c) 1982-1986 Regents + * of the University of California. All rights reserved. The + * Berkeley Software License Agreement specifies the terms and + * conditions for redistribution. + */ + +#ifndef _WINSOCK2API_ +#define _WINSOCK2API_ +#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ + +/* + * Ensure structures are packed consistently. + */ + +#include <pshpack4.h> + +/* + * Default: include function prototypes, don't include function typedefs. + */ + +#ifndef INCL_WINSOCK_API_PROTOTYPES +#define INCL_WINSOCK_API_PROTOTYPES 1 +#endif + +#ifndef INCL_WINSOCK_API_TYPEDEFS +#define INCL_WINSOCK_API_TYPEDEFS 0 +#endif + +/* + * Pull in WINDOWS.H if necessary + */ +#ifndef _INC_WINDOWS +#include <windows.h> +#endif /* _INC_WINDOWS */ + +/* + * Establish DLL function linkage if supported by the current build + * environment and not previously defined. + */ + +#ifndef WINSOCK_API_LINKAGE +#ifdef DECLSPEC_IMPORT +#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT +#else +#define WINSOCK_API_LINKAGE +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Basic system type definitions, taken from the BSD file sys/types.h. + */ +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; + +/* + * The new type to be used in all + * instances which refer to sockets. + */ +typedef u_int SOCKET; + +/* + * Select uses arrays of SOCKETs. These macros manipulate such + * arrays. FD_SETSIZE may be defined by the user before including + * this file, but the default here should be >= 64. + * + * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE + * INCLUDED IN WINSOCK2.H EXACTLY AS SHOWN HERE. + */ +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 +#endif /* FD_SETSIZE */ + +typedef struct fd_set { + u_int fd_count; /* how many are SET? */ + SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */ +} fd_set; + +extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *); + +#define FD_CLR(fd, set) do { \ + u_int __i; \ + for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \ + if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \ + while (__i < ((fd_set FAR *)(set))->fd_count-1) { \ + ((fd_set FAR *)(set))->fd_array[__i] = \ + ((fd_set FAR *)(set))->fd_array[__i+1]; \ + __i++; \ + } \ + ((fd_set FAR *)(set))->fd_count--; \ + break; \ + } \ + } \ +} while(0) + +#define FD_SET(fd, set) do { \ + u_int __i; \ + for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \ + if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \ + break; \ + } \ + } \ + if (__i == ((fd_set FAR *)(set))->fd_count) { \ + if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \ + ((fd_set FAR *)(set))->fd_array[__i] = (fd); \ + ((fd_set FAR *)(set))->fd_count++; \ + } \ + } \ +} while(0) + +#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0) + +#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set)) + +/* + * Structure used in select() call, taken from the BSD file sys/time.h. + */ +struct timeval { + long tv_sec; /* seconds */ + long tv_usec; /* and microseconds */ +}; + +/* + * Operations on timevals. + * + * NB: timercmp does not work for >= or <=. + */ +#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#define timercmp(tvp, uvp, cmp) \ + ((tvp)->tv_sec cmp (uvp)->tv_sec || \ + (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 + +/* + * Commands for ioctlsocket(), taken from the BSD file fcntl.h. + * + * + * Ioctl's have the command encoded in the lower word, + * and the size of any in or out parameters in the upper + * word. The high 2 bits of the upper word are used + * to encode the in/out status of the parameter; for now + * we restrict parameters to at most 128 bytes. + */ +#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */ +#define IOC_VOID 0x20000000 /* no parameters */ +#define IOC_OUT 0x40000000 /* copy out parameters */ +#define IOC_IN 0x80000000 /* copy in parameters */ +#define IOC_INOUT (IOC_IN|IOC_OUT) + /* 0x20000000 distinguishes new & + old ioctl's */ +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) + +#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +#define FIONREAD _IOR('f', 127, u_long) /* get # bytes to read */ +#define FIONBIO _IOW('f', 126, u_long) /* set/clear non-blocking i/o */ +#define FIOASYNC _IOW('f', 125, u_long) /* set/clear async i/o */ + +/* Socket I/O Controls */ +#define SIOCSHIWAT _IOW('s', 0, u_long) /* set high watermark */ +#define SIOCGHIWAT _IOR('s', 1, u_long) /* get high watermark */ +#define SIOCSLOWAT _IOW('s', 2, u_long) /* set low watermark */ +#define SIOCGLOWAT _IOR('s', 3, u_long) /* get low watermark */ +#define SIOCATMARK _IOR('s', 7, u_long) /* at oob mark? */ + +/* + * Structures returned by network data base library, taken from the + * BSD file netdb.h. All addresses are supplied in host order, and + * returned in network order (suitable for use in system calls). + */ + +struct hostent { + char FAR * h_name; /* official name of host */ + char FAR * FAR * h_aliases; /* alias list */ + short h_addrtype; /* host address type */ + short h_length; /* length of address */ + char FAR * FAR * h_addr_list; /* list of addresses */ +#define h_addr h_addr_list[0] /* address, for backward compat */ +}; + +/* + * It is assumed here that a network number + * fits in 32 bits. + */ +struct netent { + char FAR * n_name; /* official name of net */ + char FAR * FAR * n_aliases; /* alias list */ + short n_addrtype; /* net address type */ + u_long n_net; /* network # */ +}; + +struct servent { + char FAR * s_name; /* official service name */ + char FAR * FAR * s_aliases; /* alias list */ + short s_port; /* port # */ + char FAR * s_proto; /* protocol to use */ +}; + +struct protoent { + char FAR * p_name; /* official protocol name */ + char FAR * FAR * p_aliases; /* alias list */ + short p_proto; /* protocol # */ +}; + +/* + * Constants and structures defined by the internet system, + * Per RFC 790, September 1981, taken from the BSD file netinet/in.h. + */ + +/* + * Protocols + */ +#define IPPROTO_IP 0 /* dummy for IP */ +#define IPPROTO_ICMP 1 /* control message protocol */ +#define IPPROTO_IGMP 2 /* internet group management protocol */ +#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */ +#define IPPROTO_TCP 6 /* tcp */ +#define IPPROTO_PUP 12 /* pup */ +#define IPPROTO_UDP 17 /* user datagram protocol */ +#define IPPROTO_IDP 22 /* xns idp */ +#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */ + +#define IPPROTO_RAW 255 /* raw IP packet */ +#define IPPROTO_MAX 256 + +/* + * Port/socket numbers: network standard functions + */ +#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 + +/* + * Port/socket numbers: host specific functions + */ +#define IPPORT_TFTP 69 +#define IPPORT_RJE 77 +#define IPPORT_FINGER 79 +#define IPPORT_TTYLINK 87 +#define IPPORT_SUPDUP 95 + +/* + * UNIX TCP sockets + */ +#define IPPORT_EXECSERVER 512 +#define IPPORT_LOGINSERVER 513 +#define IPPORT_CMDSERVER 514 +#define IPPORT_EFSSERVER 520 + +/* + * UNIX UDP sockets + */ +#define IPPORT_BIFFUDP 512 +#define IPPORT_WHOSERVER 513 +#define IPPORT_ROUTESERVER 520 + /* 520+1 also used */ + +/* + * Ports < IPPORT_RESERVED are reserved for + * privileged processes (e.g. root). + */ +#define IPPORT_RESERVED 1024 + +/* + * Link numbers + */ +#define IMPLINK_IP 155 +#define IMPLINK_LOWEXPER 156 +#define IMPLINK_HIGHEXPER 158 + +/* + * Internet address (old style... should be updated) + */ +struct in_addr { + union { + struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; + struct { u_short s_w1,s_w2; } S_un_w; + u_long S_addr; + } S_un; +#define s_addr S_un.S_addr + /* can be used for most tcp & ip code */ +#define s_host S_un.S_un_b.s_b2 + /* host on imp */ +#define s_net S_un.S_un_b.s_b1 + /* network */ +#define s_imp S_un.S_un_w.s_w2 + /* imp */ +#define s_impno S_un.S_un_b.s_b4 + /* imp # */ +#define s_lh S_un.S_un_b.s_b3 + /* logical host */ +}; + +/* + * Definitions of bits in internet address integers. + * On subnets, the decomposition of addresses to host and net parts + * is done according to subnet mask, not the masks here. + */ +#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST 0x00ffffff +#define IN_CLASSA_MAX 128 + +#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST 0x0000ffff +#define IN_CLASSB_MAX 65536 + +#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST 0x000000ff + +#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) +#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */ +#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */ +#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */ +#define IN_MULTICAST(i) IN_CLASSD(i) + +#define INADDR_ANY (u_long)0x00000000 +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_BROADCAST (u_long)0xffffffff +#define INADDR_NONE 0xffffffff + +#define ADDR_ANY INADDR_ANY + +/* + * Socket address, internet style. + */ +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; + +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 + +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 FAR * lpVendorInfo; +} WSADATA, FAR * LPWSADATA; + +#if !defined(MAKEWORD) +#define MAKEWORD(low,high) \ + ((WORD)((BYTE)(low)) | (((WORD)(BYTE)(high))<<8))) +#endif + +/* + * Definitions related to sockets: types, address families, options, + * taken from the BSD file sys/socket.h. + */ + +/* + * This is used instead of -1, since the + * SOCKET type is unsigned. + */ +#define INVALID_SOCKET (SOCKET)(~0) +#define SOCKET_ERROR (-1) + +/* + * The following may be used in place of the address family, socket type, or + * protocol in a call to WSASocket to indicate that the corresponding value + * should be taken from the supplied WSAPROTOCOL_INFO structure instead of the + * parameter itself. + */ +#define FROM_PROTOCOL_INFO (-1) + +/* + * Types + */ +#define SOCK_STREAM 1 /* stream socket */ +#define SOCK_DGRAM 2 /* datagram socket */ +#define SOCK_RAW 3 /* raw-protocol interface */ +#define SOCK_RDM 4 /* reliably-delivered message */ +#define SOCK_SEQPACKET 5 /* sequenced packet stream */ + +/* + * Option flags per-socket. + */ +#define SO_DEBUG 0x0001 /* turn on debugging info recording */ +#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ +#define SO_REUSEADDR 0x0004 /* allow local address reuse */ +#define SO_KEEPALIVE 0x0008 /* keep connections alive */ +#define SO_DONTROUTE 0x0010 /* just use interface addresses */ +#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ +#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ +#define SO_LINGER 0x0080 /* linger on close if data present */ +#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ + +#define SO_DONTLINGER (int)(~SO_LINGER) + +/* + * Additional options. + */ +#define SO_SNDBUF 0x1001 /* send buffer size */ +#define SO_RCVBUF 0x1002 /* receive buffer size */ +#define SO_SNDLOWAT 0x1003 /* send low-water mark */ +#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ +#define SO_SNDTIMEO 0x1005 /* send timeout */ +#define SO_RCVTIMEO 0x1006 /* receive timeout */ +#define SO_ERROR 0x1007 /* get error status and clear */ +#define SO_TYPE 0x1008 /* get socket type */ + +/* + * WinSock 2 extension -- new options + */ +#define SO_GROUP_ID 0x2001 /* ID of a socket group */ +#define SO_GROUP_PRIORITY 0x2002 /* the relative priority within a group*/ +#define SO_MAX_MSG_SIZE 0x2003 /* maximum message size */ +#define SO_PROTOCOL_INFOA 0x2004 /* WSAPROTOCOL_INFOA structure */ +#define SO_PROTOCOL_INFOW 0x2005 /* WSAPROTOCOL_INFOW structure */ +#ifdef UNICODE +#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW +#else +#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA +#endif /* UNICODE */ +#define PVD_CONFIG 0x3001 /* configuration info for service provider */ + +/* + * TCP options. + */ +#define TCP_NODELAY 0x0001 + +/* + * Address families. + */ +#define AF_UNSPEC 0 /* unspecified */ +/* + * Although AF_UNSPEC is defined for backwards compatibility, using + * AF_UNSPEC for the "af" parameter when creating a socket is STRONGLY + * DISCOURAGED. The interpretation of the "protocol" parameter + * depends on the actual address family chosen. As environments grow + * to include more and more address families that use overlapping + * protocol values there is more and more chance of choosing an + * undesired address family when AF_UNSPEC is used. + */ +#define AF_UNIX 1 /* local to host (pipes, portals) */ +#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ +#define AF_IMPLINK 3 /* arpanet imp addresses */ +#define AF_PUP 4 /* pup protocols: e.g. BSP */ +#define AF_CHAOS 5 /* mit CHAOS protocols */ +#define AF_NS 6 /* XEROX NS protocols */ +#define AF_IPX AF_NS /* IPX protocols: IPX, SPX, etc. */ +#define AF_ISO 7 /* ISO protocols */ +#define AF_OSI AF_ISO /* OSI is ISO */ +#define AF_ECMA 8 /* european computer manufacturers */ +#define AF_DATAKIT 9 /* datakit protocols */ +#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ +#define AF_SNA 11 /* IBM SNA */ +#define AF_DECnet 12 /* DECnet */ +#define AF_DLI 13 /* Direct data link interface */ +#define AF_LAT 14 /* LAT */ +#define AF_HYLINK 15 /* NSC Hyperchannel */ +#define AF_APPLETALK 16 /* AppleTalk */ +#define AF_NETBIOS 17 /* NetBios-style addresses */ +#define AF_VOICEVIEW 18 /* VoiceView */ +#define AF_FIREFOX 19 /* Protocols from Firefox */ +#define AF_UNKNOWN1 20 /* Somebody is using this! */ +#define AF_BAN 21 /* Banyan */ +#define AF_ATM 22 /* Native ATM Services */ +#define AF_INET6 23 /* Internetwork Version 6 */ + +#define AF_MAX 24 + +/* + * Structure used by kernel to store most + * addresses. + */ +struct sockaddr { + u_short sa_family; /* address family */ + char sa_data[14]; /* up to 14 bytes of direct address */ +}; + +/* + * Structure used by kernel to pass protocol + * information in raw sockets. + */ +struct sockproto { + u_short sp_family; /* address family */ + u_short sp_protocol; /* protocol */ +}; + +/* + * Protocol families, same as address families for now. + */ +#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 + +#define PF_MAX AF_MAX + +/* + * Structure used for manipulating linger option. + */ +struct linger { + u_short l_onoff; /* option on/off */ + u_short l_linger; /* linger time */ +}; + +/* + * Level number for (get/set)sockopt() to apply to socket itself. + */ +#define SOL_SOCKET 0xffff /* options for socket level */ + +/* + * Maximum queue length specifiable by listen. + */ +#define SOMAXCONN 0x7fffffff + +#define MSG_OOB 0x1 /* process out-of-band data */ +#define MSG_PEEK 0x2 /* peek at incoming message */ +#define MSG_DONTROUTE 0x4 /* send without using routing tables */ + +#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */ + +/* + * WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and + * WSARecvFrom() + */ +#define MSG_INTERRUPT 0x10 /* send/recv in the interrupt context */ + +#define MSG_MAXIOVLEN 16 + +/* + * Define constant based on rfc883, used by gethostbyxxxx() calls. + */ +#define MAXGETHOSTSTRUCT 1024 + +/* + * WinSock 2 extension -- bit values and indices for FD_XXX network events + */ +#define FD_READ_BIT 0 +#define FD_READ (1 << FD_READ_BIT) + +#define FD_WRITE_BIT 1 +#define FD_WRITE (1 << FD_WRITE_BIT) + +#define FD_OOB_BIT 2 +#define FD_OOB (1 << FD_OOB_BIT) + +#define FD_ACCEPT_BIT 3 +#define FD_ACCEPT (1 << FD_ACCEPT_BIT) + +#define FD_CONNECT_BIT 4 +#define FD_CONNECT (1 << FD_CONNECT_BIT) + +#define FD_CLOSE_BIT 5 +#define FD_CLOSE (1 << FD_CLOSE_BIT) + +#define FD_QOS_BIT 6 +#define FD_QOS (1 << FD_QOS_BIT) + +#define FD_GROUP_QOS_BIT 7 +#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT) + +#define FD_MAX_EVENTS 8 +#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1) + + +/* + * All Windows Sockets error constants are biased by WSABASEERR from + * the "normal" + */ +#define WSABASEERR 10000 +/* + * Windows Sockets definitions of regular Microsoft C error constants + */ +#define WSAEINTR (WSABASEERR+4) +#define WSAEBADF (WSABASEERR+9) +#define WSAEACCES (WSABASEERR+13) +#define WSAEFAULT (WSABASEERR+14) +#define WSAEINVAL (WSABASEERR+22) +#define WSAEMFILE (WSABASEERR+24) + +/* + * Windows Sockets definitions of regular Berkeley error constants + */ +#define WSAEWOULDBLOCK (WSABASEERR+35) +#define WSAEINPROGRESS (WSABASEERR+36) +#define WSAEALREADY (WSABASEERR+37) +#define WSAENOTSOCK (WSABASEERR+38) +#define WSAEDESTADDRREQ (WSABASEERR+39) +#define WSAEMSGSIZE (WSABASEERR+40) +#define WSAEPROTOTYPE (WSABASEERR+41) +#define WSAENOPROTOOPT (WSABASEERR+42) +#define WSAEPROTONOSUPPORT (WSABASEERR+43) +#define WSAESOCKTNOSUPPORT (WSABASEERR+44) +#define WSAEOPNOTSUPP (WSABASEERR+45) +#define WSAEPFNOSUPPORT (WSABASEERR+46) +#define WSAEAFNOSUPPORT (WSABASEERR+47) +#define WSAEADDRINUSE (WSABASEERR+48) +#define WSAEADDRNOTAVAIL (WSABASEERR+49) +#define WSAENETDOWN (WSABASEERR+50) +#define WSAENETUNREACH (WSABASEERR+51) +#define WSAENETRESET (WSABASEERR+52) +#define WSAECONNABORTED (WSABASEERR+53) +#define WSAECONNRESET (WSABASEERR+54) +#define WSAENOBUFS (WSABASEERR+55) +#define WSAEISCONN (WSABASEERR+56) +#define WSAENOTCONN (WSABASEERR+57) +#define WSAESHUTDOWN (WSABASEERR+58) +#define WSAETOOMANYREFS (WSABASEERR+59) +#define WSAETIMEDOUT (WSABASEERR+60) +#define WSAECONNREFUSED (WSABASEERR+61) +#define WSAELOOP (WSABASEERR+62) +#define WSAENAMETOOLONG (WSABASEERR+63) +#define WSAEHOSTDOWN (WSABASEERR+64) +#define WSAEHOSTUNREACH (WSABASEERR+65) +#define WSAENOTEMPTY (WSABASEERR+66) +#define WSAEPROCLIM (WSABASEERR+67) +#define WSAEUSERS (WSABASEERR+68) +#define WSAEDQUOT (WSABASEERR+69) +#define WSAESTALE (WSABASEERR+70) +#define WSAEREMOTE (WSABASEERR+71) + +/* + * Extended Windows Sockets error constant definitions + */ +#define WSASYSNOTREADY (WSABASEERR+91) +#define WSAVERNOTSUPPORTED (WSABASEERR+92) +#define WSANOTINITIALISED (WSABASEERR+93) +#define WSAEDISCON (WSABASEERR+101) +#define WSAENOMORE (WSABASEERR+102) +#define WSAECANCELLED (WSABASEERR+103) +#define WSAEINVALIDPROCTABLE (WSABASEERR+104) +#define WSAEINVALIDPROVIDER (WSABASEERR+105) +#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106) +#define WSASYSCALLFAILURE (WSABASEERR+107) +#define WSASERVICE_NOT_FOUND (WSABASEERR+108) +#define WSATYPE_NOT_FOUND (WSABASEERR+109) +#define WSA_E_NO_MORE (WSABASEERR+110) +#define WSA_E_CANCELLED (WSABASEERR+111) +#define WSAEREFUSED (WSABASEERR+112) + +/* + * Error return codes from gethostbyname() and gethostbyaddr() + * (when using the resolver). Note that these errors are + * retrieved via WSAGetLastError() and must therefore follow + * the rules for avoiding clashes with error numbers from + * specific implementations or language run-time systems. + * For this reason the codes are based at WSABASEERR+1001. + * Note also that [WSA]NO_ADDRESS is defined only for + * compatibility purposes. + */ + +#define h_errno WSAGetLastError() + +/* Authoritative Answer: Host not found */ +#define WSAHOST_NOT_FOUND (WSABASEERR+1001) +#define HOST_NOT_FOUND WSAHOST_NOT_FOUND + +/* Non-Authoritative: Host not found, or SERVERFAIL */ +#define WSATRY_AGAIN (WSABASEERR+1002) +#define TRY_AGAIN WSATRY_AGAIN + +/* Non-recoverable errors, FORMERR, REFUSED, NOTIMP */ +#define WSANO_RECOVERY (WSABASEERR+1003) +#define NO_RECOVERY WSANO_RECOVERY + +/* Valid name, no data record of requested type */ +#define WSANO_DATA (WSABASEERR+1004) +#define NO_DATA WSANO_DATA + +/* no address, look for MX record */ +#define WSANO_ADDRESS WSANO_DATA +#define NO_ADDRESS WSANO_ADDRESS + +/* + * Windows Sockets errors redefined as regular Berkeley error constants. + * These are commented out in Windows NT to avoid conflicts with errno.h. + * Use the WSA constants instead. + */ +#if 0 +#define EWOULDBLOCK WSAEWOULDBLOCK +#define EINPROGRESS WSAEINPROGRESS +#define EALREADY WSAEALREADY +#define ENOTSOCK WSAENOTSOCK +#define EDESTADDRREQ WSAEDESTADDRREQ +#define EMSGSIZE WSAEMSGSIZE +#define EPROTOTYPE WSAEPROTOTYPE +#define ENOPROTOOPT WSAENOPROTOOPT +#define EPROTONOSUPPORT WSAEPROTONOSUPPORT +#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT +#define EOPNOTSUPP WSAEOPNOTSUPP +#define EPFNOSUPPORT WSAEPFNOSUPPORT +#define EAFNOSUPPORT WSAEAFNOSUPPORT +#define EADDRINUSE WSAEADDRINUSE +#define EADDRNOTAVAIL WSAEADDRNOTAVAIL +#define ENETDOWN WSAENETDOWN +#define ENETUNREACH WSAENETUNREACH +#define ENETRESET WSAENETRESET +#define ECONNABORTED WSAECONNABORTED +#define ECONNRESET WSAECONNRESET +#define ENOBUFS WSAENOBUFS +#define EISCONN WSAEISCONN +#define ENOTCONN WSAENOTCONN +#define ESHUTDOWN WSAESHUTDOWN +#define ETOOMANYREFS WSAETOOMANYREFS +#define ETIMEDOUT WSAETIMEDOUT +#define ECONNREFUSED WSAECONNREFUSED +#define ELOOP WSAELOOP +#define ENAMETOOLONG WSAENAMETOOLONG +#define EHOSTDOWN WSAEHOSTDOWN +#define EHOSTUNREACH WSAEHOSTUNREACH +#define ENOTEMPTY WSAENOTEMPTY +#define EPROCLIM WSAEPROCLIM +#define EUSERS WSAEUSERS +#define EDQUOT WSAEDQUOT +#define ESTALE WSAESTALE +#define EREMOTE WSAEREMOTE +#endif + +/* + * WinSock 2 extension -- new error codes and type definition + */ + +#ifdef WIN32 + +#define WSAAPI FAR PASCAL +#define WSAEVENT HANDLE +#define LPWSAEVENT LPHANDLE +#define WSAOVERLAPPED OVERLAPPED +typedef struct _OVERLAPPED * LPWSAOVERLAPPED; + +#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) + +#define WSA_INVALID_EVENT ((WSAEVENT)NULL) +#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) +#define WSA_WAIT_FAILED ((DWORD)-1L) +#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) + +#else /* WIN16 */ + +#define WSAAPI FAR PASCAL +typedef DWORD WSAEVENT, FAR * LPWSAEVENT; + +typedef struct _WSAOVERLAPPED { + DWORD Internal; + DWORD InternalHigh; + DWORD Offset; + DWORD OffsetHigh; + WSAEVENT hEvent; +} WSAOVERLAPPED, FAR * LPWSAOVERLAPPED; + +#define WSA_IO_PENDING (WSAEWOULDBLOCK) +#define WSA_IO_INCOMPLETE (WSAEWOULDBLOCK) +#define WSA_INVALID_HANDLE (WSAENOTSOCK) +#define WSA_INVALID_PARAMETER (WSAEINVAL) +#define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS) +#define WSA_OPERATION_ABORTED (WSAEINTR) + +#define WSA_INVALID_EVENT ((WSAEVENT)NULL) +#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) +#define WSA_WAIT_FAILED ((DWORD)-1L) +#define WSA_WAIT_EVENT_0 ((DWORD)0) +#define WSA_WAIT_TIMEOUT ((DWORD)0x102L) +#define WSA_INFINITE ((DWORD)-1L) + +#endif /* WIN32 */ + +/* + * WinSock 2 extension -- WSABUF and QOS struct + */ + +typedef struct _WSABUF { + u_long len; /* the length of the buffer */ + char FAR * buf; /* the pointer to the buffer */ +} WSABUF, FAR * LPWSABUF; + +typedef enum +{ + BestEffortService, + ControlledLoadService, + PredictiveService, + GuaranteedDelayService, + GuaranteedService +} GUARANTEE; + +typedef long int32; + +typedef struct _flowspec +{ + int32 TokenRate; /* In Bytes/sec */ + int32 TokenBucketSize; /* In Bytes */ + int32 PeakBandwidth; /* In Bytes/sec */ + int32 Latency; /* In microseconds */ + int32 DelayVariation; /* In microseconds */ + GUARANTEE LevelOfGuarantee; /* Guaranteed, Predictive */ + /* or Best Effort */ + int32 CostOfCall; /* Reserved for future use, */ + /* must be set to 0 now */ + int32 NetworkAvailability; /* read-only: */ + /* 1 if accessible, */ + /* 0 if not */ +} FLOWSPEC, FAR * LPFLOWSPEC; + +typedef struct _QualityOfService +{ + FLOWSPEC SendingFlowspec; /* the flow spec for data sending */ + FLOWSPEC ReceivingFlowspec; /* the flow spec for data receiving */ + WSABUF ProviderSpecific; /* additional provider specific stuff */ +} QOS, FAR * LPQOS; + +/* + * WinSock 2 extension -- manifest constants for return values of the condition function + */ +#define CF_ACCEPT 0x0000 +#define CF_REJECT 0x0001 +#define CF_DEFER 0x0002 + +/* + * WinSock 2 extension -- manifest constants for shutdown() + */ +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 + +/* + * WinSock 2 extension -- data type and manifest constants for socket groups + */ +typedef unsigned int GROUP; + +#define SG_UNCONSTRAINED_GROUP 0x01 +#define SG_CONSTRAINED_GROUP 0x02 + +/* + * WinSock 2 extension -- data type for WSAEnumNetworkEvents() + */ +typedef struct _WSANETWORKEVENTS { + long lNetworkEvents; + int iErrorCode[FD_MAX_EVENTS]; +} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS; + +/* + * WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated + * manifest constants + */ + +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif /* GUID_DEFINED */ + +#ifndef __LPGUID_DEFINED__ +#define __LPGUID_DEFINED__ +typedef GUID *LPGUID; +#endif + +#define MAX_PROTOCOL_CHAIN 7 + +#define BASE_PROTOCOL 1 +#define LAYERED_PROTOCOL 0 + +typedef struct _WSAPROTOCOLCHAIN { + int ChainLen; /* the length of the chain, */ + /* length = 0 means layered protocol, */ + /* length = 1 means base protocol, */ + /* length > 1 means protocol chain */ + DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCatalogEntryIds */ +} WSAPROTOCOLCHAIN, FAR * LPWSAPROTOCOLCHAIN; + +#define WSAPROTOCOL_LEN 255 + +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, FAR * 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, FAR * 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 // UNICODE + +/* Flag bit definitions for dwProviderFlags */ +#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001 +#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002 +#define PFL_HIDDEN 0x00000004 +#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008 + +/* Flag bit definitions for dwServiceFlags1 */ +#define XP1_CONNECTIONLESS 0x00000001 +#define XP1_GUARANTEED_DELIVERY 0x00000002 +#define XP1_GUARANTEED_ORDER 0x00000004 +#define XP1_MESSAGE_ORIENTED 0x00000008 +#define XP1_PSEUDO_STREAM 0x00000010 +#define XP1_GRACEFUL_CLOSE 0x00000020 +#define XP1_EXPEDITED_DATA 0x00000040 +#define XP1_CONNECT_DATA 0x00000080 +#define XP1_DISCONNECT_DATA 0x00000100 +#define XP1_SUPPORT_BROADCAST 0x00000200 +#define XP1_SUPPORT_MULTIPOINT 0x00000400 +#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800 +#define XP1_MULTIPOINT_DATA_PLANE 0x00001000 +#define XP1_QOS_SUPPORTED 0x00002000 +#define XP1_INTERRUPT 0x00004000 +#define XP1_UNI_SEND 0x00008000 +#define XP1_UNI_RECV 0x00010000 +#define XP1_IFS_HANDLES 0x00020000 +#define XP1_PARTIAL_MESSAGE 0x00040000 + +#define BIGENDIAN 0x0000 +#define LITTLEENDIAN 0x0001 + +#define SECURITY_PROTOCOL_NONE 0x0000 + +/* + * WinSock 2 extension -- manifest constants for WSAJoinLeaf() + */ +#define JL_SENDER_ONLY 0x01 +#define JL_RECEIVER_ONLY 0x02 +#define JL_BOTH 0x04 + +/* + * WinSock 2 extension -- manifest constants for WSASocket() + */ +#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 + +/* + * WinSock 2 extension -- manifest constants for WSAIoctl() + */ +#define IOC_UNIX 0x00000000 +#define IOC_WS2 0x08000000 +#define IOC_PROTOCOL 0x10000000 +#define IOC_VENDOR 0x18000000 + +#define _WSAIO(x,y) (IOC_VOID|(x)|(y)) +#define _WSAIOR(x,y) (IOC_OUT|(x)|(y)) +#define _WSAIOW(x,y) (IOC_IN|(x)|(y)) +#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y)) + +#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1) +#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2) +#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3) +#define SIO_FLUSH _WSAIO(IOC_WS2,4) +#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5) +#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6) +#define SIO_GET_QOS _WSAIORW(IOC_WS2,7) +#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8) +#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9) +#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10) +#define SIO_SET_QOS _WSAIOW(IOC_WS2,11) +#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12) +#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13) + +/* + * WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl + */ +#define TH_NETDEV 0x00000001 +#define TH_TAPI 0x00000002 + + +/* + * Microsoft Windows Extended data types required for the functions to + * convert back and forth between binary and string forms of + * addresses. + */ +typedef struct sockaddr SOCKADDR; +typedef struct sockaddr *PSOCKADDR; +typedef struct sockaddr FAR *LPSOCKADDR; + +/* + * Manifest constants and type definitions related to name resolution and + * registration (RNR) API + */ + +#ifndef _tagBLOB_DEFINED +#define _tagBLOB_DEFINED +#define _BLOB_DEFINED +#define _LPBLOB_DEFINED +typedef struct _BLOB { + ULONG cbSize ; +#ifdef MIDL_PASS + [size_is(cbSize)] BYTE *pBlobData; +#else /* MIDL_PASS */ + BYTE *pBlobData ; +#endif /* MIDL_PASS */ +} BLOB, *LPBLOB ; +#endif + +/* + * Service Install Flags + */ + +#define SERVICE_MULTIPLE (0x00000001) + +/* + *& Name Spaces + */ + +#define NS_ALL (0) + +#define NS_SAP (1) +#define NS_NDS (2) +#define NS_PEER_BROWSE (3) + +#define NS_TCPIP_LOCAL (10) +#define NS_TCPIP_HOSTS (11) +#define NS_DNS (12) +#define NS_NETBT (13) +#define NS_WINS (14) + +#define NS_NBP (20) + +#define NS_MS (30) +#define NS_STDA (31) +#define NS_CAIRO (32) + +#define NS_X500 (40) +#define NS_NIS (41) +#define NS_NISPLUS (42) + +#define NS_WRQ (50) + +/* + * Resolution flags for WSAGetAddressByName(). + * Note these are also used by the 1.1 API GetAddressByName, so + * leave them around. + */ +#define RES_UNUSED_1 (0x00000001) +#define RES_FLUSH_CACHE (0x00000002) +#ifndef RES_SERVICE +#define RES_SERVICE (0x00000004) +#endif /* RES_SERVICE */ + +/* + * Well known value names for Service Types + */ + +#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_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 /* not UNICODE */ + +#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 + +#ifndef __CSADDR_DEFINED__ +#define __CSADDR_DEFINED__ + + +/* + * SockAddr Information + */ +typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr ; + INT iSockaddrLength ; +} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ; + +/* + * CSAddr Information + */ +typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr ; + SOCKET_ADDRESS RemoteAddr ; + INT iSocketType ; + INT iProtocol ; +} CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ; +#endif // __CSADDR_DEFINED__ + +/* + * Address Family/Protocol Tuples + */ +typedef struct _AFPROTOCOLS { + INT iAddressFamily; + INT iProtocol; +} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS; + +/* + * Client Query API Typedefs + */ + +/* + * The comparators + */ +typedef enum _WSAEcomparator +{ + COMP_EQUAL = 0, + COMP_NOTLESS +} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR; + +typedef struct _WSAVersion +{ + DWORD dwVersion; + WSAECOMPARATOR ecHow; +}WSAVERSION, *PWSAVERSION, *LPWSAVERSION; + +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, *PWSAQUERYSETA, *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, *PWSAQUERYSETW, *LPWSAQUERYSETW; +#ifdef UNICODE +typedef WSAQUERYSETW WSAQUERYSET; +typedef PWSAQUERYSETW PWSAQUERYSET; +typedef LPWSAQUERYSETW LPWSAQUERYSET; +#else +typedef WSAQUERYSETA WSAQUERYSET; +typedef PWSAQUERYSETA PWSAQUERYSET; +typedef LPWSAQUERYSETA LPWSAQUERYSET; +#endif // UNICODE + +#define LUP_DEEP 0x0001 +#define LUP_CONTAINERS 0x0002 +#define LUP_NOCONTAINERS 0x0004 +#define LUP_NEAREST 0x0008 +#define LUP_RETURN_NAME 0x0010 +#define LUP_RETURN_TYPE 0x0020 +#define LUP_RETURN_VERSION 0x0040 +#define LUP_RETURN_COMMENT 0x0080 +#define LUP_RETURN_ADDR 0x0100 +#define LUP_RETURN_BLOB 0x0200 +#define LUP_RETURN_ALIASES 0x0400 +#define LUP_RETURN_QUERY_STRING 0x0800 +#define LUP_RETURN_ALL 0x0FF0 +#define LUP_RES_SERVICE 0x8000 + +#define LUP_FLUSHCACHE 0x1000 +#define LUP_FLUSHPREVIOUS 0x2000 + + +// +// Return flags +// + +#define RESULT_IS_ALIAS 0x0001 + +/* + * Service Address Registration and Deregistration Data Types. + */ + +typedef enum _WSAESETSERVICEOP +{ + RNRSERVICE_REGISTER=0, + RNRSERVICE_DEREGISTER, + RNRSERVICE_DELETE +} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP; + +/* + * Service Installation/Removal Data Types. + */ + +typedef struct _WSANSClassInfoA +{ + LPSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +}WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA; +typedef struct _WSANSClassInfoW +{ + LPWSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +}WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW; +#ifdef UNICODE +typedef WSANSCLASSINFOW WSANSCLASSINFO; +typedef PWSANSCLASSINFOW PWSANSCLASSINFO; +typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO; +#else +typedef WSANSCLASSINFOA WSANSCLASSINFO; +typedef PWSANSCLASSINFOA PWSANSCLASSINFO; +typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO; +#endif // UNICODE + +typedef struct _WSAServiceClassInfoA +{ + LPGUID lpServiceClassId; + LPSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOA lpClassInfos; +}WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA; +typedef struct _WSAServiceClassInfoW +{ + LPGUID lpServiceClassId; + LPWSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOW lpClassInfos; +}WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW; +#ifdef UNICODE +typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO; +typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; +typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; +#else +typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO; +typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; +typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; +#endif // UNICODE + +typedef struct _WSANAMESPACE_INFOA { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPSTR lpszIdentifier; +} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA; +typedef struct _WSANAMESPACE_INFOW { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPWSTR lpszIdentifier; +} WSANAMESPACE_INFOW, *PWSANAMESPACE_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 // UNICODE + +/* Socket function prototypes */ + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +accept( + SOCKET s, + struct sockaddr FAR * addr, + int FAR * addrlen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +SOCKET +(WSAAPI * LPFN_ACCEPT)( + SOCKET s, + struct sockaddr FAR * addr, + int FAR * addrlen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +bind( + SOCKET s, + const struct sockaddr FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_BIND)( + SOCKET s, + const struct sockaddr FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +closesocket( + SOCKET s + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_CLOSESOCKET)( + SOCKET s + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +connect( + SOCKET s, + const struct sockaddr FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_CONNECT)( + SOCKET s, + const struct sockaddr FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +ioctlsocket( + SOCKET s, + long cmd, + u_long FAR * argp + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_IOCTLSOCKET)( + SOCKET s, + long cmd, + u_long FAR * argp + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +getpeername( + SOCKET s, + struct sockaddr FAR * name, + int FAR * namelen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_GETPEERNAME)( + SOCKET s, + struct sockaddr FAR * name, + int FAR * namelen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +getsockname( + SOCKET s, + struct sockaddr FAR * name, + int FAR * namelen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_GETSOCKNAME)( + SOCKET s, + struct sockaddr FAR * name, + int FAR * namelen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +getsockopt( + SOCKET s, + int level, + int optname, + char FAR * optval, + int FAR * optlen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_GETSOCKOPT)( + SOCKET s, + int level, + int optname, + char FAR * optval, + int FAR * optlen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +u_long +WSAAPI +htonl( + u_long hostlong + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +u_long +(WSAAPI * LPFN_HTONL)( + u_long hostlong + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +u_short +WSAAPI +htons( + u_short hostshort + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +u_short +(WSAAPI * LPFN_HTONS)( + u_short hostshort + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +unsigned long +WSAAPI +inet_addr( + const char FAR * cp + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +unsigned long +(WSAAPI * LPFN_INET_ADDR)( + const char FAR * cp + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +char FAR * +WSAAPI +inet_ntoa( + struct in_addr in + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +char FAR * +(WSAAPI * LPFN_INET_NTOA)( + struct in_addr in + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +listen( + SOCKET s, + int backlog + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_LISTEN)( + SOCKET s, + int backlog + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +u_long +WSAAPI +ntohl( + u_long netlong + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +u_long +(WSAAPI * LPFN_NTOHL)( + u_long netlong + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +u_short +WSAAPI +ntohs( + u_short netshort + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +u_short +(WSAAPI * LPFN_NTOHS)( + u_short netshort + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +recv( + SOCKET s, + char FAR * buf, + int len, + int flags + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_RECV)( + SOCKET s, + char FAR * buf, + int len, + int flags + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +recvfrom( + SOCKET s, + char FAR * buf, + int len, + int flags, + struct sockaddr FAR * from, + int FAR * fromlen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_RECVFROM)( + SOCKET s, + char FAR * buf, + int len, + int flags, + struct sockaddr FAR * from, + int FAR * fromlen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +select( + int nfds, + fd_set FAR * readfds, + fd_set FAR * writefds, + fd_set FAR *exceptfds, + const struct timeval FAR * timeout + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_SELECT)( + int nfds, + fd_set FAR * readfds, + fd_set FAR * writefds, + fd_set FAR *exceptfds, + const struct timeval FAR * timeout + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +send( + SOCKET s, + const char FAR * buf, + int len, + int flags + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_SEND)( + SOCKET s, + const char FAR * buf, + int len, + int flags + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +sendto( + SOCKET s, + const char FAR * buf, + int len, + int flags, + const struct sockaddr FAR * to, + int tolen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_SENDTO)( + SOCKET s, + const char FAR * buf, + int len, + int flags, + const struct sockaddr FAR * to, + int tolen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +setsockopt( + SOCKET s, + int level, + int optname, + const char FAR * optval, + int optlen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_SETSOCKOPT)( + SOCKET s, + int level, + int optname, + const char FAR * optval, + int optlen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +shutdown( + SOCKET s, + int how + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_SHUTDOWN)( + SOCKET s, + int how + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +socket( + int af, + int type, + int protocol + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +SOCKET +(WSAAPI * LPFN_SOCKET)( + int af, + int type, + int protocol + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +/* Database function prototypes */ + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct hostent FAR * +WSAAPI +gethostbyaddr( + const char FAR * addr, + int len, + int type + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct hostent FAR * +(WSAAPI * LPFN_GETHOSTBYADDR)( + const char FAR * addr, + int len, + int type + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct hostent FAR * +WSAAPI +gethostbyname( + const char FAR * name + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct hostent FAR * +(WSAAPI * LPFN_GETHOSTBYNAME)( + const char FAR * name + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +gethostname( + char FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_GETHOSTNAME)( + char FAR * name, + int namelen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct servent FAR * +WSAAPI +getservbyport( + int port, + const char FAR * proto + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct servent FAR * +(WSAAPI * LPFN_GETSERVBYPORT)( + int port, + const char FAR * proto + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct servent FAR * +WSAAPI +getservbyname( + const char FAR * name, + const char FAR * proto + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct servent FAR * +(WSAAPI * LPFN_GETSERVBYNAME)( + const char FAR * name, + const char FAR * proto + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct protoent FAR * +WSAAPI +getprotobynumber( + int number + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct protoent FAR * +(WSAAPI * LPFN_GETPROTOBYNUMBER)( + int number + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +struct protoent FAR * +WSAAPI +getprotobyname( + const char FAR * name + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +struct protoent FAR * +(WSAAPI * LPFN_GETPROTOBYNAME)( + const char FAR * name + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +/* Microsoft Windows Extension function prototypes */ + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAStartup( + WORD wVersionRequested, + LPWSADATA lpWSAData + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSASTARTUP)( + WORD wVersionRequested, + LPWSADATA lpWSAData + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSACleanup( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSACLEANUP)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +void +WSAAPI +WSASetLastError( + int iError + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +void +(WSAAPI * LPFN_WSASETLASTERROR)( + int iError + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAGetLastError( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAGETLASTERROR)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSAIsBlocking( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSAISBLOCKING)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAUnhookBlockingHook( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAUNHOOKBLOCKINGHOOK)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +FARPROC +WSAAPI +WSASetBlockingHook( + FARPROC lpBlockFunc + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +FARPROC +(WSAAPI * LPFN_WSASETBLOCKINGHOOK)( + FARPROC lpBlockFunc + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSACancelBlockingCall( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSACANCELBLOCKINGCALL)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetServByName( + HWND hWnd, + u_int wMsg, + const char FAR * name, + const char FAR * proto, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETSERVBYNAME)( + HWND hWnd, + u_int wMsg, + const char FAR * name, + const char FAR * proto, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetServByPort( + HWND hWnd, + u_int wMsg, + int port, + const char FAR * proto, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETSERVBYPORT)( + HWND hWnd, + u_int wMsg, + int port, + const char FAR * proto, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetProtoByName( + HWND hWnd, + u_int wMsg, + const char FAR * name, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETPROTOBYNAME)( + HWND hWnd, + u_int wMsg, + const char FAR * name, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetProtoByNumber( + HWND hWnd, + u_int wMsg, + int number, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETPROTOBYNUMBER)( + HWND hWnd, + u_int wMsg, + int number, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetHostByName( + HWND hWnd, + u_int wMsg, + const char FAR * name, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETHOSTBYNAME)( + HWND hWnd, + u_int wMsg, + const char FAR * name, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +HANDLE +WSAAPI +WSAAsyncGetHostByAddr( + HWND hWnd, + u_int wMsg, + const char FAR * addr, + int len, + int type, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +HANDLE +(WSAAPI * LPFN_WSAASYNCGETHOSTBYADDR)( + HWND hWnd, + u_int wMsg, + const char FAR * addr, + int len, + int type, + char FAR * buf, + int buflen + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSACancelAsyncRequest( + HANDLE hAsyncTaskHandle + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSACANCELASYNCREQUEST)( + HANDLE hAsyncTaskHandle + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAAsyncSelect( + SOCKET s, + HWND hWnd, + u_int wMsg, + long lEvent + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAASYNCSELECT)( + SOCKET s, + HWND hWnd, + u_int wMsg, + long lEvent + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +/* + * WinSock 2 extensions -- data types for the condition function in + * WSAAccept() and overlapped I/O completion routine. + */ + +typedef +int +(CALLBACK * LPCONDITIONPROC)( + LPWSABUF lpCallerId, + LPWSABUF lpCallerData, + LPQOS lpSQOS, + LPQOS lpGQOS, + LPWSABUF lpCalleeId, + LPWSABUF lpCalleeData, + GROUP FAR * g, + DWORD dwCallbackData + ); + +typedef +void +(CALLBACK * LPWSAOVERLAPPED_COMPLETION_ROUTINE)( + DWORD dwError, + DWORD cbTransferred, + LPWSAOVERLAPPED lpOverlapped, + DWORD dwFlags + ); + +/* WinSock 2 API new function prototypes */ + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +WSAAccept( + SOCKET s, + struct sockaddr FAR * addr, + LPINT addrlen, + LPCONDITIONPROC lpfnCondition, + DWORD dwCallbackData + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +SOCKET +(WSAAPI * LPFN_WSAACCEPT)( + SOCKET s, + struct sockaddr FAR * addr, + LPINT addrlen, + LPCONDITIONPROC lpfnCondition, + DWORD dwCallbackData + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSACloseEvent( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSACLOSEEVENT)( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAConnect( + SOCKET s, + const struct sockaddr FAR * name, + int namelen, + LPWSABUF lpCallerData, + LPWSABUF lpCalleeData, + LPQOS lpSQOS, + LPQOS lpGQOS + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSACONNECT)( + SOCKET s, + const struct sockaddr FAR * name, + int namelen, + LPWSABUF lpCallerData, + LPWSABUF lpCalleeData, + LPQOS lpSQOS, + LPQOS lpGQOS + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +WSAEVENT +WSAAPI +WSACreateEvent( + void + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +WSAEVENT +(WSAAPI * LPFN_WSACREATEEVENT)( + void + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSADuplicateSocketA( + SOCKET s, + DWORD dwProcessId, + LPWSAPROTOCOL_INFOA lpProtocolInfo + ); +WINSOCK_API_LINKAGE +int +WSAAPI +WSADuplicateSocketW( + SOCKET s, + DWORD dwProcessId, + LPWSAPROTOCOL_INFOW lpProtocolInfo + ); +#ifdef UNICODE +#define WSADuplicateSocket WSADuplicateSocketW +#else +#define WSADuplicateSocket WSADuplicateSocketA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSADUPLICATESOCKETA)( + SOCKET s, + DWORD dwProcessId, + LPWSAPROTOCOL_INFOA lpProtocolInfo + ); +typedef +int +(WSAAPI * LPFN_WSADUPLICATESOCKETW)( + SOCKET s, + DWORD dwProcessId, + LPWSAPROTOCOL_INFOW lpProtocolInfo + ); +#ifdef UNICODE +#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW +#else +#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAEnumNetworkEvents( + SOCKET s, + WSAEVENT hEventObject, + LPWSANETWORKEVENTS lpNetworkEvents + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAENUMNETWORKEVENTS)( + SOCKET s, + WSAEVENT hEventObject, + LPWSANETWORKEVENTS lpNetworkEvents + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAEnumProtocolsA( + LPINT lpiProtocols, + LPWSAPROTOCOL_INFOA lpProtocolBuffer, + LPDWORD lpdwBufferLength + ); +WINSOCK_API_LINKAGE +int +WSAAPI +WSAEnumProtocolsW( + LPINT lpiProtocols, + LPWSAPROTOCOL_INFOW lpProtocolBuffer, + LPDWORD lpdwBufferLength + ); +#ifdef UNICODE +#define WSAEnumProtocols WSAEnumProtocolsW +#else +#define WSAEnumProtocols WSAEnumProtocolsA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAENUMPROTOCOLSA)( + LPINT lpiProtocols, + LPWSAPROTOCOL_INFOA lpProtocolBuffer, + LPDWORD lpdwBufferLength + ); +typedef +int +(WSAAPI * LPFN_WSAENUMPROTOCOLSW)( + LPINT lpiProtocols, + LPWSAPROTOCOL_INFOW lpProtocolBuffer, + LPDWORD lpdwBufferLength + ); +#ifdef UNICODE +#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW +#else +#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAEventSelect( + SOCKET s, + WSAEVENT hEventObject, + long lNetworkEvents + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAEVENTSELECT)( + SOCKET s, + WSAEVENT hEventObject, + long lNetworkEvents + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSAGetOverlappedResult( + SOCKET s, + LPWSAOVERLAPPED lpOverlapped, + LPDWORD lpcbTransfer, + BOOL fWait, + LPDWORD lpdwFlags + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSAGETOVERLAPPEDRESULT)( + SOCKET s, + LPWSAOVERLAPPED lpOverlapped, + LPDWORD lpcbTransfer, + BOOL fWait, + LPDWORD lpdwFlags + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSAGetQOSByName( + SOCKET s, + LPWSABUF lpQOSName, + LPQOS lpQOS + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSAGETQOSBYNAME)( + SOCKET s, + LPWSABUF lpQOSName, + LPQOS lpQOS + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAHtonl( + SOCKET s, + u_long hostlong, + u_long FAR * lpnetlong + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAHTONL)( + SOCKET s, + u_long hostlong, + u_long FAR * lpnetlong + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSAHtons( + SOCKET s, + u_short hostshort, + u_short FAR * lpnetshort + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSAHTONS)( + SOCKET s, + u_short hostshort, + u_short FAR * lpnetshort + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +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 + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +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 + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +WSAJoinLeaf( + SOCKET s, + const struct sockaddr FAR * name, + int namelen, + LPWSABUF lpCallerData, + LPWSABUF lpCalleeData, + LPQOS lpSQOS, + LPQOS lpGQOS, + DWORD dwFlags + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +SOCKET +(WSAAPI * LPFN_WSAJOINLEAF)( + SOCKET s, + const struct sockaddr FAR * name, + int namelen, + LPWSABUF lpCallerData, + LPWSABUF lpCalleeData, + LPQOS lpSQOS, + LPQOS lpGQOS, + DWORD dwFlags + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSANtohl( + SOCKET s, + u_long netlong, + u_long FAR * lphostlong + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSANTOHL)( + SOCKET s, + u_long netlong, + u_long FAR * lphostlong + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSANtohs( + SOCKET s, + u_short netshort, + u_short FAR * lphostshort + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSANTOHS)( + SOCKET s, + u_short netshort, + u_short FAR * lphostshort + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSARecv( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesRecvd, + LPDWORD lpFlags, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSARECV)( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesRecvd, + LPDWORD lpFlags, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSARecvDisconnect( + SOCKET s, + LPWSABUF lpInboundDisconnectData + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSARECVDISCONNECT)( + SOCKET s, + LPWSABUF lpInboundDisconnectData + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSARecvFrom( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesRecvd, + LPDWORD lpFlags, + struct sockaddr FAR * lpFrom, + LPINT lpFromlen, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSARECVFROM)( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesRecvd, + LPDWORD lpFlags, + struct sockaddr FAR * lpFrom, + LPINT lpFromlen, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSAResetEvent( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSARESETEVENT)( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSASend( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesSent, + DWORD dwFlags, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSASEND)( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesSent, + DWORD dwFlags, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSASendDisconnect( + SOCKET s, + LPWSABUF lpOutboundDisconnectData + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSASENDDISCONNECT)( + SOCKET s, + LPWSABUF lpOutboundDisconnectData + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +int +WSAAPI +WSASendTo( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesSent, + DWORD dwFlags, + const struct sockaddr FAR * lpTo, + int iTolen, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +int +(WSAAPI * LPFN_WSASENDTO)( + SOCKET s, + LPWSABUF lpBuffers, + DWORD dwBufferCount, + LPDWORD lpNumberOfBytesSent, + DWORD dwFlags, + const struct sockaddr FAR * lpTo, + int iTolen, + LPWSAOVERLAPPED lpOverlapped, + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +BOOL +WSAAPI +WSASetEvent( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +BOOL +(WSAAPI * LPFN_WSASETEVENT)( + WSAEVENT hEvent + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +WSASocketA( + int af, + int type, + int protocol, + LPWSAPROTOCOL_INFOA lpProtocolInfo, + GROUP g, + DWORD dwFlags + ); +WINSOCK_API_LINKAGE +SOCKET +WSAAPI +WSASocketW( + int af, + int type, + int protocol, + LPWSAPROTOCOL_INFOW lpProtocolInfo, + GROUP g, + DWORD dwFlags + ); +#ifdef UNICODE +#define WSASocket WSASocketW +#else +#define WSASocket WSASocketA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +SOCKET +(WSAAPI * LPFN_WSASOCKETA)( + int af, + int type, + int protocol, + LPWSAPROTOCOL_INFOA lpProtocolInfo, + GROUP g, + DWORD dwFlags + ); +typedef +SOCKET +(WSAAPI * LPFN_WSASOCKETW)( + int af, + int type, + int protocol, + LPWSAPROTOCOL_INFOW lpProtocolInfo, + GROUP g, + DWORD dwFlags + ); +#ifdef UNICODE +#define LPFN_WSASOCKET LPFN_WSASOCKETW +#else +#define LPFN_WSASOCKET LPFN_WSASOCKETA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +DWORD +WSAAPI +WSAWaitForMultipleEvents( + DWORD cEvents, + const WSAEVENT FAR * lphEvents, + BOOL fWaitAll, + DWORD dwTimeout, + BOOL fAlertable + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +DWORD +(WSAAPI * LPFN_WSAWAITFORMULTIPLEEVENTS)( + DWORD cEvents, + const WSAEVENT FAR * lphEvents, + BOOL fWaitAll, + DWORD dwTimeout, + BOOL fAlertable + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAAddressToStringA( + IN LPSOCKADDR lpsaAddress, + IN DWORD dwAddressLength, + IN LPWSAPROTOCOL_INFOA lpProtocolInfo, + IN OUT LPSTR lpszAddressString, + IN OUT LPDWORD lpdwAddressStringLength + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAAddressToStringW( + IN LPSOCKADDR lpsaAddress, + IN DWORD dwAddressLength, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN OUT LPWSTR lpszAddressString, + IN OUT LPDWORD lpdwAddressStringLength + ); +#ifdef UNICODE +#define WSAAddressToString WSAAddressToStringW +#else +#define WSAAddressToString WSAAddressToStringA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAADDRESSTOSTRINGA)( + IN LPSOCKADDR lpsaAddress, + IN DWORD dwAddressLength, + IN LPWSAPROTOCOL_INFOA lpProtocolInfo, + IN OUT LPSTR lpszAddressString, + IN OUT LPDWORD lpdwAddressStringLength + ); +typedef +INT +(WSAAPI * LPFN_WSAADDRESSTOSTRINGW)( + IN LPSOCKADDR lpsaAddress, + IN DWORD dwAddressLength, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN OUT LPWSTR lpszAddressString, + IN OUT LPDWORD lpdwAddressStringLength + ); +#ifdef UNICODE +#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW +#else +#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAStringToAddressA( + IN LPSTR AddressString, + IN INT AddressFamily, + IN LPWSAPROTOCOL_INFOA lpProtocolInfo, + IN OUT LPSOCKADDR lpAddress, + IN OUT LPINT lpAddressLength + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAStringToAddressW( + IN LPWSTR AddressString, + IN INT AddressFamily, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN OUT LPSOCKADDR lpAddress, + IN OUT LPINT lpAddressLength + ); +#ifdef UNICODE +#define WSAStringToAddress WSAStringToAddressW +#else +#define WSAStringToAddress WSAStringToAddressA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSASTRINGTOADDRESSA)( + IN LPSTR AddressString, + IN INT AddressFamily, + IN LPWSAPROTOCOL_INFOA lpProtocolInfo, + IN OUT LPSOCKADDR lpAddress, + IN OUT LPINT lpAddressLength + ); +typedef +INT +(WSAAPI * LPFN_WSASTRINGTOADDRESSW)( + IN LPWSTR AddressString, + IN INT AddressFamily, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN OUT LPSOCKADDR lpAddress, + IN OUT LPINT lpAddressLength + ); +#ifdef UNICODE +#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW +#else +#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +/* Registration and Name Resolution API functions */ + + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSALookupServiceBeginA( + IN LPWSAQUERYSETA lpqsRestrictions, + IN DWORD dwControlFlags, + OUT LPHANDLE lphLookup + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSALookupServiceBeginW( + IN LPWSAQUERYSETW lpqsRestrictions, + IN DWORD dwControlFlags, + OUT LPHANDLE lphLookup + ); +#ifdef UNICODE +#define WSALookupServiceBegin WSALookupServiceBeginW +#else +#define WSALookupServiceBegin WSALookupServiceBeginA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSALOOKUPSERVICEBEGINA)( + IN LPWSAQUERYSETA lpqsRestrictions, + IN DWORD dwControlFlags, + OUT LPHANDLE lphLookup + ); +typedef +INT +(WSAAPI * LPFN_WSALOOKUPSERVICEBEGINW)( + IN LPWSAQUERYSETW lpqsRestrictions, + IN DWORD dwControlFlags, + OUT LPHANDLE lphLookup + ); +#ifdef UNICODE +#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW +#else +#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSALookupServiceNextA( + IN HANDLE hLookup, + IN DWORD dwControlFlags, + IN OUT LPDWORD lpdwBufferLength, + OUT LPWSAQUERYSETA lpqsResults + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSALookupServiceNextW( + IN HANDLE hLookup, + IN DWORD dwControlFlags, + IN OUT LPDWORD lpdwBufferLength, + OUT LPWSAQUERYSETW lpqsResults + ); +#ifdef UNICODE +#define WSALookupServiceNext WSALookupServiceNextW +#else +#define WSALookupServiceNext WSALookupServiceNextA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSALOOKUPSERVICENEXTA)( + IN HANDLE hLookup, + IN DWORD dwControlFlags, + IN OUT LPDWORD lpdwBufferLength, + OUT LPWSAQUERYSETA lpqsResults + ); +typedef +INT +(WSAAPI * LPFN_WSALOOKUPSERVICENEXTW)( + IN HANDLE hLookup, + IN DWORD dwControlFlags, + IN OUT LPDWORD lpdwBufferLength, + OUT LPWSAQUERYSETW lpqsResults + ); +#ifdef UNICODE +#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW +#else +#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSALookupServiceEnd( + IN HANDLE hLookup + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSALOOKUPSERVICEEND)( + IN HANDLE hLookup + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAInstallServiceClassA( + IN LPWSASERVICECLASSINFOA lpServiceClassInfo + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAInstallServiceClassW( + IN LPWSASERVICECLASSINFOW lpServiceClassInfo + ); +#ifdef UNICODE +#define WSAInstallServiceClass WSAInstallServiceClassW +#else +#define WSAInstallServiceClass WSAInstallServiceClassA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAINSTALLSERVICECLASSA)( + IN LPWSASERVICECLASSINFOA lpServiceClassInfo + ); +typedef +INT +(WSAAPI * LPFN_WSAINSTALLSERVICECLASSW)( + IN LPWSASERVICECLASSINFOW lpServiceClassInfo + ); +#ifdef UNICODE +#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW +#else +#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSARemoveServiceClass( + IN LPGUID lpServiceClassId + ); +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAREMOVESERVICECLASS)( + IN LPGUID lpServiceClassId + ); +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAGetServiceClassInfoA( + IN LPGUID lpProviderId, + IN LPGUID lpServiceClassId, + IN OUT LPDWORD lpdwBufSize, + OUT LPWSASERVICECLASSINFOA lpServiceClassInfo + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAGetServiceClassInfoW( + IN LPGUID lpProviderId, + IN LPGUID lpServiceClassId, + IN OUT LPDWORD lpdwBufSize, + OUT LPWSASERVICECLASSINFOW lpServiceClassInfo + ); +#ifdef UNICODE +#define WSAGetServiceClassInfo WSAGetServiceClassInfoW +#else +#define WSAGetServiceClassInfo WSAGetServiceClassInfoA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAGETSERVICECLASSINFOA)( + IN LPGUID lpProviderId, + IN LPGUID lpServiceClassId, + IN OUT LPDWORD lpdwBufSize, + OUT LPWSASERVICECLASSINFOA lpServiceClassInfo + ); +typedef +INT +(WSAAPI * LPFN_WSAGETSERVICECLASSINFOW)( + IN LPGUID lpProviderId, + IN LPGUID lpServiceClassId, + IN OUT LPDWORD lpdwBufSize, + OUT LPWSASERVICECLASSINFOW lpServiceClassInfo + ); +#ifdef UNICODE +#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW +#else +#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAEnumNameSpaceProvidersA( + IN OUT LPDWORD lpdwBufferLength, + IN LPWSANAMESPACE_INFOA lpnspBuffer + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAEnumNameSpaceProvidersW( + IN OUT LPDWORD lpdwBufferLength, + IN LPWSANAMESPACE_INFOW lpnspBuffer + ); +#ifdef UNICODE +#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW +#else +#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAENUMNAMESPACEPROVIDERSA)( + IN OUT LPDWORD lpdwBufferLength, + IN LPWSANAMESPACE_INFOA lpnspBuffer + ); +typedef +INT +(WSAAPI * LPFN_WSAENUMNAMESPACEPROVIDERSW)( + IN OUT LPDWORD lpdwBufferLength, + IN LPWSANAMESPACE_INFOW lpnspBuffer + ); +#ifdef UNICODE +#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW +#else +#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAGetServiceClassNameByClassIdA( + IN LPGUID lpServiceClassId, + OUT LPSTR lpszServiceClassName, + IN OUT LPDWORD lpdwBufferLength + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSAGetServiceClassNameByClassIdW( + IN LPGUID lpServiceClassId, + OUT LPWSTR lpszServiceClassName, + IN OUT LPDWORD lpdwBufferLength + ); +#ifdef UNICODE +#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW +#else +#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)( + IN LPGUID lpServiceClassId, + OUT LPSTR lpszServiceClassName, + IN OUT LPDWORD lpdwBufferLength + ); +typedef +INT +(WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)( + IN LPGUID lpServiceClassId, + OUT LPWSTR lpszServiceClassName, + IN OUT LPDWORD lpdwBufferLength + ); +#ifdef UNICODE +#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW +#else +#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +#if INCL_WINSOCK_API_PROTOTYPES +WINSOCK_API_LINKAGE +INT +WSAAPI +WSASetServiceA( + IN LPWSAQUERYSETA lpqsRegInfo, + IN WSAESETSERVICEOP essoperation, + IN DWORD dwControlFlags + ); +WINSOCK_API_LINKAGE +INT +WSAAPI +WSASetServiceW( + IN LPWSAQUERYSETW lpqsRegInfo, + IN WSAESETSERVICEOP essoperation, + IN DWORD dwControlFlags + ); +#ifdef UNICODE +#define WSASetService WSASetServiceW +#else +#define WSASetService WSASetServiceA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_PROTOTYPES + +#if INCL_WINSOCK_API_TYPEDEFS +typedef +INT +(WSAAPI * LPFN_WSASETSERVICEA)( + IN LPWSAQUERYSETA lpqsRegInfo, + IN WSAESETSERVICEOP essoperation, + IN DWORD dwControlFlags + ); +typedef +INT +(WSAAPI * LPFN_WSASETSERVICEW)( + IN LPWSAQUERYSETW lpqsRegInfo, + IN WSAESETSERVICEOP essoperation, + IN DWORD dwControlFlags + ); +#ifdef UNICODE +#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW +#else +#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA +#endif // !UNICODE +#endif // INCL_WINSOCK_API_TYPEDEFS + +/* Microsoft Windows Extended data types */ +typedef struct sockaddr_in SOCKADDR_IN; +typedef struct sockaddr_in *PSOCKADDR_IN; +typedef struct sockaddr_in FAR *LPSOCKADDR_IN; + +typedef struct linger LINGER; +typedef struct linger *PLINGER; +typedef struct linger FAR *LPLINGER; + +typedef struct in_addr IN_ADDR; +typedef struct in_addr *PIN_ADDR; +typedef struct in_addr FAR *LPIN_ADDR; + +typedef struct fd_set FD_SET; +typedef struct fd_set *PFD_SET; +typedef struct fd_set FAR *LPFD_SET; + +typedef struct hostent HOSTENT; +typedef struct hostent *PHOSTENT; +typedef struct hostent FAR *LPHOSTENT; + +typedef struct servent SERVENT; +typedef struct servent *PSERVENT; +typedef struct servent FAR *LPSERVENT; + +typedef struct protoent PROTOENT; +typedef struct protoent *PPROTOENT; +typedef struct protoent FAR *LPPROTOENT; + +typedef struct timeval TIMEVAL; +typedef struct timeval *PTIMEVAL; +typedef struct timeval FAR *LPTIMEVAL; + +/* + * Windows message parameter composition and decomposition + * macros. + * + * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation + * when constructing the response to a WSAAsyncGetXByY() routine. + */ +#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error) +/* + * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation + * when constructing the response to WSAAsyncSelect(). + */ +#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error) +/* + * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application + * to extract the buffer length from the lParam in the response + * to a WSAAsyncGetXByY(). + */ +#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam) +/* + * WSAGETASYNCERROR is intended for use by the Windows Sockets application + * to extract the error code from the lParam in the response + * to a WSAGetXByY(). + */ +#define WSAGETASYNCERROR(lParam) HIWORD(lParam) +/* + * WSAGETSELECTEVENT is intended for use by the Windows Sockets application + * to extract the event code from the lParam in the response + * to a WSAAsyncSelect(). + */ +#define WSAGETSELECTEVENT(lParam) LOWORD(lParam) +/* + * WSAGETSELECTERROR is intended for use by the Windows Sockets application + * to extract the error code from the lParam in the response + * to a WSAAsyncSelect(). + */ +#define WSAGETSELECTERROR(lParam) HIWORD(lParam) + +#ifdef __cplusplus +} +#endif + +#include <poppack.h> + +#endif /* _WINSOCK2API_ */ + |