File Annotation

Not logged in
4e2933c620 2015-04-21        kinaba: /***********************************************************************\
4e2933c620 2015-04-21        kinaba: *                              winsock2.d                               *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                       Windows API header module                       *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                 Translated from MinGW Windows headers                 *
4e2933c620 2015-04-21        kinaba: *                             by Daniel Keep                            *
4e2933c620 2015-04-21        kinaba: \***********************************************************************/
4e2933c620 2015-04-21        kinaba: module win32.winsock2;
9b639cf2d6 2015-05-05        kinaba: pragma(lib, "Ws2_32");
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /*
4e2933c620 2015-04-21        kinaba:   Definitions for winsock 2
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba:   Contributed by the WINE project.
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba:   Portions Copyright (c) 1980, 1983, 1988, 1993
4e2933c620 2015-04-21        kinaba:   The Regents of the University of California.  All rights reserved.
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba:   Portions Copyright (c) 1993 by Digital Equipment Corporation.
4e2933c620 2015-04-21        kinaba:  */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /*	DRK: This module should not be included if -version=Win32_Winsock2 has
4e2933c620 2015-04-21        kinaba:  *	not been set.  If it has, assert.  I think it's better this way than
4e2933c620 2015-04-21        kinaba:  *	letting the user believe that it's worked.
4e2933c620 2015-04-21        kinaba:  *
4e2933c620 2015-04-21        kinaba:  *	SG: It has now been changed so that winsock2 is the default, and
4e2933c620 2015-04-21        kinaba:  *	-version=Win32_Winsock1 must be set to use winsock.
4e2933c620 2015-04-21        kinaba:  */
4e2933c620 2015-04-21        kinaba: version(Win32_Winsock1) {
4e2933c620 2015-04-21        kinaba: 	pragma(msg, "Cannot use win32.winsock2 with Win32_Winsock1 defined.");
4e2933c620 2015-04-21        kinaba: 	static assert(false);
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: import win32.winbase;
4e2933c620 2015-04-21        kinaba: import win32.windef;
4e2933c620 2015-04-21        kinaba: import win32.basetyps;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias char u_char;
4e2933c620 2015-04-21        kinaba: alias ushort u_short;
4e2933c620 2015-04-21        kinaba: alias uint u_int, u_long, SOCKET;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const size_t FD_SETSIZE = 64;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* shutdown() how types */
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	SD_RECEIVE,
4e2933c620 2015-04-21        kinaba: 	SD_SEND,
4e2933c620 2015-04-21        kinaba: 	SD_BOTH
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* Good grief this is stupid... is it a struct?  A preprocessor macro?  A
4e2933c620 2015-04-21        kinaba:    struct tag?  Who the hell knows!? */
4e2933c620 2015-04-21        kinaba: struct FD_SET {
4e2933c620 2015-04-21        kinaba: 	u_int               fd_count;
4e2933c620 2015-04-21        kinaba: 	SOCKET[FD_SETSIZE]  fd_array;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	/* this differs from the define in winsock.h and in cygwin sys/types.h */
4e2933c620 2015-04-21        kinaba: 	static void opCall(SOCKET fd, FD_SET set) {
4e2933c620 2015-04-21        kinaba: 		u_int i;
4e2933c620 2015-04-21        kinaba: 		for (i = 0; i < set.fd_count; i++)
4e2933c620 2015-04-21        kinaba: 			if (set.fd_array[i] == fd)
4e2933c620 2015-04-21        kinaba: 				break;
4e2933c620 2015-04-21        kinaba: 		if (i == set.fd_count)
4e2933c620 2015-04-21        kinaba: 			if (set.fd_count < FD_SETSIZE) {
4e2933c620 2015-04-21        kinaba: 				set.fd_array[i] = fd;
4e2933c620 2015-04-21        kinaba: 				set.fd_count++;
4e2933c620 2015-04-21        kinaba: 			}
4e2933c620 2015-04-21        kinaba: 	}
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias FD_SET* PFD_SET, LPFD_SET;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // Keep this alias, since fd_set isn't a tag name in the original header.
4e2933c620 2015-04-21        kinaba: alias FD_SET fd_set;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) int __WSAFDIsSet(SOCKET, FD_SET*);
4e2933c620 2015-04-21        kinaba: alias __WSAFDIsSet FD_ISSET;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: void FD_CLR(SOCKET fd, FD_SET* set) {
4e2933c620 2015-04-21        kinaba: 	for (u_int i = 0; i < set.fd_count; i++) {
4e2933c620 2015-04-21        kinaba: 		if (set.fd_array[i] == fd) {
4e2933c620 2015-04-21        kinaba: 			while (i < set.fd_count - 1) {
4e2933c620 2015-04-21        kinaba: 				set.fd_array[i] = set.fd_array[i+1];
4e2933c620 2015-04-21        kinaba: 				i++;
4e2933c620 2015-04-21        kinaba: 			}
4e2933c620 2015-04-21        kinaba: 			set.fd_count--;
4e2933c620 2015-04-21        kinaba: 			break;
4e2933c620 2015-04-21        kinaba: 		}
4e2933c620 2015-04-21        kinaba: 	}
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: void FD_ZERO(FD_SET* set) {
4e2933c620 2015-04-21        kinaba: 	set.fd_count = 0;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct TIMEVAL {
4e2933c620 2015-04-21        kinaba: 	int tv_sec;
4e2933c620 2015-04-21        kinaba: 	int tv_usec;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	int opCmp(TIMEVAL tv) {
4e2933c620 2015-04-21        kinaba: 		if (tv_sec < tv.tv_sec)   return -1;
4e2933c620 2015-04-21        kinaba: 		if (tv_sec > tv.tv_sec)   return  1;
4e2933c620 2015-04-21        kinaba: 		if (tv_usec < tv.tv_usec) return -1;
4e2933c620 2015-04-21        kinaba: 		if (tv_usec > tv.tv_usec) return  1;
4e2933c620 2015-04-21        kinaba: 		return 0;
4e2933c620 2015-04-21        kinaba: 	}
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias TIMEVAL* PTIMEVAL, LPTIMEVAL;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: bool timerisset(TIMEVAL* tvp) {
4e2933c620 2015-04-21        kinaba: 	return tvp.tv_sec || tvp.tv_usec;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /+
4e2933c620 2015-04-21        kinaba: /* DRK: These have been commented out because it was felt that using
4e2933c620 2015-04-21        kinaba:  * omCmp on the TIMEVAL struct was cleaner.  Still, perhaps these should
4e2933c620 2015-04-21        kinaba:  * be enabled under a version tag for compatibility's sake?
4e2933c620 2015-04-21        kinaba:  * If it is decided that it's just ugly and unwanted, then feel free to
4e2933c620 2015-04-21        kinaba:  * delete this section :)
4e2933c620 2015-04-21        kinaba:  */
4e2933c620 2015-04-21        kinaba: int timercmp(TIMEVAL* tvp, TIMEVAL* uvp) {
4e2933c620 2015-04-21        kinaba: 	return tvp.tv_sec != uvp.tv_sec ?
4e2933c620 2015-04-21        kinaba: 	    (tvp.tv_sec < uvp.tv_sec ? -1 :
4e2933c620 2015-04-21        kinaba:             (tvp.tv_sec > uvp.tv_sec ? 1 : 0)) :
4e2933c620 2015-04-21        kinaba: 	    (tvp.tv_usec < uvp.tv_usec ? -1 :
4e2933c620 2015-04-21        kinaba: 	        (tvp.tv_usec > uvp.tv_usec ? 1 : 0));
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: int timercmp(TIMEVAL* tvp, TIMEVAL* uvp, int function(long,long) cmp) {
4e2933c620 2015-04-21        kinaba: 	return tvp.tv_sec != uvp.tv_sec ?
4e2933c620 2015-04-21        kinaba: 	    cmp(tvp.tv_sec, uvp.tv_sec) :
4e2933c620 2015-04-21        kinaba: 	    cmp(tvp.tv_usec, uvp.tv_usec);
4e2933c620 2015-04-21        kinaba: }+/
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: void timerclear(ref TIMEVAL tvp) {
4e2933c620 2015-04-21        kinaba: 	tvp.tv_sec = tvp.tv_usec = 0;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct HOSTENT {
4e2933c620 2015-04-21        kinaba: 	char*  h_name;
4e2933c620 2015-04-21        kinaba: 	char** h_aliases;
4e2933c620 2015-04-21        kinaba: 	short  h_addrtype;
4e2933c620 2015-04-21        kinaba: 	short  h_length;
4e2933c620 2015-04-21        kinaba: 	char** h_addr_list;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	char* h_addr() { return h_addr_list[0]; }
4e2933c620 2015-04-21        kinaba: 	char* h_addr(char* h) { return h_addr_list[0] = h; }
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias HOSTENT* PHOSTENT, LPHOSTENT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct LINGER {
4e2933c620 2015-04-21        kinaba: 	u_short l_onoff;
4e2933c620 2015-04-21        kinaba: 	u_short l_linger;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias LINGER* PLINGER, LPLINGER;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : DWORD {
4e2933c620 2015-04-21        kinaba: 	IOCPARAM_MASK = 0x7f,
4e2933c620 2015-04-21        kinaba: 	IOC_VOID      = 0x20000000,
4e2933c620 2015-04-21        kinaba: 	IOC_OUT       = 0x40000000,
4e2933c620 2015-04-21        kinaba: 	IOC_IN        = 0x80000000,
4e2933c620 2015-04-21        kinaba: 	IOC_INOUT     = IOC_IN|IOC_OUT
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // NOTE: This isn't even used anywhere...
4e2933c620 2015-04-21        kinaba: template _IO(char x, ubyte y) {
4e2933c620 2015-04-21        kinaba: 	const DWORD _IO = IOC_VOID | (cast(ubyte)x<<8) | y;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: template _IOR(char x, ubyte y, t) {
4e2933c620 2015-04-21        kinaba: 	const DWORD _IOR = IOC_OUT | ((t.sizeof & IOCPARAM_MASK)<<16)
4e2933c620 2015-04-21        kinaba: 		| (cast(ubyte)x<<8) | y;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: template _IOW(char x, ubyte y, t) {
4e2933c620 2015-04-21        kinaba: 	const DWORD _IOW = IOC_IN | ((t.sizeof & IOCPARAM_MASK)<<16)
4e2933c620 2015-04-21        kinaba: 		| (cast(ubyte)x<<8) | y;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : DWORD {
4e2933c620 2015-04-21        kinaba: 	FIONBIO    = _IOW!('f', 126, u_long),
4e2933c620 2015-04-21        kinaba: 	FIONREAD   = _IOR!('f', 127, u_long),
4e2933c620 2015-04-21        kinaba: 	FIOASYNC   = _IOW!('f', 125, u_long),
4e2933c620 2015-04-21        kinaba: 	SIOCSHIWAT = _IOW!('s',   0, u_long),
4e2933c620 2015-04-21        kinaba: 	SIOCGHIWAT = _IOR!('s',   1, u_long),
4e2933c620 2015-04-21        kinaba: 	SIOCSLOWAT = _IOW!('s',   2, u_long),
4e2933c620 2015-04-21        kinaba: 	SIOCGLOWAT = _IOR!('s',   3, u_long),
4e2933c620 2015-04-21        kinaba: 	SIOCATMARK = _IOR!('s',   7, u_long)
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct netent {
4e2933c620 2015-04-21        kinaba: 	char*  n_name;
4e2933c620 2015-04-21        kinaba: 	char** n_aliases;
4e2933c620 2015-04-21        kinaba: 	short  n_addrtype;
4e2933c620 2015-04-21        kinaba: 	u_long n_net;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct SERVENT {
4e2933c620 2015-04-21        kinaba: 	char*  s_name;
4e2933c620 2015-04-21        kinaba: 	char** s_aliases;
4e2933c620 2015-04-21        kinaba: 	short  s_port;
4e2933c620 2015-04-21        kinaba: 	char*  s_proto;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias SERVENT* PSERVENT, LPSERVENT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct PROTOENT {
4e2933c620 2015-04-21        kinaba: 	char*  p_name;
4e2933c620 2015-04-21        kinaba: 	char** p_aliases;
4e2933c620 2015-04-21        kinaba: 	short  p_proto;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias PROTOENT* PPROTOENT, LPPROTOENT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	IPPROTO_IP   =   0,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_ICMP =   1,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_IGMP =   2,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_GGP  =   3,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_TCP  =   6,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_PUP  =  12,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_UDP  =  17,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_IDP  =  22,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_ND   =  77,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_RAW  = 255,
4e2933c620 2015-04-21        kinaba: 	IPPROTO_MAX  = 256,
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	// IPv6 options
4e2933c620 2015-04-21        kinaba: 	IPPROTO_HOPOPTS  =  0, // IPv6 Hop-by-Hop options
4e2933c620 2015-04-21        kinaba: 	IPPROTO_IPV6     = 41, // IPv6 header
4e2933c620 2015-04-21        kinaba: 	IPPROTO_ROUTING  = 43, // IPv6 Routing header
4e2933c620 2015-04-21        kinaba: 	IPPROTO_FRAGMENT = 44, // IPv6 fragmentation header
4e2933c620 2015-04-21        kinaba: 	IPPROTO_ESP      = 50, // encapsulating security payload
4e2933c620 2015-04-21        kinaba: 	IPPROTO_AH       = 51, // authentication header
4e2933c620 2015-04-21        kinaba: 	IPPROTO_ICMPV6   = 58, // ICMPv6
4e2933c620 2015-04-21        kinaba: 	IPPROTO_NONE     = 59, // IPv6 no next header
4e2933c620 2015-04-21        kinaba: 	IPPROTO_DSTOPTS  = 60  // IPv6 Destination options
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	IPPORT_ECHO        =    7,
4e2933c620 2015-04-21        kinaba: 	IPPORT_DISCARD     =    9,
4e2933c620 2015-04-21        kinaba: 	IPPORT_SYSTAT      =   11,
4e2933c620 2015-04-21        kinaba: 	IPPORT_DAYTIME     =   13,
4e2933c620 2015-04-21        kinaba: 	IPPORT_NETSTAT     =   15,
4e2933c620 2015-04-21        kinaba: 	IPPORT_FTP         =   21,
4e2933c620 2015-04-21        kinaba: 	IPPORT_TELNET      =   23,
4e2933c620 2015-04-21        kinaba: 	IPPORT_SMTP        =   25,
4e2933c620 2015-04-21        kinaba: 	IPPORT_TIMESERVER  =   37,
4e2933c620 2015-04-21        kinaba: 	IPPORT_NAMESERVER  =   42,
4e2933c620 2015-04-21        kinaba: 	IPPORT_WHOIS       =   43,
4e2933c620 2015-04-21        kinaba: 	IPPORT_MTP         =   57,
4e2933c620 2015-04-21        kinaba: 	IPPORT_TFTP        =   69,
4e2933c620 2015-04-21        kinaba: 	IPPORT_RJE         =   77,
4e2933c620 2015-04-21        kinaba: 	IPPORT_FINGER      =   79,
4e2933c620 2015-04-21        kinaba: 	IPPORT_TTYLINK     =   87,
4e2933c620 2015-04-21        kinaba: 	IPPORT_SUPDUP      =   95,
4e2933c620 2015-04-21        kinaba: 	IPPORT_EXECSERVER  =  512,
4e2933c620 2015-04-21        kinaba: 	IPPORT_LOGINSERVER =  513,
4e2933c620 2015-04-21        kinaba: 	IPPORT_CMDSERVER   =  514,
4e2933c620 2015-04-21        kinaba: 	IPPORT_EFSSERVER   =  520,
4e2933c620 2015-04-21        kinaba: 	IPPORT_BIFFUDP     =  512,
4e2933c620 2015-04-21        kinaba: 	IPPORT_WHOSERVER   =  513,
4e2933c620 2015-04-21        kinaba: 	IPPORT_ROUTESERVER =  520,
4e2933c620 2015-04-21        kinaba: 	IPPORT_RESERVED    = 1024
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	IMPLINK_IP         =  155,
4e2933c620 2015-04-21        kinaba: 	IMPLINK_LOWEXPER   =  156,
4e2933c620 2015-04-21        kinaba: 	IMPLINK_HIGHEXPER  =  158
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct IN_ADDR {
4e2933c620 2015-04-21        kinaba: 	union {
4e2933c620 2015-04-21        kinaba: 		struct { u_char  s_b1, s_b2, s_b3, s_b4; }
4e2933c620 2015-04-21        kinaba: 		struct { u_char  s_net, s_host, s_lh, s_impno; }
4e2933c620 2015-04-21        kinaba: 		struct { u_short s_w1, s_w2; }
4e2933c620 2015-04-21        kinaba: 		struct { u_short s_w_, s_imp; } // Can I get rid of s_w_ using alignment tricks?
4e2933c620 2015-04-21        kinaba: 		u_long S_addr;
4e2933c620 2015-04-21        kinaba: 		u_long s_addr;
4e2933c620 2015-04-21        kinaba: 	}
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias IN_ADDR* PIN_ADDR, LPIN_ADDR;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // IN_CLASSx are not used anywhere or documented on MSDN.
4e2933c620 2015-04-21        kinaba: bool IN_CLASSA(int i) { return (i & 0x80000000) == 0; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const IN_CLASSA_NET    = 0xff000000;
4e2933c620 2015-04-21        kinaba: const IN_CLASSA_NSHIFT =         24;
4e2933c620 2015-04-21        kinaba: const IN_CLASSA_HOST   = 0x00ffffff;
4e2933c620 2015-04-21        kinaba: const IN_CLASSA_MAX    =        128;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: bool IN_CLASSB(int i) { return (i & 0xc0000000) == 0x80000000; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const IN_CLASSB_NET    = 0xffff0000;
4e2933c620 2015-04-21        kinaba: const IN_CLASSB_NSHIFT =         16;
4e2933c620 2015-04-21        kinaba: const IN_CLASSB_HOST   = 0x0000ffff;
4e2933c620 2015-04-21        kinaba: const IN_CLASSB_MAX    =      65536;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: bool IN_CLASSC(int i) { return (i & 0xe0000000) == 0xc0000000; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const IN_CLASSC_NET    = 0xffffff00;
4e2933c620 2015-04-21        kinaba: const IN_CLASSC_NSHIFT =          8;
4e2933c620 2015-04-21        kinaba: const IN_CLASSC_HOST   = 0x000000ff;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const u_long
4e2933c620 2015-04-21        kinaba: 	INADDR_ANY       = 0,
4e2933c620 2015-04-21        kinaba: 	INADDR_LOOPBACK  = 0x7F000001,
4e2933c620 2015-04-21        kinaba: 	INADDR_BROADCAST = 0xFFFFFFFF,
4e2933c620 2015-04-21        kinaba: 	INADDR_NONE      = 0xFFFFFFFF;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct SOCKADDR_IN {
4e2933c620 2015-04-21        kinaba: 	short   sin_family;
4e2933c620 2015-04-21        kinaba: 	u_short sin_port;
4e2933c620 2015-04-21        kinaba: 	IN_ADDR sin_addr;
4e2933c620 2015-04-21        kinaba: 	char[8] sin_zero;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const size_t
4e2933c620 2015-04-21        kinaba: 	WSADESCRIPTION_LEN = 256,
4e2933c620 2015-04-21        kinaba: 	WSASYS_STATUS_LEN  = 128;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSADATA {
4e2933c620 2015-04-21        kinaba: 	WORD   wVersion;
4e2933c620 2015-04-21        kinaba: 	WORD   wHighVersion;
4e2933c620 2015-04-21        kinaba: 	char[WSADESCRIPTION_LEN+1] szDescription;
4e2933c620 2015-04-21        kinaba: 	char[WSASYS_STATUS_LEN+1]  szSystemStatus;
4e2933c620 2015-04-21        kinaba: 	ushort iMaxSockets;
4e2933c620 2015-04-21        kinaba: 	ushort iMaxUdpDg;
4e2933c620 2015-04-21        kinaba: 	char*  lpVendorInfo;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias WSADATA* LPWSADATA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // This is not documented on the MSDN site
4e2933c620 2015-04-21        kinaba: const IP_OPTIONS = 1;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	SO_OPTIONS     =   1,
4e2933c620 2015-04-21        kinaba: 	SO_DEBUG       =   1,
4e2933c620 2015-04-21        kinaba: 	SO_ACCEPTCONN  =   2,
4e2933c620 2015-04-21        kinaba: 	SO_REUSEADDR   =   4,
4e2933c620 2015-04-21        kinaba: 	SO_KEEPALIVE   =   8,
4e2933c620 2015-04-21        kinaba: 	SO_DONTROUTE   =  16,
4e2933c620 2015-04-21        kinaba: 	SO_BROADCAST   =  32,
4e2933c620 2015-04-21        kinaba: 	SO_USELOOPBACK =  64,
4e2933c620 2015-04-21        kinaba: 	SO_LINGER      = 128,
4e2933c620 2015-04-21        kinaba: 	SO_OOBINLINE   = 256,
4e2933c620 2015-04-21        kinaba: 	SO_DONTLINGER  = ~SO_LINGER,
4e2933c620 2015-04-21        kinaba: 	SO_EXCLUSIVEADDRUSE= ~SO_REUSEADDR;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	SO_SNDBUF = 0x1001,
4e2933c620 2015-04-21        kinaba: 	SO_RCVBUF,
4e2933c620 2015-04-21        kinaba: 	SO_SNDLOWAT,
4e2933c620 2015-04-21        kinaba: 	SO_RCVLOWAT,
4e2933c620 2015-04-21        kinaba: 	SO_SNDTIMEO,
4e2933c620 2015-04-21        kinaba: 	SO_RCVTIMEO,
4e2933c620 2015-04-21        kinaba: 	SO_ERROR,
4e2933c620 2015-04-21        kinaba: 	SO_TYPE // = 0x1008
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const SOCKET INVALID_SOCKET = cast(SOCKET)(~0);
4e2933c620 2015-04-21        kinaba: const int SOCKET_ERROR = -1;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	SOCK_STREAM = 1,
4e2933c620 2015-04-21        kinaba: 	SOCK_DGRAM,
4e2933c620 2015-04-21        kinaba: 	SOCK_RAW,
4e2933c620 2015-04-21        kinaba: 	SOCK_RDM,
4e2933c620 2015-04-21        kinaba: 	SOCK_SEQPACKET
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int TCP_NODELAY = 0x0001;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	AF_UNSPEC,
4e2933c620 2015-04-21        kinaba: 	AF_UNIX,
4e2933c620 2015-04-21        kinaba: 	AF_INET,
4e2933c620 2015-04-21        kinaba: 	AF_IMPLINK,
4e2933c620 2015-04-21        kinaba: 	AF_PUP,
4e2933c620 2015-04-21        kinaba: 	AF_CHAOS,
4e2933c620 2015-04-21        kinaba: 	AF_IPX,  // =  6
4e2933c620 2015-04-21        kinaba: 	AF_NS       =  6,
4e2933c620 2015-04-21        kinaba: 	AF_ISO,
4e2933c620 2015-04-21        kinaba: 	AF_OSI      = AF_ISO,
4e2933c620 2015-04-21        kinaba: 	AF_ECMA,
4e2933c620 2015-04-21        kinaba: 	AF_DATAKIT,
4e2933c620 2015-04-21        kinaba: 	AF_CCITT,
4e2933c620 2015-04-21        kinaba: 	AF_SNA,
4e2933c620 2015-04-21        kinaba: 	AF_DECnet,
4e2933c620 2015-04-21        kinaba: 	AF_DLI,
4e2933c620 2015-04-21        kinaba: 	AF_LAT,
4e2933c620 2015-04-21        kinaba: 	AF_HYLINK,
4e2933c620 2015-04-21        kinaba: 	AF_APPLETALK,
4e2933c620 2015-04-21        kinaba: 	AF_NETBIOS,
4e2933c620 2015-04-21        kinaba: 	AF_VOICEVIEW,
4e2933c620 2015-04-21        kinaba: 	AF_FIREFOX,
4e2933c620 2015-04-21        kinaba: 	AF_UNKNOWN1,
4e2933c620 2015-04-21        kinaba: 	AF_BAN,
4e2933c620 2015-04-21        kinaba: 	AF_ATM,
4e2933c620 2015-04-21        kinaba: 	AF_INET6,
4e2933c620 2015-04-21        kinaba: 	// AF_CLUSTER, AF_12844 nad AF_NETDES are not documented on MSDN
4e2933c620 2015-04-21        kinaba: 	AF_CLUSTER,
4e2933c620 2015-04-21        kinaba: 	AF_12844,
4e2933c620 2015-04-21        kinaba: 	AF_IRDA, // = 26
4e2933c620 2015-04-21        kinaba: 	AF_NETDES   = 28,
4e2933c620 2015-04-21        kinaba: 	AF_MAX   // = 29
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct SOCKADDR {
4e2933c620 2015-04-21        kinaba: 	u_short  sa_family;
4e2933c620 2015-04-21        kinaba: 	char[14] sa_data;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias SOCKADDR* PSOCKADDR, LPSOCKADDR;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* Portable IPv6/IPv4 version of sockaddr.
4e2933c620 2015-04-21        kinaba:    Uses padding to force 8 byte alignment
4e2933c620 2015-04-21        kinaba:    and maximum size of 128 bytes */
4e2933c620 2015-04-21        kinaba: struct SOCKADDR_STORAGE {
4e2933c620 2015-04-21        kinaba:     short     ss_family;
4e2933c620 2015-04-21        kinaba:     char[6]   __ss_pad1;   // pad to 8
4e2933c620 2015-04-21        kinaba:     long      __ss_align;  // force alignment
4e2933c620 2015-04-21        kinaba:     char[112] __ss_pad2;   // pad to 128
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias SOCKADDR_STORAGE* PSOCKADDR_STORAGE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct sockproto {
4e2933c620 2015-04-21        kinaba: 	u_short sp_family;
4e2933c620 2015-04-21        kinaba: 	u_short sp_protocol;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	PF_UNSPEC    = AF_UNSPEC,
4e2933c620 2015-04-21        kinaba: 	PF_UNIX      = AF_UNIX,
4e2933c620 2015-04-21        kinaba: 	PF_INET      = AF_INET,
4e2933c620 2015-04-21        kinaba: 	PF_IMPLINK   = AF_IMPLINK,
4e2933c620 2015-04-21        kinaba: 	PF_PUP       = AF_PUP,
4e2933c620 2015-04-21        kinaba: 	PF_CHAOS     = AF_CHAOS,
4e2933c620 2015-04-21        kinaba: 	PF_NS        = AF_NS,
4e2933c620 2015-04-21        kinaba: 	PF_IPX       = AF_IPX,
4e2933c620 2015-04-21        kinaba: 	PF_ISO       = AF_ISO,
4e2933c620 2015-04-21        kinaba: 	PF_OSI       = AF_OSI,
4e2933c620 2015-04-21        kinaba: 	PF_ECMA      = AF_ECMA,
4e2933c620 2015-04-21        kinaba: 	PF_DATAKIT   = AF_DATAKIT,
4e2933c620 2015-04-21        kinaba: 	PF_CCITT     = AF_CCITT,
4e2933c620 2015-04-21        kinaba: 	PF_SNA       = AF_SNA,
4e2933c620 2015-04-21        kinaba: 	PF_DECnet    = AF_DECnet,
4e2933c620 2015-04-21        kinaba: 	PF_DLI       = AF_DLI,
4e2933c620 2015-04-21        kinaba: 	PF_LAT       = AF_LAT,
4e2933c620 2015-04-21        kinaba: 	PF_HYLINK    = AF_HYLINK,
4e2933c620 2015-04-21        kinaba: 	PF_APPLETALK = AF_APPLETALK,
4e2933c620 2015-04-21        kinaba: 	PF_VOICEVIEW = AF_VOICEVIEW,
4e2933c620 2015-04-21        kinaba: 	PF_FIREFOX   = AF_FIREFOX,
4e2933c620 2015-04-21        kinaba: 	PF_UNKNOWN1  = AF_UNKNOWN1,
4e2933c620 2015-04-21        kinaba: 	PF_BAN       = AF_BAN,
4e2933c620 2015-04-21        kinaba: 	PF_ATM       = AF_ATM,
4e2933c620 2015-04-21        kinaba: 	PF_INET6     = AF_INET6,
4e2933c620 2015-04-21        kinaba: 	PF_MAX       = AF_MAX
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int SOL_SOCKET = 0xFFFF;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int SOMAXCONN = 5;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	MSG_OOB       = 1,
4e2933c620 2015-04-21        kinaba: 	MSG_PEEK      = 2,
4e2933c620 2015-04-21        kinaba: 	MSG_DONTROUTE = 4,
4e2933c620 2015-04-21        kinaba: 	MSG_MAXIOVLEN = 16,
4e2933c620 2015-04-21        kinaba: 	MSG_PARTIAL   = 0x8000;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const size_t MAXGETHOSTSTRUCT = 1024;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // Not documented on MSDN
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	FD_READ_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_WRITE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_OOB_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ACCEPT_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_CONNECT_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_CLOSE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_QOS_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_GROUP_QOS_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ROUTING_INTERFACE_CHANGE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ADDRESS_LIST_CHANGE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_MAX_EVENTS // = 10
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	FD_READ                     = 1 << FD_READ_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_WRITE                    = 1 << FD_WRITE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_OOB                      = 1 << FD_OOB_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ACCEPT                   = 1 << FD_ACCEPT_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_CONNECT                  = 1 << FD_CONNECT_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_CLOSE                    = 1 << FD_CLOSE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_QOS                      = 1 << FD_QOS_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_GROUP_QOS                = 1 << FD_GROUP_QOS_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ROUTING_INTERFACE_CHANGE = 1 << FD_ROUTING_INTERFACE_CHANGE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ADDRESS_LIST_CHANGE      = 1 << FD_ADDRESS_LIST_CHANGE_BIT,
4e2933c620 2015-04-21        kinaba: 	FD_ALL_EVENTS               = (1 << FD_MAX_EVENTS) - 1;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	WSABASEERR         = 10000,
4e2933c620 2015-04-21        kinaba: 	WSAEINTR           = WSABASEERR + 4,
4e2933c620 2015-04-21        kinaba: 	WSAEBADF           = WSABASEERR + 9,
4e2933c620 2015-04-21        kinaba: 	WSAEACCES          = WSABASEERR + 13,
4e2933c620 2015-04-21        kinaba: 	WSAEFAULT          = WSABASEERR + 14,
4e2933c620 2015-04-21        kinaba: 	WSAEINVAL          = WSABASEERR + 22,
4e2933c620 2015-04-21        kinaba: 	WSAEMFILE          = WSABASEERR + 24,
4e2933c620 2015-04-21        kinaba: 	WSAEWOULDBLOCK     = WSABASEERR + 35,
4e2933c620 2015-04-21        kinaba: 	WSAEINPROGRESS     = WSABASEERR + 36, // deprecated on WinSock2
4e2933c620 2015-04-21        kinaba: 	WSAEALREADY        = WSABASEERR + 37,
4e2933c620 2015-04-21        kinaba: 	WSAENOTSOCK        = WSABASEERR + 38,
4e2933c620 2015-04-21        kinaba: 	WSAEDESTADDRREQ    = WSABASEERR + 39,
4e2933c620 2015-04-21        kinaba: 	WSAEMSGSIZE        = WSABASEERR + 40,
4e2933c620 2015-04-21        kinaba: 	WSAEPROTOTYPE      = WSABASEERR + 41,
4e2933c620 2015-04-21        kinaba: 	WSAENOPROTOOPT     = WSABASEERR + 42,
4e2933c620 2015-04-21        kinaba: 	WSAEPROTONOSUPPORT = WSABASEERR + 43,
4e2933c620 2015-04-21        kinaba: 	WSAESOCKTNOSUPPORT = WSABASEERR + 44,
4e2933c620 2015-04-21        kinaba: 	WSAEOPNOTSUPP      = WSABASEERR + 45,
4e2933c620 2015-04-21        kinaba: 	WSAEPFNOSUPPORT    = WSABASEERR + 46,
4e2933c620 2015-04-21        kinaba: 	WSAEAFNOSUPPORT    = WSABASEERR + 47,
4e2933c620 2015-04-21        kinaba: 	WSAEADDRINUSE      = WSABASEERR + 48,
4e2933c620 2015-04-21        kinaba: 	WSAEADDRNOTAVAIL   = WSABASEERR + 49,
4e2933c620 2015-04-21        kinaba: 	WSAENETDOWN        = WSABASEERR + 50,
4e2933c620 2015-04-21        kinaba: 	WSAENETUNREACH     = WSABASEERR + 51,
4e2933c620 2015-04-21        kinaba: 	WSAENETRESET       = WSABASEERR + 52,
4e2933c620 2015-04-21        kinaba: 	WSAECONNABORTED    = WSABASEERR + 53,
4e2933c620 2015-04-21        kinaba: 	WSAECONNRESET      = WSABASEERR + 54,
4e2933c620 2015-04-21        kinaba: 	WSAENOBUFS         = WSABASEERR + 55,
4e2933c620 2015-04-21        kinaba: 	WSAEISCONN         = WSABASEERR + 56,
4e2933c620 2015-04-21        kinaba: 	WSAENOTCONN        = WSABASEERR + 57,
4e2933c620 2015-04-21        kinaba: 	WSAESHUTDOWN       = WSABASEERR + 58,
4e2933c620 2015-04-21        kinaba: 	WSAETOOMANYREFS    = WSABASEERR + 59,
4e2933c620 2015-04-21        kinaba: 	WSAETIMEDOUT       = WSABASEERR + 60,
4e2933c620 2015-04-21        kinaba: 	WSAECONNREFUSED    = WSABASEERR + 61,
4e2933c620 2015-04-21        kinaba: 	WSAELOOP           = WSABASEERR + 62,
4e2933c620 2015-04-21        kinaba: 	WSAENAMETOOLONG    = WSABASEERR + 63,
4e2933c620 2015-04-21        kinaba: 	WSAEHOSTDOWN       = WSABASEERR + 64,
4e2933c620 2015-04-21        kinaba: 	WSAEHOSTUNREACH    = WSABASEERR + 65,
4e2933c620 2015-04-21        kinaba: 	WSAENOTEMPTY       = WSABASEERR + 66,
4e2933c620 2015-04-21        kinaba: 	WSAEPROCLIM        = WSABASEERR + 67,
4e2933c620 2015-04-21        kinaba: 	WSAEUSERS          = WSABASEERR + 68,
4e2933c620 2015-04-21        kinaba: 	WSAEDQUOT          = WSABASEERR + 69,
4e2933c620 2015-04-21        kinaba: 	WSAESTALE          = WSABASEERR + 70,
4e2933c620 2015-04-21        kinaba: 	WSAEREMOTE         = WSABASEERR + 71,
4e2933c620 2015-04-21        kinaba: 	WSAEDISCON         = WSABASEERR + 101,
4e2933c620 2015-04-21        kinaba: 	WSASYSNOTREADY     = WSABASEERR + 91,
4e2933c620 2015-04-21        kinaba: 	WSAVERNOTSUPPORTED = WSABASEERR + 92,
4e2933c620 2015-04-21        kinaba: 	WSANOTINITIALISED  = WSABASEERR + 93,
4e2933c620 2015-04-21        kinaba: 	WSAHOST_NOT_FOUND  = WSABASEERR + 1001,
4e2933c620 2015-04-21        kinaba: 	WSATRY_AGAIN       = WSABASEERR + 1002,
4e2933c620 2015-04-21        kinaba: 	WSANO_RECOVERY     = WSABASEERR + 1003,
4e2933c620 2015-04-21        kinaba: 	WSANO_DATA         = WSABASEERR + 1004,
4e2933c620 2015-04-21        kinaba: 	WSANO_ADDRESS      = WSANO_DATA,
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	// WinSock2 specific error codes
4e2933c620 2015-04-21        kinaba: 	WSAENOMORE             = WSABASEERR + 102,
4e2933c620 2015-04-21        kinaba: 	WSAECANCELLED          = WSABASEERR + 103,
4e2933c620 2015-04-21        kinaba: 	WSAEINVALIDPROCTABLE   = WSABASEERR + 104,
4e2933c620 2015-04-21        kinaba: 	WSAEINVALIDPROVIDER    = WSABASEERR + 105,
4e2933c620 2015-04-21        kinaba: 	WSAEPROVIDERFAILEDINIT = WSABASEERR + 106,
4e2933c620 2015-04-21        kinaba: 	WSASYSCALLFAILURE      = WSABASEERR + 107,
4e2933c620 2015-04-21        kinaba: 	WSASERVICE_NOT_FOUND   = WSABASEERR + 108,
4e2933c620 2015-04-21        kinaba: 	WSATYPE_NOT_FOUND      = WSABASEERR + 109,
4e2933c620 2015-04-21        kinaba: 	WSA_E_NO_MORE          = WSABASEERR + 110,
4e2933c620 2015-04-21        kinaba: 	WSA_E_CANCELLED        = WSABASEERR + 111,
4e2933c620 2015-04-21        kinaba: 	WSAEREFUSED            = WSABASEERR + 112,
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	// WS QualityofService errors
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_RECEIVERS          = WSABASEERR + 1005,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_SENDERS            = WSABASEERR + 1006,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_NO_SENDERS         = WSABASEERR + 1007,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_NO_RECEIVERS       = WSABASEERR + 1008,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_REQUEST_CONFIRMED  = WSABASEERR + 1009,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_ADMISSION_FAILURE  = WSABASEERR + 1010,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_POLICY_FAILURE     = WSABASEERR + 1011,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_BAD_STYLE          = WSABASEERR + 1012,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_BAD_OBJECT         = WSABASEERR + 1013,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_GENERIC_ERROR      = WSABASEERR + 1015,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_ESERVICETYPE       = WSABASEERR + 1016,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFLOWSPEC          = WSABASEERR + 1017,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EPROVSPECBUF       = WSABASEERR + 1018,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFILTERSTYLE       = WSABASEERR + 1019,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFILTERTYPE        = WSABASEERR + 1020,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFILTERCOUNT       = WSABASEERR + 1021,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EOBJLENGTH         = WSABASEERR + 1022,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFLOWCOUNT         = WSABASEERR + 1023,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EUNKOWNPSOBJ       = WSABASEERR + 1024,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EPOLICYOBJ         = WSABASEERR + 1025,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EFLOWDESC          = WSABASEERR + 1026,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EPSFLOWSPEC        = WSABASEERR + 1027,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_EPSFILTERSPEC      = WSABASEERR + 1028,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_ESDMODEOBJ         = WSABASEERR + 1029,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_ESHAPERATEOBJ      = WSABASEERR + 1030,
4e2933c620 2015-04-21        kinaba: 	WSA_QOS_RESERVED_PETYPE    = WSABASEERR + 1031
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAGetLastError h_errno;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	HOST_NOT_FOUND = WSAHOST_NOT_FOUND,
4e2933c620 2015-04-21        kinaba: 	TRY_AGAIN      = WSATRY_AGAIN,
4e2933c620 2015-04-21        kinaba: 	NO_RECOVERY    = WSANO_RECOVERY,
4e2933c620 2015-04-21        kinaba: 	NO_DATA        = WSANO_DATA,
4e2933c620 2015-04-21        kinaba: 	NO_ADDRESS     = WSANO_ADDRESS
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern (Windows) {
4e2933c620 2015-04-21        kinaba: 	SOCKET accept(SOCKET, SOCKADDR*, int*);
9b639cf2d6 2015-05-05        kinaba: 	int bind(SOCKET, const(SOCKADDR)*, int);
4e2933c620 2015-04-21        kinaba: 	int closesocket(SOCKET);
9b639cf2d6 2015-05-05        kinaba: 	int connect(SOCKET, const(SOCKADDR)*, int);
4e2933c620 2015-04-21        kinaba: 	int ioctlsocket(SOCKET, int, u_long*);
4e2933c620 2015-04-21        kinaba: 	int getpeername(SOCKET, SOCKADDR*, int*);
4e2933c620 2015-04-21        kinaba: 	int getsockname(SOCKET, SOCKADDR*, int*);
4e2933c620 2015-04-21        kinaba: 	int getsockopt(SOCKET, int, int, void*, int*);
9b639cf2d6 2015-05-05        kinaba: 	uint inet_addr(const(char)*);
4e2933c620 2015-04-21        kinaba: 	int listen(SOCKET, int);
4e2933c620 2015-04-21        kinaba: 	int recv(SOCKET, ubyte*, int, int);
4e2933c620 2015-04-21        kinaba: 	int recvfrom(SOCKET, ubyte*, int, int, SOCKADDR*, int*);
9b639cf2d6 2015-05-05        kinaba: 	int send(SOCKET, const(ubyte)*, int, int);
9b639cf2d6 2015-05-05        kinaba: 	int sendto(SOCKET, const(ubyte)*, int, int, const(SOCKADDR)*, int);
9b639cf2d6 2015-05-05        kinaba: 	int setsockopt(SOCKET, int, int, const(void)*, int);
4e2933c620 2015-04-21        kinaba: 	int shutdown(SOCKET, int);
4e2933c620 2015-04-21        kinaba: 	SOCKET socket(int, int, int);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&accept) LPFN_ACCEPT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&bind) LPFN_BIND;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&closesocket) LPFN_CLOSESOCKET;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&connect) LPFN_CONNECT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&ioctlsocket) LPFN_IOCTLSOCKET;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getpeername) LPFN_GETPEERNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getsockname) LPFN_GETSOCKNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getsockopt) LPFN_GETSOCKOPT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&inet_addr) LPFN_INET_ADDR;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&listen) LPFN_LISTEN;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&recv) LPFN_RECV;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&recvfrom) LPFN_RECVFROM;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&send) LPFN_SEND;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&sendto) LPFN_SENDTO;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&setsockopt) LPFN_SETSOCKOPT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&shutdown) LPFN_SHUTDOWN;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&socket) LPFN_SOCKET;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	char* inet_ntoa(IN_ADDR);
9b639cf2d6 2015-05-05        kinaba: 	HOSTENT* gethostbyaddr(const(char)*, int, int);
9b639cf2d6 2015-05-05        kinaba: 	HOSTENT* gethostbyname(const(char)*);
9b639cf2d6 2015-05-05        kinaba: 	SERVENT* getservbyport(int, const(char)*);
9b639cf2d6 2015-05-05        kinaba: 	SERVENT* getservbyname(const(char)*, const(char)*);
4e2933c620 2015-04-21        kinaba: 	PROTOENT* getprotobynumber(int);
9b639cf2d6 2015-05-05        kinaba: 	PROTOENT* getprotobyname(const(char)*);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	/* NOTE: DK: in the original headers, these were declared with
4e2933c620 2015-04-21        kinaba: 	   PASCAL linkage.  Since this is at odds with the definition
4e2933c620 2015-04-21        kinaba: 	   of the functions themselves, and also since MinGW seems to
4e2933c620 2015-04-21        kinaba: 	   treat the two interchangably, I have moved them here. */
4e2933c620 2015-04-21        kinaba: 	alias typeof(&inet_ntoa) LPFN_INET_NTOA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&gethostbyaddr) LPFN_GETHOSTBYADDR;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&gethostbyname) LPFN_GETHOSTBYNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getservbyport) LPFN_GETSERVBYPORT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getservbyname) LPFN_GETSERVBYNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getprotobynumber) LPFN_GETPROTOBYNUMBER;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&getprotobyname) LPFN_GETPROTOBYNAME;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	int WSAStartup(WORD, LPWSADATA);
4e2933c620 2015-04-21        kinaba: 	int WSACleanup();
4e2933c620 2015-04-21        kinaba: 	void WSASetLastError(int);
4e2933c620 2015-04-21        kinaba: 	int WSAGetLastError();
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAStartup) LPFN_WSASTARTUP;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSACleanup) LPFN_WSACLEANUP;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASetLastError) LPFN_WSASETLASTERROR;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetLastError) LPFN_WSAGETLASTERROR;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /*
4e2933c620 2015-04-21        kinaba:  * Pseudo-blocking functions are deprecated in WinSock2
4e2933c620 2015-04-21        kinaba:  * spec. Use threads instead.
4e2933c620 2015-04-21        kinaba:  */
4e2933c620 2015-04-21        kinaba: deprecated extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	BOOL WSAIsBlocking();
4e2933c620 2015-04-21        kinaba: 	int WSAUnhookBlockingHook();
4e2933c620 2015-04-21        kinaba: 	FARPROC WSASetBlockingHook(FARPROC);
4e2933c620 2015-04-21        kinaba: 	int WSACancelBlockingCall();
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAIsBlocking) LPFN_WSAISBLOCKING;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAUnhookBlockingHook) LPFN_WSAUNHOOKBLOCKINGHOOK;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASetBlockingHook) LPFN_WSASETBLOCKINGHOOK;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSACancelBlockingCall) LPFN_WSACANCELBLOCKINGCALL;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
9b639cf2d6 2015-05-05        kinaba: 	HANDLE WSAAsyncGetServByName(HWND, u_int, const(char)*, const(char)*, char*, int);
9b639cf2d6 2015-05-05        kinaba: 	HANDLE WSAAsyncGetServByPort(HWND, u_int, int, const(char)*, char*, int);
9b639cf2d6 2015-05-05        kinaba: 	HANDLE WSAAsyncGetProtoByName(HWND, u_int, const(char)*, char*, int);
4e2933c620 2015-04-21        kinaba: 	HANDLE WSAAsyncGetProtoByNumber(HWND, u_int, int, char*, int);
9b639cf2d6 2015-05-05        kinaba: 	HANDLE WSAAsyncGetHostByName(HWND, u_int, const(char)*, char*, int);
9b639cf2d6 2015-05-05        kinaba: 	HANDLE WSAAsyncGetHostByAddr(HWND, u_int, const(char)*, int, int, char*, int);
4e2933c620 2015-04-21        kinaba: 	int WSACancelAsyncRequest(HANDLE);
4e2933c620 2015-04-21        kinaba: 	int WSAAsyncSelect(SOCKET, HWND, u_int, long);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetServByName) LPFN_WSAAsyncGetServByName;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetServByPort) LPFN_WSAASYNCGETSERVBYPORT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetProtoByName) LPFN_WSAASYNCGETPROTOBYNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetProtoByNumber) LPFN_WSAASYNCGETPROTOBYNUMBER;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetHostByName) LPFN_WSAASYNCGETHOSTBYNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncGetHostByAddr) LPFN_WSAASYNCGETHOSTBYADDR;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSACancelAsyncRequest) LPFN_WSACANCELASYNCREQUEST;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAsyncSelect) LPFN_WSAASYNCSELECT;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	u_long htonl(u_long);
4e2933c620 2015-04-21        kinaba: 	u_long ntohl(u_long);
4e2933c620 2015-04-21        kinaba: 	u_short htons(u_short);
4e2933c620 2015-04-21        kinaba: 	u_short ntohs(u_short);
9b639cf2d6 2015-05-05        kinaba: 	int select(int nfds, fd_set*, fd_set*, fd_set*, const(TIMEVAL)*);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&htonl) LPFN_HTONL;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&ntohl) LPFN_NTOHL;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&htons) LPFN_HTONS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&ntohs) LPFN_NTOHS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&select) LPFN_SELECT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	int gethostname(char*, int);
4e2933c620 2015-04-21        kinaba: 	alias typeof(&gethostname) LPFN_GETHOSTNAME;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias MAKELONG WSAMAKEASYNCREPLY, WSAMAKESELECTREPLY;
4e2933c620 2015-04-21        kinaba: alias LOWORD WSAGETASYNCBUFLEN, WSAGETSELECTEVENT;
4e2933c620 2015-04-21        kinaba: alias HIWORD WSAGETASYNCERROR, WSAGETSELECTERROR;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias INADDR_ANY ADDR_ANY;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: bool IN_CLASSD(int i) { return (i & 0xf0000000) == 0xe0000000; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const IN_CLASSD_NET    = 0xf0000000;
4e2933c620 2015-04-21        kinaba: const IN_CLASSD_NSHIFT =         28;
4e2933c620 2015-04-21        kinaba: const IN_CLASSD_HOST   = 0x0fffffff;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias IN_CLASSD IN_MULTICAST;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const FROM_PROTOCOL_INFO = -1;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	SO_GROUP_ID = 0x2001,
4e2933c620 2015-04-21        kinaba: 	SO_GROUP_PRIORITY,
4e2933c620 2015-04-21        kinaba: 	SO_MAX_MSG_SIZE,
4e2933c620 2015-04-21        kinaba: 	SO_PROTOCOL_INFOA,
4e2933c620 2015-04-21        kinaba: 	SO_PROTOCOL_INFOW
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: // NOTE: These are logically part of the previous enum, but you can't
4e2933c620 2015-04-21        kinaba: // have version statements in an enum body...
4e2933c620 2015-04-21        kinaba: version(Unicode)
4e2933c620 2015-04-21        kinaba: 	const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW;
4e2933c620 2015-04-21        kinaba: else
4e2933c620 2015-04-21        kinaba: 	const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const PVD_CONFIG = 0x3001;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const MSG_INTERRUPT = 0x10;
4e2933c620 2015-04-21        kinaba: //const MSG_MAXIOVLEN = 16; // Already declared above
4e2933c620 2015-04-21        kinaba: 
9b639cf2d6 2015-05-05        kinaba: mixin DECLARE_HANDLE!("WSAEVENT");
9b639cf2d6 2015-05-05        kinaba: alias WSAEVENT* LPWSAEVENT;
4e2933c620 2015-04-21        kinaba: alias OVERLAPPED WSAOVERLAPPED;
4e2933c620 2015-04-21        kinaba: alias OVERLAPPED* LPWSAOVERLAPPED;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: private import win32.winerror;
4e2933c620 2015-04-21        kinaba: private import win32.winbase;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	WSA_IO_PENDING        = ERROR_IO_PENDING,
4e2933c620 2015-04-21        kinaba: 	WSA_IO_INCOMPLETE     = ERROR_IO_INCOMPLETE,
4e2933c620 2015-04-21        kinaba: 	WSA_INVALID_HANDLE    = ERROR_INVALID_HANDLE,
4e2933c620 2015-04-21        kinaba: 	WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER,
4e2933c620 2015-04-21        kinaba: 	WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY,
4e2933c620 2015-04-21        kinaba: 	WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
9b639cf2d6 2015-05-05        kinaba: const WSA_INVALID_EVENT = cast(WSAEVENT)HANDLE.init;
4e2933c620 2015-04-21        kinaba: const WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS;
4e2933c620 2015-04-21        kinaba: const WSA_WAIT_FAILED = cast(DWORD)-1;
4e2933c620 2015-04-21        kinaba: const WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;
4e2933c620 2015-04-21        kinaba: const WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION;
4e2933c620 2015-04-21        kinaba: const WSA_WAIT_TIMEOUT = WAIT_TIMEOUT;
4e2933c620 2015-04-21        kinaba: const WSA_INFINITE = INFINITE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSABUF {
4e2933c620 2015-04-21        kinaba: 	uint  len;
4e2933c620 2015-04-21        kinaba: 	char* buf;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSABUF* LPWSABUF;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum GUARANTEE {
4e2933c620 2015-04-21        kinaba: 	BestEffortService,
4e2933c620 2015-04-21        kinaba: 	ControlledLoadService,
4e2933c620 2015-04-21        kinaba: 	PredictiveService,
4e2933c620 2015-04-21        kinaba: 	GuaranteedDelayService,
4e2933c620 2015-04-21        kinaba: 	GuaranteedService
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* TODO: FLOWSPEC and related definitions belong in qos.h */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /*
4e2933c620 2015-04-21        kinaba:    Windows Sockets 2 Application Programming Interface,
4e2933c620 2015-04-21        kinaba:    revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE
4e2933c620 2015-04-21        kinaba:    and the elements of _flowspec, but the type uint32 is not defined
4e2933c620 2015-04-21        kinaba:    or used anywhere else in the w32api. For now, just use
4e2933c620 2015-04-21        kinaba:    unsigned int, which is 32 bits on _WIN32 and _WIN64.
4e2933c620 2015-04-21        kinaba: */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias uint SERVICETYPE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct FLOWSPEC {
4e2933c620 2015-04-21        kinaba: 	uint        TokenRate;
4e2933c620 2015-04-21        kinaba: 	uint        TokenBucketSize;
4e2933c620 2015-04-21        kinaba: 	uint        PeakBandwidth;
4e2933c620 2015-04-21        kinaba: 	uint        Latency;
4e2933c620 2015-04-21        kinaba: 	uint        DelayVariation;
4e2933c620 2015-04-21        kinaba: 	SERVICETYPE ServiceType;
4e2933c620 2015-04-21        kinaba: 	uint        MaxSduSize;
4e2933c620 2015-04-21        kinaba: 	uint        MinimumPolicedSize;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias FLOWSPEC* PFLOWSPEC, LPFLOWSPEC;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct QOS
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	FLOWSPEC SendingFlowspec;
4e2933c620 2015-04-21        kinaba: 	FLOWSPEC ReceivingFlowspec;
4e2933c620 2015-04-21        kinaba: 	WSABUF   ProviderSpecific;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias QOS* LPQOS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	CF_ACCEPT,
4e2933c620 2015-04-21        kinaba: 	CF_REJECT,
4e2933c620 2015-04-21        kinaba: 	CF_DEFER
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // REM: Already defined above
4e2933c620 2015-04-21        kinaba: /*enum {
4e2933c620 2015-04-21        kinaba: 	SD_RECEIVE,
4e2933c620 2015-04-21        kinaba: 	SD_SEND,
4e2933c620 2015-04-21        kinaba: 	SD_BOTH
4e2933c620 2015-04-21        kinaba: }*/
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias uint GROUP;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum {
4e2933c620 2015-04-21        kinaba: 	SG_UNCONSTRAINED_GROUP = 0x01,
4e2933c620 2015-04-21        kinaba: 	SG_CONSTRAINED_GROUP
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSANETWORKEVENTS {
4e2933c620 2015-04-21        kinaba: 	int lNetworkEvents;
4e2933c620 2015-04-21        kinaba: 	int[FD_MAX_EVENTS] iErrorCode;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSANETWORKEVENTS* LPWSANETWORKEVENTS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const MAX_PROTOCOL_CHAIN = 7;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const BASE_PROTOCOL    = 1;
4e2933c620 2015-04-21        kinaba: const LAYERED_PROTOCOL = 0;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum WSAESETSERVICEOP
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	RNRSERVICE_REGISTER = 0,
4e2933c620 2015-04-21        kinaba: 	RNRSERVICE_DEREGISTER,
4e2933c620 2015-04-21        kinaba: 	RNRSERVICE_DELETE
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAESETSERVICEOP* PWSAESETSERVICEOP, LPWSAESETSERVICEOP;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct AFPROTOCOLS {
4e2933c620 2015-04-21        kinaba: 	INT iAddressFamily;
4e2933c620 2015-04-21        kinaba: 	INT iProtocol;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias AFPROTOCOLS* PAFPROTOCOLS, LPAFPROTOCOLS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum WSAECOMPARATOR
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	COMP_EQUAL = 0,
4e2933c620 2015-04-21        kinaba: 	COMP_NOTLESS
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAECOMPARATOR* PWSAECOMPARATOR, LPWSAECOMPARATOR;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAVERSION
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	DWORD          dwVersion;
4e2933c620 2015-04-21        kinaba: 	WSAECOMPARATOR ecHow;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAVERSION* PWSAVERSION, LPWSAVERSION;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // Import for SOCKET_ADDRESS, CSADDR_INFO
4e2933c620 2015-04-21        kinaba: // import win32.nspapi;
4e2933c620 2015-04-21        kinaba: //#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */
4e2933c620 2015-04-21        kinaba: //#define __CSADDR_T_DEFINED
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct SOCKET_ADDRESS {
4e2933c620 2015-04-21        kinaba: 	LPSOCKADDR lpSockaddr;
4e2933c620 2015-04-21        kinaba: 	INT        iSockaddrLength;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CSADDR_INFO {
4e2933c620 2015-04-21        kinaba: 	SOCKET_ADDRESS LocalAddr;
4e2933c620 2015-04-21        kinaba: 	SOCKET_ADDRESS RemoteAddr;
4e2933c620 2015-04-21        kinaba: 	INT            iSocketType;
4e2933c620 2015-04-21        kinaba: 	INT            iProtocol;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: //#endif
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct SOCKET_ADDRESS_LIST {
4e2933c620 2015-04-21        kinaba:     INT               iAddressCount;
4e2933c620 2015-04-21        kinaba:     SOCKET_ADDRESS[1] _Address;
4e2933c620 2015-04-21        kinaba:     SOCKET_ADDRESS* Address() { return _Address.ptr; }
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias SOCKET_ADDRESS_LIST* LPSOCKET_ADDRESS_LIST;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // TODO: Import wtypes/nspapi?
4e2933c620 2015-04-21        kinaba: //#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
4e2933c620 2015-04-21        kinaba: //#define __BLOB_T_DEFINED
4e2933c620 2015-04-21        kinaba: struct BLOB {
4e2933c620 2015-04-21        kinaba: 	ULONG cbSize;
4e2933c620 2015-04-21        kinaba: 	BYTE* pBlobData;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias BLOB* PBLOB, LPBLOB;
4e2933c620 2015-04-21        kinaba: //#endif
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAQUERYSETA
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	DWORD         dwSize;
4e2933c620 2015-04-21        kinaba: 	LPSTR         lpszServiceInstanceName;
4e2933c620 2015-04-21        kinaba: 	LPGUID        lpServiceClassId;
4e2933c620 2015-04-21        kinaba: 	LPWSAVERSION  lpVersion;
4e2933c620 2015-04-21        kinaba: 	LPSTR         lpszComment;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	LPGUID        lpNSProviderId;
4e2933c620 2015-04-21        kinaba: 	LPSTR         lpszContext;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNumberOfProtocols;
4e2933c620 2015-04-21        kinaba: 	LPAFPROTOCOLS lpafpProtocols;
4e2933c620 2015-04-21        kinaba: 	LPSTR         lpszQueryString;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNumberOfCsAddrs;
4e2933c620 2015-04-21        kinaba: 	LPCSADDR_INFO lpcsaBuffer;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwOutputFlags;
4e2933c620 2015-04-21        kinaba: 	LPBLOB        lpBlob;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAQUERYSETA* PWSAQUERYSETA, LPWSAQUERYSETA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAQUERYSETW
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	DWORD         dwSize;
4e2933c620 2015-04-21        kinaba: 	LPWSTR        lpszServiceInstanceName;
4e2933c620 2015-04-21        kinaba: 	LPGUID        lpServiceClassId;
4e2933c620 2015-04-21        kinaba: 	LPWSAVERSION  lpVersion;
4e2933c620 2015-04-21        kinaba: 	LPWSTR        lpszComment;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	LPGUID        lpNSProviderId;
4e2933c620 2015-04-21        kinaba: 	LPWSTR        lpszContext;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNumberOfProtocols;
4e2933c620 2015-04-21        kinaba: 	LPAFPROTOCOLS lpafpProtocols;
4e2933c620 2015-04-21        kinaba: 	LPWSTR        lpszQueryString;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwNumberOfCsAddrs;
4e2933c620 2015-04-21        kinaba: 	LPCSADDR_INFO lpcsaBuffer;
4e2933c620 2015-04-21        kinaba: 	DWORD         dwOutputFlags;
4e2933c620 2015-04-21        kinaba: 	LPBLOB        lpBlob;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAQUERYSETW* PWSAQUERYSETW, LPWSAQUERYSETW;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias WSAQUERYSETW WSAQUERYSET;
4e2933c620 2015-04-21        kinaba: 	alias PWSAQUERYSETW PWSAQUERYSET;
4e2933c620 2015-04-21        kinaba: 	alias LPWSAQUERYSETW LPWSAQUERYSET;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias WSAQUERYSETA WSAQUERYSET;
4e2933c620 2015-04-21        kinaba: 	alias PWSAQUERYSETA PWSAQUERYSET;
4e2933c620 2015-04-21        kinaba: 	alias LPWSAQUERYSETA LPWSAQUERYSET;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	LUP_DEEP                = 0x0001,
4e2933c620 2015-04-21        kinaba: 	LUP_CONTAINERS          = 0x0002,
4e2933c620 2015-04-21        kinaba: 	LUP_NOCONTAINERS        = 0x0004,
4e2933c620 2015-04-21        kinaba: 	LUP_NEAREST             = 0x0008,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_NAME         = 0x0010,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_TYPE         = 0x0020,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_VERSION      = 0x0040,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_COMMENT      = 0x0080,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_ADDR         = 0x0100,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_BLOB         = 0x0200,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_ALIASES      = 0x0400,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_QUERY_STRING = 0x0800,
4e2933c620 2015-04-21        kinaba: 	LUP_RETURN_ALL          = 0x0FF0,
4e2933c620 2015-04-21        kinaba: 	LUP_RES_SERVICE         = 0x8000,
4e2933c620 2015-04-21        kinaba: 	LUP_FLUSHCACHE          = 0x1000,
4e2933c620 2015-04-21        kinaba: 	LUP_FLUSHPREVIOUS       = 0x2000;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSANSCLASSINFOA
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	LPSTR  lpszName;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwValueType;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwValueSize;
4e2933c620 2015-04-21        kinaba: 	LPVOID lpValue;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSANSCLASSINFOA* PWSANSCLASSINFOA, LPWSANSCLASSINFOA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSANSCLASSINFOW
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	LPWSTR lpszName;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwValueType;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwValueSize;
4e2933c620 2015-04-21        kinaba: 	LPVOID lpValue;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSANSCLASSINFOW* PWSANSCLASSINFOW, LPWSANSCLASSINFOW;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias WSANSCLASSINFOW WSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSANSCLASSINFOW PWSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSANSCLASSINFOW LPWSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias WSANSCLASSINFOA WSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSANSCLASSINFOA PWSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSANSCLASSINFOA LPWSANSCLASSINFO;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSASERVICECLASSINFOA
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	LPGUID            lpServiceClassId;
4e2933c620 2015-04-21        kinaba: 	LPSTR             lpszServiceClassName;
4e2933c620 2015-04-21        kinaba: 	DWORD             dwCount;
4e2933c620 2015-04-21        kinaba: 	LPWSANSCLASSINFOA lpClassInfos;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSASERVICECLASSINFOA* PWSASERVICECLASSINFOA, LPWSASERVICECLASSINFOA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSASERVICECLASSINFOW
4e2933c620 2015-04-21        kinaba: {
4e2933c620 2015-04-21        kinaba: 	LPGUID            lpServiceClassId;
4e2933c620 2015-04-21        kinaba: 	LPWSTR            lpszServiceClassName;
4e2933c620 2015-04-21        kinaba: 	DWORD             dwCount;
4e2933c620 2015-04-21        kinaba: 	LPWSANSCLASSINFOW lpClassInfos;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSASERVICECLASSINFOW* PWSASERVICECLASSINFOW, LPWSASERVICECLASSINFOW;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias WSASERVICECLASSINFOW WSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias WSASERVICECLASSINFOA WSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSANAMESPACE_INFOA {
4e2933c620 2015-04-21        kinaba: 	GUID  NSProviderId;
4e2933c620 2015-04-21        kinaba: 	DWORD dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	BOOL  fActive;
4e2933c620 2015-04-21        kinaba: 	DWORD dwVersion;
4e2933c620 2015-04-21        kinaba: 	LPSTR lpszIdentifier;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSANAMESPACE_INFOA* PWSANAMESPACE_INFOA, LPWSANAMESPACE_INFOA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSANAMESPACE_INFOW {
4e2933c620 2015-04-21        kinaba: 	GUID   NSProviderId;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwNameSpace;
4e2933c620 2015-04-21        kinaba: 	BOOL   fActive;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwVersion;
4e2933c620 2015-04-21        kinaba: 	LPWSTR lpszIdentifier;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSANAMESPACE_INFOW* PWSANAMESPACE_INFOW, LPWSANAMESPACE_INFOW;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias WSANAMESPACE_INFOW WSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias WSANAMESPACE_INFOA WSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: 	alias PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAPROTOCOLCHAIN {
4e2933c620 2015-04-21        kinaba: 	int                       ChainLen;
4e2933c620 2015-04-21        kinaba: 	DWORD[MAX_PROTOCOL_CHAIN] ChainEntries;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const WSAPROTOCOL_LEN = 255;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAPROTOCOL_INFOA {
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags1;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags2;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags3;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags4;
4e2933c620 2015-04-21        kinaba: 	DWORD dwProviderFlags;
4e2933c620 2015-04-21        kinaba: 	GUID ProviderId;
4e2933c620 2015-04-21        kinaba: 	DWORD dwCatalogEntryId;
4e2933c620 2015-04-21        kinaba: 	WSAPROTOCOLCHAIN ProtocolChain;
4e2933c620 2015-04-21        kinaba: 	int iVersion;
4e2933c620 2015-04-21        kinaba: 	int iAddressFamily;
4e2933c620 2015-04-21        kinaba: 	int iMaxSockAddr;
4e2933c620 2015-04-21        kinaba: 	int iMinSockAddr;
4e2933c620 2015-04-21        kinaba: 	int iSocketType;
4e2933c620 2015-04-21        kinaba: 	int iProtocol;
4e2933c620 2015-04-21        kinaba: 	int iProtocolMaxOffset;
4e2933c620 2015-04-21        kinaba: 	int iNetworkByteOrder;
4e2933c620 2015-04-21        kinaba: 	int iSecurityScheme;
4e2933c620 2015-04-21        kinaba: 	DWORD dwMessageSize;
4e2933c620 2015-04-21        kinaba: 	DWORD dwProviderReserved;
4e2933c620 2015-04-21        kinaba: 	CHAR[WSAPROTOCOL_LEN+1] szProtocol;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAPROTOCOL_INFOA* LPWSAPROTOCOL_INFOA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSAPROTOCOL_INFOW {
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags1;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags2;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags3;
4e2933c620 2015-04-21        kinaba: 	DWORD dwServiceFlags4;
4e2933c620 2015-04-21        kinaba: 	DWORD dwProviderFlags;
4e2933c620 2015-04-21        kinaba: 	GUID ProviderId;
4e2933c620 2015-04-21        kinaba: 	DWORD dwCatalogEntryId;
4e2933c620 2015-04-21        kinaba: 	WSAPROTOCOLCHAIN ProtocolChain;
4e2933c620 2015-04-21        kinaba: 	int iVersion;
4e2933c620 2015-04-21        kinaba: 	int iAddressFamily;
4e2933c620 2015-04-21        kinaba: 	int iMaxSockAddr;
4e2933c620 2015-04-21        kinaba: 	int iMinSockAddr;
4e2933c620 2015-04-21        kinaba: 	int iSocketType;
4e2933c620 2015-04-21        kinaba: 	int iProtocol;
4e2933c620 2015-04-21        kinaba: 	int iProtocolMaxOffset;
4e2933c620 2015-04-21        kinaba: 	int iNetworkByteOrder;
4e2933c620 2015-04-21        kinaba: 	int iSecurityScheme;
4e2933c620 2015-04-21        kinaba: 	DWORD dwMessageSize;
4e2933c620 2015-04-21        kinaba: 	DWORD dwProviderReserved;
4e2933c620 2015-04-21        kinaba: 	WCHAR[WSAPROTOCOL_LEN+1] szProtocol;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSAPROTOCOL_INFOW* LPWSAPROTOCOL_INFOW;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // TODO: Below fptr was defined as "CALLBACK" for linkage; is this right?
4e2933c620 2015-04-21        kinaba: extern(C) {
4e2933c620 2015-04-21        kinaba: 	alias int function(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD) LPCONDITIONPROC;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	alias void function(DWORD, DWORD, LPWSAOVERLAPPED, DWORD) LPWSAOVERLAPPED_COMPLETION_ROUTINE;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
4e2933c620 2015-04-21        kinaba: 	alias LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* Needed for XP & .NET Server function WSANSPIoctl.  */
4e2933c620 2015-04-21        kinaba: enum WSACOMPLETIONTYPE {
4e2933c620 2015-04-21        kinaba:     NSP_NOTIFY_IMMEDIATELY = 0,
4e2933c620 2015-04-21        kinaba:     NSP_NOTIFY_HWND,
4e2933c620 2015-04-21        kinaba:     NSP_NOTIFY_EVENT,
4e2933c620 2015-04-21        kinaba:     NSP_NOTIFY_PORT,
4e2933c620 2015-04-21        kinaba:     NSP_NOTIFY_APC
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSACOMPLETIONTYPE* PWSACOMPLETIONTYPE, LPWSACOMPLETIONTYPE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct WSACOMPLETION {
4e2933c620 2015-04-21        kinaba:     WSACOMPLETIONTYPE Type;
4e2933c620 2015-04-21        kinaba:     union WSACOMPLETION_PARAMETERS {
4e2933c620 2015-04-21        kinaba:         struct WSACOMPLETION_WINDOWMESSAGE {
4e2933c620 2015-04-21        kinaba:             HWND hWnd;
4e2933c620 2015-04-21        kinaba:             UINT uMsg;
4e2933c620 2015-04-21        kinaba:             WPARAM context;
4e2933c620 2015-04-21        kinaba:         }
4e2933c620 2015-04-21        kinaba: 		WSACOMPLETION_WINDOWMESSAGE WindowMessage;
4e2933c620 2015-04-21        kinaba:         struct WSACOMPLETION_EVENT {
4e2933c620 2015-04-21        kinaba:             LPWSAOVERLAPPED lpOverlapped;
4e2933c620 2015-04-21        kinaba:         }
4e2933c620 2015-04-21        kinaba: 		WSACOMPLETION_EVENT Event;
4e2933c620 2015-04-21        kinaba:         struct WSACOMPLETION_APC {
4e2933c620 2015-04-21        kinaba:             LPWSAOVERLAPPED lpOverlapped;
4e2933c620 2015-04-21        kinaba:             LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
4e2933c620 2015-04-21        kinaba:         }
4e2933c620 2015-04-21        kinaba: 		WSACOMPLETION_APC Apc;
4e2933c620 2015-04-21        kinaba:         struct WSACOMPLETION_PORT {
4e2933c620 2015-04-21        kinaba:             LPWSAOVERLAPPED lpOverlapped;
4e2933c620 2015-04-21        kinaba:             HANDLE hPort;
4e2933c620 2015-04-21        kinaba:             ULONG_PTR Key;
4e2933c620 2015-04-21        kinaba:         }
4e2933c620 2015-04-21        kinaba: 		WSACOMPLETION_PORT Port;
4e2933c620 2015-04-21        kinaba:     }
4e2933c620 2015-04-21        kinaba: 	WSACOMPLETION_PARAMETERS Parameters;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias WSACOMPLETION* PWSACOMPLETION, LPWSACOMPLETION;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	PFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001,
4e2933c620 2015-04-21        kinaba: 	PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002,
4e2933c620 2015-04-21        kinaba: 	PFL_HIDDEN                  = 0x00000004,
4e2933c620 2015-04-21        kinaba: 	PFL_MATCHES_PROTOCOL_ZERO   = 0x00000008;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int
4e2933c620 2015-04-21        kinaba: 	XP1_CONNECTIONLESS           = 0x00000001,
4e2933c620 2015-04-21        kinaba: 	XP1_GUARANTEED_DELIVERY      = 0x00000002,
4e2933c620 2015-04-21        kinaba: 	XP1_GUARANTEED_ORDER         = 0x00000004,
4e2933c620 2015-04-21        kinaba: 	XP1_MESSAGE_ORIENTED         = 0x00000008,
4e2933c620 2015-04-21        kinaba: 	XP1_PSEUDO_STREAM            = 0x00000010,
4e2933c620 2015-04-21        kinaba: 	XP1_GRACEFUL_CLOSE           = 0x00000020,
4e2933c620 2015-04-21        kinaba: 	XP1_EXPEDITED_DATA           = 0x00000040,
4e2933c620 2015-04-21        kinaba: 	XP1_CONNECT_DATA             = 0x00000080,
4e2933c620 2015-04-21        kinaba: 	XP1_DISCONNECT_DATA          = 0x00000100,
4e2933c620 2015-04-21        kinaba: 	XP1_SUPPORT_BROADCAST        = 0x00000200,
4e2933c620 2015-04-21        kinaba: 	XP1_SUPPORT_MULTIPOINT       = 0x00000400,
4e2933c620 2015-04-21        kinaba: 	XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800,
4e2933c620 2015-04-21        kinaba: 	XP1_MULTIPOINT_DATA_PLANE    = 0x00001000,
4e2933c620 2015-04-21        kinaba: 	XP1_QOS_SUPPORTED            = 0x00002000,
4e2933c620 2015-04-21        kinaba: 	XP1_INTERRUPT                = 0x00004000,
4e2933c620 2015-04-21        kinaba: 	XP1_UNI_SEND                 = 0x00008000,
4e2933c620 2015-04-21        kinaba: 	XP1_UNI_RECV                 = 0x00010000,
4e2933c620 2015-04-21        kinaba: 	XP1_IFS_HANDLES              = 0x00020000,
4e2933c620 2015-04-21        kinaba: 	XP1_PARTIAL_MESSAGE          = 0x00040000;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : int {
4e2933c620 2015-04-21        kinaba: 	BIGENDIAN    = 0x0000,
4e2933c620 2015-04-21        kinaba: 	LITTLEENDIAN = 0x0001
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const SECURITY_PROTOCOL_NONE = 0x0000;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const JL_SENDER_ONLY = 0x01;
4e2933c620 2015-04-21        kinaba: const JL_RECEIVER_ONLY = 0x02;
4e2933c620 2015-04-21        kinaba: const JL_BOTH = 0x04;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const WSA_FLAG_OVERLAPPED = 0x01;
4e2933c620 2015-04-21        kinaba: const WSA_FLAG_MULTIPOINT_C_ROOT = 0x02;
4e2933c620 2015-04-21        kinaba: const WSA_FLAG_MULTIPOINT_C_LEAF = 0x04;
4e2933c620 2015-04-21        kinaba: const WSA_FLAG_MULTIPOINT_D_ROOT = 0x08;
4e2933c620 2015-04-21        kinaba: const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int IOC_UNIX = 0x00000000;
4e2933c620 2015-04-21        kinaba: const int IOC_WS2 = 0x08000000;
4e2933c620 2015-04-21        kinaba: const int IOC_PROTOCOL = 0x10000000;
4e2933c620 2015-04-21        kinaba: const int IOC_VENDOR = 0x18000000;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: template _WSAIO(int x, int y) { const int _WSAIO = IOC_VOID | x | y; }
4e2933c620 2015-04-21        kinaba: template _WSAIOR(int x, int y) { const int _WSAIOR = IOC_OUT | x | y; }
4e2933c620 2015-04-21        kinaba: template _WSAIOW(int x, int y) { const int _WSAIOW = IOC_IN | x | y; }
4e2933c620 2015-04-21        kinaba: template _WSAIORW(int x, int y) { const int _WSAIORW = IOC_INOUT | x | y; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int SIO_ASSOCIATE_HANDLE               = _WSAIOW!(IOC_WS2,1);
4e2933c620 2015-04-21        kinaba: const int SIO_ENABLE_CIRCULAR_QUEUEING       = _WSAIO!(IOC_WS2,2);
4e2933c620 2015-04-21        kinaba: const int SIO_FIND_ROUTE                     = _WSAIOR!(IOC_WS2,3);
4e2933c620 2015-04-21        kinaba: const int SIO_FLUSH                          = _WSAIO!(IOC_WS2,4);
4e2933c620 2015-04-21        kinaba: const int SIO_GET_BROADCAST_ADDRESS          = _WSAIOR!(IOC_WS2,5);
4e2933c620 2015-04-21        kinaba: const int SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW!(IOC_WS2,6);
4e2933c620 2015-04-21        kinaba: const int SIO_GET_QOS                        = _WSAIORW!(IOC_WS2,7);
4e2933c620 2015-04-21        kinaba: const int SIO_GET_GROUP_QOS                  = _WSAIORW!(IOC_WS2,8);
4e2933c620 2015-04-21        kinaba: const int SIO_MULTIPOINT_LOOPBACK            = _WSAIOW!(IOC_WS2,9);
4e2933c620 2015-04-21        kinaba: const int SIO_MULTICAST_SCOPE                = _WSAIOW!(IOC_WS2,10);
4e2933c620 2015-04-21        kinaba: const int SIO_SET_QOS                        = _WSAIOW!(IOC_WS2,11);
4e2933c620 2015-04-21        kinaba: const int SIO_SET_GROUP_QOS                  = _WSAIOW!(IOC_WS2,12);
4e2933c620 2015-04-21        kinaba: const int SIO_TRANSLATE_HANDLE               = _WSAIORW!(IOC_WS2,13);
4e2933c620 2015-04-21        kinaba: const int SIO_ROUTING_INTERFACE_QUERY        = _WSAIORW!(IOC_WS2,20);
4e2933c620 2015-04-21        kinaba: const int SIO_ROUTING_INTERFACE_CHANGE       = _WSAIOW!(IOC_WS2,21);
4e2933c620 2015-04-21        kinaba: const int SIO_ADDRESS_LIST_QUERY             = _WSAIOR!(IOC_WS2,22);
4e2933c620 2015-04-21        kinaba: const int SIO_ADDRESS_LIST_CHANGE            = _WSAIO!(IOC_WS2,23);
4e2933c620 2015-04-21        kinaba: const int SIO_QUERY_TARGET_PNP_HANDLE        = _WSAIOR!(IOC_WS2,24);
4e2933c620 2015-04-21        kinaba: const int SIO_NSP_NOTIFY_CHANGE              = _WSAIOW!(IOC_WS2,25);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const int TH_NETDEV = 1;
4e2933c620 2015-04-21        kinaba: const int TH_TAPI   = 2;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern(Windows) {
4e2933c620 2015-04-21        kinaba: 	SOCKET WSAAccept(SOCKET, SOCKADDR*, LPINT, LPCONDITIONPROC, DWORD);
4e2933c620 2015-04-21        kinaba: 	INT WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	INT WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL WSACloseEvent(WSAEVENT);
9b639cf2d6 2015-05-05        kinaba: 	int WSAConnect(SOCKET, const(SOCKADDR)*, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
4e2933c620 2015-04-21        kinaba: 	WSAEVENT WSACreateEvent();
4e2933c620 2015-04-21        kinaba: 	int WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
4e2933c620 2015-04-21        kinaba: 	int WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
4e2933c620 2015-04-21        kinaba: 	INT WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
4e2933c620 2015-04-21        kinaba: 	INT WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
4e2933c620 2015-04-21        kinaba: 	int WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
4e2933c620 2015-04-21        kinaba: 	int WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	int WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	int WSAEventSelect(SOCKET, WSAEVENT, int);
4e2933c620 2015-04-21        kinaba: 	BOOL WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
4e2933c620 2015-04-21        kinaba: 	INT WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
4e2933c620 2015-04-21        kinaba: 	INT WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
4e2933c620 2015-04-21        kinaba: 	INT WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	INT WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
4e2933c620 2015-04-21        kinaba: 	int WSAHtonl(SOCKET, uint, uint*);
4e2933c620 2015-04-21        kinaba: 	int WSAHtons(SOCKET, ushort, ushort*);
4e2933c620 2015-04-21        kinaba: 	INT WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
4e2933c620 2015-04-21        kinaba: 	INT WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
4e2933c620 2015-04-21        kinaba: 	int WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
9b639cf2d6 2015-05-05        kinaba: 	SOCKET WSAJoinLeaf(SOCKET, const(SOCKADDR)*, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
4e2933c620 2015-04-21        kinaba: 	INT WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
4e2933c620 2015-04-21        kinaba: 	INT WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE);
4e2933c620 2015-04-21        kinaba: 	INT WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
4e2933c620 2015-04-21        kinaba: 	INT WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
4e2933c620 2015-04-21        kinaba: 	INT WSALookupServiceEnd(HANDLE);
4e2933c620 2015-04-21        kinaba: 	int WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */
4e2933c620 2015-04-21        kinaba: 	int WSANtohl(SOCKET, uint, uint*);
4e2933c620 2015-04-21        kinaba: 	int WSANtohs(SOCKET, ushort, ushort*);
4e2933c620 2015-04-21        kinaba: 	int WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
4e2933c620 2015-04-21        kinaba: 	int WSARecvDisconnect(SOCKET, LPWSABUF);
4e2933c620 2015-04-21        kinaba: 	int WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, SOCKADDR*, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
4e2933c620 2015-04-21        kinaba: 	INT WSARemoveServiceClass(LPGUID);
4e2933c620 2015-04-21        kinaba: 	BOOL WSAResetEvent(WSAEVENT);
4e2933c620 2015-04-21        kinaba: 	int WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
4e2933c620 2015-04-21        kinaba: 	int WSASendDisconnect(SOCKET, LPWSABUF);
9b639cf2d6 2015-05-05        kinaba: 	int WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const(SOCKADDR)*, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
4e2933c620 2015-04-21        kinaba: 	BOOL WSASetEvent(WSAEVENT);
4e2933c620 2015-04-21        kinaba: 	INT WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); // NB: was declared with "WSAAPI" linkage
4e2933c620 2015-04-21        kinaba: 	INT WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
4e2933c620 2015-04-21        kinaba: 	SOCKET WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
4e2933c620 2015-04-21        kinaba: 	SOCKET WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
4e2933c620 2015-04-21        kinaba: 	INT WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
4e2933c620 2015-04-21        kinaba: 	INT WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
9b639cf2d6 2015-05-05        kinaba: 	DWORD WSAWaitForMultipleEvents(DWORD, const(WSAEVENT)*, BOOL, DWORD, BOOL);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAccept) LPFN_WSAACCEPT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAddressToStringA) LPFN_WSAADDRESSTOSTRINGA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAAddressToStringW) LPFN_WSAADDRESSTOSTRINGW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSACloseEvent) LPFN_WSACLOSEEVENT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAConnect) LPFN_WSACONNECT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSACreateEvent) LPFN_WSACREATEEVENT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSADuplicateSocketA) LPFN_WSADUPLICATESOCKETA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSADuplicateSocketW) LPFN_WSADUPLICATESOCKETW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEnumNameSpaceProvidersA) LPFN_WSAENUMNAMESPACEPROVIDERSA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEnumNameSpaceProvidersW) LPFN_WSAENUMNAMESPACEPROVIDERSW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEnumNetworkEvents) LPFN_WSAENUMNETWORKEVENTS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEnumProtocolsA) LPFN_WSAENUMPROTOCOLSA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEnumProtocolsW) LPFN_WSAENUMPROTOCOLSW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAEventSelect) LPFN_WSAEVENTSELECT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetOverlappedResult) LPFN_WSAGETOVERLAPPEDRESULT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetQOSByName) LPFN_WSAGETQOSBYNAME;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetServiceClassInfoA) LPFN_WSAGETSERVICECLASSINFOA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetServiceClassInfoW) LPFN_WSAGETSERVICECLASSINFOW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetServiceClassNameByClassIdA) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAGetServiceClassNameByClassIdW) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAHtonl) LPFN_WSAHTONL;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAHtons) LPFN_WSAHTONS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAInstallServiceClassA) LPFN_WSAINSTALLSERVICECLASSA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAInstallServiceClassW) LPFN_WSAINSTALLSERVICECLASSW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAIoctl) LPFN_WSAIOCTL;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAJoinLeaf) LPFN_WSAJOINLEAF;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSALookupServiceBeginA) LPFN_WSALOOKUPSERVICEBEGINA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSALookupServiceBeginW) LPFN_WSALOOKUPSERVICEBEGINW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSALookupServiceNextA) LPFN_WSALOOKUPSERVICENEXTA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSALookupServiceNextW) LPFN_WSALOOKUPSERVICENEXTW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSALookupServiceEnd) LPFN_WSALOOKUPSERVICEEND;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSANSPIoctl) LPFN_WSANSPIoctl;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSANtohl) LPFN_WSANTOHL;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSANtohs) LPFN_WSANTOHS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSARecv) LPFN_WSARECV;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSARecvDisconnect) LPFN_WSARECVDISCONNECT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSARecvFrom) LPFN_WSARECVFROM;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSARemoveServiceClass) LPFN_WSAREMOVESERVICECLASS;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAResetEvent) LPFN_WSARESETEVENT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASend) LPFN_WSASEND;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASendDisconnect) LPFN_WSASENDDISCONNECT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASendTo) LPFN_WSASENDTO;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASetEvent) LPFN_WSASETEVENT;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASetServiceA) LPFN_WSASETSERVICEA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASetServiceW) LPFN_WSASETSERVICEW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASocketA) LPFN_WSASOCKETA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSASocketW) LPFN_WSASOCKETW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAStringToAddressA) LPFN_WSASTRINGTOADDRESSA;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAStringToAddressW) LPFN_WSASTRINGTOADDRESSW;
4e2933c620 2015-04-21        kinaba: 	alias typeof(&WSAWaitForMultipleEvents) LPFN_WSAWAITFORMULTIPLEEVENTS;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version(Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAADDRESSTOSTRINGW LPFN_WSAADDRESSTOSTRING;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAENUMNAMESPACEPROVIDERSW LPFN_WSAENUMNAMESPACEPROVIDERS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAENUMPROTOCOLSW LPFN_WSAENUMPROTOCOLS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAGETSERVICECLASSINFOW LPFN_WSAGETSERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW LPFN_WSAGETSERVICECLASSNAMEBYCLASSID;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAINSTALLSERVICECLASSW LPFN_WSAINSTALLSERVICECLASS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSALOOKUPSERVICEBEGINW LPFN_WSALOOKUPSERVICEBEGIN;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSALOOKUPSERVICENEXTW LPFN_WSALOOKUPSERVICENEXT;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASETSERVICEW LPFN_WSASETSERVICE;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASOCKETW LPFN_WSASOCKET;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASTRINGTOADDRESSW LPFN_WSASTRINGTOADDRESS;
4e2933c620 2015-04-21        kinaba: 	alias WSAAddressToStringW WSAAddressToString;
4e2933c620 2015-04-21        kinaba: 	alias WSADuplicateSocketW WSADuplicateSocket;
4e2933c620 2015-04-21        kinaba: 	alias WSAEnumNameSpaceProvidersW WSAEnumNameSpaceProviders;
4e2933c620 2015-04-21        kinaba: 	alias WSAEnumProtocolsW WSAEnumProtocols;
4e2933c620 2015-04-21        kinaba: 	alias WSAGetServiceClassInfoW WSAGetServiceClassInfo;
4e2933c620 2015-04-21        kinaba: 	alias WSAGetServiceClassNameByClassIdW WSAGetServiceClassNameByClassId;
4e2933c620 2015-04-21        kinaba: 	alias WSASetServiceW WSASetService;
4e2933c620 2015-04-21        kinaba: 	alias WSASocketW WSASocket;
4e2933c620 2015-04-21        kinaba: 	alias WSAStringToAddressW WSAStringToAddress;
4e2933c620 2015-04-21        kinaba: 	alias WSALookupServiceBeginW WSALookupServiceBegin;
4e2933c620 2015-04-21        kinaba: 	alias WSALookupServiceNextW WSALookupServiceNext;
4e2933c620 2015-04-21        kinaba: 	alias WSAInstallServiceClassW WSAInstallServiceClass;
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAADDRESSTOSTRINGA LPFN_WSAADDRESSTOSTRING;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAENUMNAMESPACEPROVIDERSA LPFN_WSAENUMNAMESPACEPROVIDERS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAENUMPROTOCOLSA LPFN_WSAENUMPROTOCOLS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAGETSERVICECLASSINFOA LPFN_WSAGETSERVICECLASSINFO;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA LPFN_WSAGETSERVICECLASSNAMEBYCLASSID;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSAINSTALLSERVICECLASSA LPFN_WSAINSTALLSERVICECLASS;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSALOOKUPSERVICEBEGINA LPFN_WSALOOKUPSERVICEBEGIN;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSALOOKUPSERVICENEXTA LPFN_WSALOOKUPSERVICENEXT;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASETSERVICEA LPFN_WSASETSERVICE;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASOCKETA LPFN_WSASOCKET;
4e2933c620 2015-04-21        kinaba: 	alias LPFN_WSASTRINGTOADDRESSA LPFN_WSASTRINGTOADDRESS;
4e2933c620 2015-04-21        kinaba: 	alias WSAAddressToStringA WSAAddressToString;
4e2933c620 2015-04-21        kinaba: 	alias WSADuplicateSocketA WSADuplicateSocket;
4e2933c620 2015-04-21        kinaba: 	alias WSAEnumNameSpaceProvidersA WSAEnumNameSpaceProviders;
4e2933c620 2015-04-21        kinaba: 	alias WSAEnumProtocolsA WSAEnumProtocols;
4e2933c620 2015-04-21        kinaba: 	alias WSAGetServiceClassInfoA WSAGetServiceClassInfo;
4e2933c620 2015-04-21        kinaba: 	alias WSAGetServiceClassNameByClassIdA WSAGetServiceClassNameByClassId;
4e2933c620 2015-04-21        kinaba: 	alias WSAInstallServiceClassA WSAInstallServiceClass;
4e2933c620 2015-04-21        kinaba: 	alias WSALookupServiceBeginA WSALookupServiceBegin;
4e2933c620 2015-04-21        kinaba: 	alias WSALookupServiceNextA WSALookupServiceNext;
4e2933c620 2015-04-21        kinaba: 	alias WSASocketA WSASocket;
4e2933c620 2015-04-21        kinaba: 	alias WSAStringToAddressA WSAStringToAddress;
4e2933c620 2015-04-21        kinaba: 	alias WSASetServiceA WSASetService;
4e2933c620 2015-04-21        kinaba: }