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: }