| 1 |
/***********************************************************************\ |
|---|
| 2 |
* winsock2.d * |
|---|
| 3 |
* * |
|---|
| 4 |
* Windows API header module * |
|---|
| 5 |
* * |
|---|
| 6 |
* Translated from MinGW Windows headers * |
|---|
| 7 |
* by Daniel Keep * |
|---|
| 8 |
\***********************************************************************/ |
|---|
| 9 |
module win32.winsock2; |
|---|
| 10 |
pragma(lib, "Ws2_32.lib"); |
|---|
| 11 |
|
|---|
| 12 |
/* |
|---|
| 13 |
Definitions for winsock 2 |
|---|
| 14 |
|
|---|
| 15 |
Contributed by the WINE project. |
|---|
| 16 |
|
|---|
| 17 |
Portions Copyright (c) 1980, 1983, 1988, 1993 |
|---|
| 18 |
The Regents of the University of California. All rights reserved. |
|---|
| 19 |
|
|---|
| 20 |
Portions Copyright (c) 1993 by Digital Equipment Corporation. |
|---|
| 21 |
*/ |
|---|
| 22 |
|
|---|
| 23 |
/* DRK: This module should not be included if -version=Win32_Winsock2 has |
|---|
| 24 |
* not been set. If it has, assert. I think it's better this way than |
|---|
| 25 |
* letting the user believe that it's worked. |
|---|
| 26 |
* |
|---|
| 27 |
* SG: It has now been changed so that winsock2 is the default, and |
|---|
| 28 |
* -version=Win32_Winsock1 must be set to use winsock. |
|---|
| 29 |
*/ |
|---|
| 30 |
version(Win32_Winsock1) { |
|---|
| 31 |
pragma(msg, "Cannot use win32.winsock2 with Win32_Winsock1 defined."); |
|---|
| 32 |
static assert(false); |
|---|
| 33 |
} |
|---|
| 34 |
|
|---|
| 35 |
import win32.winbase; |
|---|
| 36 |
import win32.windef; |
|---|
| 37 |
import win32.basetyps; |
|---|
| 38 |
|
|---|
| 39 |
alias char u_char; |
|---|
| 40 |
alias ushort u_short; |
|---|
| 41 |
alias uint u_int, u_long, SOCKET; |
|---|
| 42 |
|
|---|
| 43 |
const size_t FD_SETSIZE = 64; |
|---|
| 44 |
|
|---|
| 45 |
/* shutdown() how types */ |
|---|
| 46 |
enum : int { |
|---|
| 47 |
SD_RECEIVE, |
|---|
| 48 |
SD_SEND, |
|---|
| 49 |
SD_BOTH |
|---|
| 50 |
} |
|---|
| 51 |
|
|---|
| 52 |
/* Good grief this is stupid... is it a struct? A preprocessor macro? A |
|---|
| 53 |
struct tag? Who the hell knows!? */ |
|---|
| 54 |
struct FD_SET { |
|---|
| 55 |
u_int fd_count; |
|---|
| 56 |
SOCKET[FD_SETSIZE] fd_array; |
|---|
| 57 |
|
|---|
| 58 |
/* this differs from the define in winsock.h and in cygwin sys/types.h */ |
|---|
| 59 |
static void opCall(SOCKET fd, FD_SET set) { |
|---|
| 60 |
u_int i; |
|---|
| 61 |
for (i = 0; i < set.fd_count; i++) |
|---|
| 62 |
if (set.fd_array[i] == fd) |
|---|
| 63 |
break; |
|---|
| 64 |
if (i == set.fd_count) |
|---|
| 65 |
if (set.fd_count < FD_SETSIZE) { |
|---|
| 66 |
set.fd_array[i] = fd; |
|---|
| 67 |
set.fd_count++; |
|---|
| 68 |
} |
|---|
| 69 |
} |
|---|
| 70 |
} |
|---|
| 71 |
alias FD_SET* PFD_SET, LPFD_SET; |
|---|
| 72 |
|
|---|
| 73 |
// Keep this alias, since fd_set isn't a tag name in the original header. |
|---|
| 74 |
alias FD_SET fd_set; |
|---|
| 75 |
|
|---|
| 76 |
extern(Windows) int __WSAFDIsSet(SOCKET, FD_SET*); |
|---|
| 77 |
alias __WSAFDIsSet FD_ISSET; |
|---|
| 78 |
|
|---|
| 79 |
void FD_CLR(SOCKET fd, FD_SET* set) { |
|---|
| 80 |
for (u_int i = 0; i < set.fd_count; i++) { |
|---|
| 81 |
if (set.fd_array[i] == fd) { |
|---|
| 82 |
while (i < set.fd_count - 1) { |
|---|
| 83 |
set.fd_array[i] = set.fd_array[i+1]; |
|---|
| 84 |
i++; |
|---|
| 85 |
} |
|---|
| 86 |
set.fd_count--; |
|---|
| 87 |
break; |
|---|
| 88 |
} |
|---|
| 89 |
} |
|---|
| 90 |
} |
|---|
| 91 |
|
|---|
| 92 |
void FD_ZERO(FD_SET* set) { |
|---|
| 93 |
set.fd_count = 0; |
|---|
| 94 |
} |
|---|
| 95 |
|
|---|
| 96 |
|
|---|
| 97 |
struct TIMEVAL { |
|---|
| 98 |
int tv_sec; |
|---|
| 99 |
int tv_usec; |
|---|
| 100 |
|
|---|
| 101 |
int opCmp(TIMEVAL tv) { |
|---|
| 102 |
if (tv_sec < tv.tv_sec) return -1; |
|---|
| 103 |
if (tv_sec > tv.tv_sec) return 1; |
|---|
| 104 |
if (tv_usec < tv.tv_usec) return -1; |
|---|
| 105 |
if (tv_usec > tv.tv_usec) return 1; |
|---|
| 106 |
return 0; |
|---|
| 107 |
} |
|---|
| 108 |
} |
|---|
| 109 |
alias TIMEVAL* PTIMEVAL, LPTIMEVAL; |
|---|
| 110 |
|
|---|
| 111 |
bool timerisset(TIMEVAL* tvp) { |
|---|
| 112 |
return tvp.tv_sec || tvp.tv_usec; |
|---|
| 113 |
} |
|---|
| 114 |
|
|---|
| 115 |
/+ |
|---|
| 116 |
/* DRK: These have been commented out because it was felt that using |
|---|
| 117 |
* omCmp on the TIMEVAL struct was cleaner. Still, perhaps these should |
|---|
| 118 |
* be enabled under a version tag for compatibility's sake? |
|---|
| 119 |
* If it is decided that it's just ugly and unwanted, then feel free to |
|---|
| 120 |
* delete this section :) |
|---|
| 121 |
*/ |
|---|
| 122 |
int timercmp(TIMEVAL* tvp, TIMEVAL* uvp) { |
|---|
| 123 |
return tvp.tv_sec != uvp.tv_sec ? |
|---|
| 124 |
(tvp.tv_sec < uvp.tv_sec ? -1 : |
|---|
| 125 |
(tvp.tv_sec > uvp.tv_sec ? 1 : 0)) : |
|---|
| 126 |
(tvp.tv_usec < uvp.tv_usec ? -1 : |
|---|
| 127 |
(tvp.tv_usec > uvp.tv_usec ? 1 : 0)); |
|---|
| 128 |
} |
|---|
| 129 |
|
|---|
| 130 |
int timercmp(TIMEVAL* tvp, TIMEVAL* uvp, int function(long,long) cmp) { |
|---|
| 131 |
return tvp.tv_sec != uvp.tv_sec ? |
|---|
| 132 |
cmp(tvp.tv_sec, uvp.tv_sec) : |
|---|
| 133 |
cmp(tvp.tv_usec, uvp.tv_usec); |
|---|
| 134 |
}+/ |
|---|
| 135 |
|
|---|
| 136 |
void timerclear(ref TIMEVAL tvp) { |
|---|
| 137 |
tvp.tv_sec = tvp.tv_usec = 0; |
|---|
| 138 |
} |
|---|
| 139 |
|
|---|
| 140 |
struct HOSTENT { |
|---|
| 141 |
char* h_name; |
|---|
| 142 |
char** h_aliases; |
|---|
| 143 |
short h_addrtype; |
|---|
| 144 |
short h_length; |
|---|
| 145 |
char** h_addr_list; |
|---|
| 146 |
|
|---|
| 147 |
char* h_addr() { return h_addr_list[0]; } |
|---|
| 148 |
char* h_addr(char* h) { return h_addr_list[0] = h; } |
|---|
| 149 |
} |
|---|
| 150 |
alias HOSTENT* PHOSTENT, LPHOSTENT; |
|---|
| 151 |
|
|---|
| 152 |
struct LINGER { |
|---|
| 153 |
u_short l_onoff; |
|---|
| 154 |
u_short l_linger; |
|---|
| 155 |
} |
|---|
| 156 |
alias LINGER* PLINGER, LPLINGER; |
|---|
| 157 |
|
|---|
| 158 |
enum : DWORD { |
|---|
| 159 |
IOCPARAM_MASK = 0x7f, |
|---|
| 160 |
IOC_VOID = 0x20000000, |
|---|
| 161 |
IOC_OUT = 0x40000000, |
|---|
| 162 |
IOC_IN = 0x80000000, |
|---|
| 163 |
IOC_INOUT = IOC_IN|IOC_OUT |
|---|
| 164 |
} |
|---|
| 165 |
|
|---|
| 166 |
// NOTE: This isn't even used anywhere... |
|---|
| 167 |
private template _IO(char x, ubyte y) { |
|---|
| 168 |
const DWORD _IO = IOC_VOID | (cast(ubyte)x<<8) | y; |
|---|
| 169 |
} |
|---|
| 170 |
|
|---|
| 171 |
private template _IOR(char x, ubyte y, t) { |
|---|
| 172 |
const DWORD _IOR = IOC_OUT | ((t.sizeof & IOCPARAM_MASK)<<16) |
|---|
| 173 |
| (cast(ubyte)x<<8) | y; |
|---|
| 174 |
} |
|---|
| 175 |
|
|---|
| 176 |
private template _IOW(char x, ubyte y, t) { |
|---|
| 177 |
const DWORD _IOW = IOC_IN | ((t.sizeof & IOCPARAM_MASK)<<16) |
|---|
| 178 |
| (cast(ubyte)x<<8) | y; |
|---|
| 179 |
} |
|---|
| 180 |
|
|---|
| 181 |
enum : DWORD { |
|---|
| 182 |
FIONBIO = _IOW!('f', 126, u_long), |
|---|
| 183 |
FIONREAD = _IOR!('f', 127, u_long), |
|---|
| 184 |
FIOASYNC = _IOW!('f', 125, u_long), |
|---|
| 185 |
SIOCSHIWAT = _IOW!('s', 0, u_long), |
|---|
| 186 |
SIOCGHIWAT = _IOR!('s', 1, u_long), |
|---|
| 187 |
SIOCSLOWAT = _IOW!('s', 2, u_long), |
|---|
| 188 |
SIOCGLOWAT = _IOR!('s', 3, u_long), |
|---|
| 189 |
SIOCATMARK = _IOR!('s', 7, u_long) |
|---|
| 190 |
} |
|---|
| 191 |
|
|---|
| 192 |
struct netent { |
|---|
| 193 |
char* n_name; |
|---|
| 194 |
char** n_aliases; |
|---|
| 195 |
short n_addrtype; |
|---|
| 196 |
u_long n_net; |
|---|
| 197 |
} |
|---|
| 198 |
|
|---|
| 199 |
struct SERVENT { |
|---|
| 200 |
char* s_name; |
|---|
| 201 |
char** s_aliases; |
|---|
| 202 |
short s_port; |
|---|
| 203 |
char* s_proto; |
|---|
| 204 |
} |
|---|
| 205 |
alias SERVENT* PSERVENT, LPSERVENT; |
|---|
| 206 |
|
|---|
| 207 |
struct PROTOENT { |
|---|
| 208 |
char* p_name; |
|---|
| 209 |
char** p_aliases; |
|---|
| 210 |
short p_proto; |
|---|
| 211 |
} |
|---|
| 212 |
alias PROTOENT* PPROTOENT, LPPROTOENT; |
|---|
| 213 |
|
|---|
| 214 |
enum : int { |
|---|
| 215 |
IPPROTO_IP = 0, |
|---|
| 216 |
IPPROTO_ICMP = 1, |
|---|
| 217 |
IPPROTO_IGMP = 2, |
|---|
| 218 |
IPPROTO_GGP = 3, |
|---|
| 219 |
IPPROTO_TCP = 6, |
|---|
| 220 |
IPPROTO_PUP = 12, |
|---|
| 221 |
IPPROTO_UDP = 17, |
|---|
| 222 |
IPPROTO_IDP = 22, |
|---|
| 223 |
IPPROTO_ND = 77, |
|---|
| 224 |
IPPROTO_RAW = 255, |
|---|
| 225 |
IPPROTO_MAX = 256, |
|---|
| 226 |
|
|---|
| 227 |
// IPv6 options |
|---|
| 228 |
IPPROTO_HOPOPTS = 0, // IPv6 Hop-by-Hop options |
|---|
| 229 |
IPPROTO_IPV6 = 41, // IPv6 header |
|---|
| 230 |
IPPROTO_ROUTING = 43, // IPv6 Routing header |
|---|
| 231 |
IPPROTO_FRAGMENT = 44, // IPv6 fragmentation header |
|---|
| 232 |
IPPROTO_ESP = 50, // encapsulating security payload |
|---|
| 233 |
IPPROTO_AH = 51, // authentication header |
|---|
| 234 |
IPPROTO_ICMPV6 = 58, // ICMPv6 |
|---|
| 235 |
IPPROTO_NONE = 59, // IPv6 no next header |
|---|
| 236 |
IPPROTO_DSTOPTS = 60 // IPv6 Destination options |
|---|
| 237 |
} |
|---|
| 238 |
|
|---|
| 239 |
enum { |
|---|
| 240 |
IPPORT_ECHO = 7, |
|---|
| 241 |
IPPORT_DISCARD = 9, |
|---|
| 242 |
IPPORT_SYSTAT = 11, |
|---|
| 243 |
IPPORT_DAYTIME = 13, |
|---|
| 244 |
IPPORT_NETSTAT = 15, |
|---|
| 245 |
IPPORT_FTP = 21, |
|---|
| 246 |
IPPORT_TELNET = 23, |
|---|
| 247 |
IPPORT_SMTP = 25, |
|---|
| 248 |
IPPORT_TIMESERVER = 37, |
|---|
| 249 |
IPPORT_NAMESERVER = 42, |
|---|
| 250 |
IPPORT_WHOIS = 43, |
|---|
| 251 |
IPPORT_MTP = 57, |
|---|
| 252 |
IPPORT_TFTP = 69, |
|---|
| 253 |
IPPORT_RJE = 77, |
|---|
| 254 |
IPPORT_FINGER = 79, |
|---|
| 255 |
IPPORT_TTYLINK = 87, |
|---|
| 256 |
IPPORT_SUPDUP = 95, |
|---|
| 257 |
IPPORT_EXECSERVER = 512, |
|---|
| 258 |
IPPORT_LOGINSERVER = 513, |
|---|
| 259 |
IPPORT_CMDSERVER = 514, |
|---|
| 260 |
IPPORT_EFSSERVER = 520, |
|---|
| 261 |
IPPORT_BIFFUDP = 512, |
|---|
| 262 |
IPPORT_WHOSERVER = 513, |
|---|
| 263 |
IPPORT_ROUTESERVER = 520, |
|---|
| 264 |
IPPORT_RESERVED = 1024 |
|---|
| 265 |
} |
|---|
| 266 |
|
|---|
| 267 |
enum { |
|---|
| 268 |
IMPLINK_IP = 155, |
|---|
| 269 |
IMPLINK_LOWEXPER = 156, |
|---|
| 270 |
IMPLINK_HIGHEXPER = 158 |
|---|
| 271 |
} |
|---|
| 272 |
|
|---|
| 273 |
struct IN_ADDR { |
|---|
| 274 |
union { |
|---|
| 275 |
struct { u_char s_b1, s_b2, s_b3, s_b4; } |
|---|
| 276 |
struct { u_char s_net, s_host, s_lh, s_impno; } |
|---|
| 277 |
struct { u_short s_w1, s_w2; } |
|---|
| 278 |
struct { u_short s_w_, s_imp; } // Can I get rid of s_w_ using alignment tricks? |
|---|
| 279 |
u_long S_addr; |
|---|
| 280 |
u_long s_addr; |
|---|
| 281 |
} |
|---|
| 282 |
} |
|---|
| 283 |
alias IN_ADDR* PIN_ADDR, LPIN_ADDR; |
|---|
| 284 |
|
|---|
| 285 |
// IN_CLASSx are not used anywhere or documented on MSDN. |
|---|
| 286 |
bool IN_CLASSA(int i) { return (i & 0x80000000) == 0; } |
|---|
| 287 |
|
|---|
| 288 |
const IN_CLASSA_NET = 0xff000000; |
|---|
| 289 |
const IN_CLASSA_NSHIFT = 24; |
|---|
| 290 |
const IN_CLASSA_HOST = 0x00ffffff; |
|---|
| 291 |
const IN_CLASSA_MAX = 128; |
|---|
| 292 |
|
|---|
| 293 |
bool IN_CLASSB(int i) { return (i & 0xc0000000) == 0x80000000; } |
|---|
| 294 |
|
|---|
| 295 |
const IN_CLASSB_NET = 0xffff0000; |
|---|
| 296 |
const IN_CLASSB_NSHIFT = 16; |
|---|
| 297 |
const IN_CLASSB_HOST = 0x0000ffff; |
|---|
| 298 |
const IN_CLASSB_MAX = 65536; |
|---|
| 299 |
|
|---|
| 300 |
bool IN_CLASSC(int i) { return (i & 0xe0000000) == 0xc0000000; } |
|---|
| 301 |
|
|---|
| 302 |
const IN_CLASSC_NET = 0xffffff00; |
|---|
| 303 |
const IN_CLASSC_NSHIFT = 8; |
|---|
| 304 |
const IN_CLASSC_HOST = 0x000000ff; |
|---|
| 305 |
|
|---|
| 306 |
const u_long |
|---|
| 307 |
INADDR_ANY = 0, |
|---|
| 308 |
INADDR_LOOPBACK = 0x7F000001, |
|---|
| 309 |
INADDR_BROADCAST = 0xFFFFFFFF, |
|---|
| 310 |
INADDR_NONE = 0xFFFFFFFF; |
|---|
| 311 |
|
|---|
| 312 |
struct SOCKADDR_IN { |
|---|
| 313 |
short sin_family; |
|---|
| 314 |
u_short sin_port; |
|---|
| 315 |
IN_ADDR sin_addr; |
|---|
| 316 |
char[8] sin_zero; |
|---|
| 317 |
} |
|---|
| 318 |
alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN; |
|---|
| 319 |
|
|---|
| 320 |
const size_t |
|---|
| 321 |
WSADESCRIPTION_LEN = 256, |
|---|
| 322 |
WSASYS_STATUS_LEN = 128; |
|---|
| 323 |
|
|---|
| 324 |
struct WSADATA { |
|---|
| 325 |
WORD wVersion; |
|---|
| 326 |
WORD wHighVersion; |
|---|
| 327 |
char[WSADESCRIPTION_LEN+1] szDescription; |
|---|
| 328 |
char[WSASYS_STATUS_LEN+1] szSystemStatus; |
|---|
| 329 |
ushort iMaxSockets; |
|---|
| 330 |
ushort iMaxUdpDg; |
|---|
| 331 |
char* lpVendorInfo; |
|---|
| 332 |
} |
|---|
| 333 |
alias WSADATA* LPWSADATA; |
|---|
| 334 |
|
|---|
| 335 |
// This is not documented on the MSDN site |
|---|
| 336 |
const IP_OPTIONS = 1; |
|---|
| 337 |
|
|---|
| 338 |
const int |
|---|
| 339 |
SO_OPTIONS = 1, |
|---|
| 340 |
SO_DEBUG = 1, |
|---|
| 341 |
SO_ACCEPTCONN = 2, |
|---|
| 342 |
SO_REUSEADDR = 4, |
|---|
| 343 |
SO_KEEPALIVE = 8, |
|---|
| 344 |
SO_DONTROUTE = 16, |
|---|
| 345 |
SO_BROADCAST = 32, |
|---|
| 346 |
SO_USELOOPBACK = 64, |
|---|
| 347 |
SO_LINGER = 128, |
|---|
| 348 |
SO_OOBINLINE = 256, |
|---|
| 349 |
SO_DONTLINGER = ~SO_LINGER, |
|---|
| 350 |
SO_EXCLUSIVEADDRUSE= ~SO_REUSEADDR; |
|---|
| 351 |
|
|---|
| 352 |
enum : int { |
|---|
| 353 |
SO_SNDBUF = 0x1001, |
|---|
| 354 |
SO_RCVBUF, |
|---|
| 355 |
SO_SNDLOWAT, |
|---|
| 356 |
SO_RCVLOWAT, |
|---|
| 357 |
SO_SNDTIMEO, |
|---|
| 358 |
SO_RCVTIMEO, |
|---|
| 359 |
SO_ERROR, |
|---|
| 360 |
SO_TYPE // = 0x1008 |
|---|
| 361 |
} |
|---|
| 362 |
|
|---|
| 363 |
const SOCKET INVALID_SOCKET = cast(SOCKET)(~0); |
|---|
| 364 |
const int SOCKET_ERROR = -1; |
|---|
| 365 |
|
|---|
| 366 |
enum : int { |
|---|
| 367 |
SOCK_STREAM = 1, |
|---|
| 368 |
SOCK_DGRAM, |
|---|
| 369 |
SOCK_RAW, |
|---|
| 370 |
SOCK_RDM, |
|---|
| 371 |
SOCK_SEQPACKET |
|---|
| 372 |
} |
|---|
| 373 |
|
|---|
| 374 |
const int TCP_NODELAY = 0x0001; |
|---|
| 375 |
|
|---|
| 376 |
enum : int { |
|---|
| 377 |
AF_UNSPEC, |
|---|
| 378 |
AF_UNIX, |
|---|
| 379 |
AF_INET, |
|---|
| 380 |
AF_IMPLINK, |
|---|
| 381 |
AF_PUP, |
|---|
| 382 |
AF_CHAOS, |
|---|
| 383 |
AF_IPX, // = 6 |
|---|
| 384 |
AF_NS = 6, |
|---|
| 385 |
AF_ISO, |
|---|
| 386 |
AF_OSI = AF_ISO, |
|---|
| 387 |
AF_ECMA, |
|---|
| 388 |
AF_DATAKIT, |
|---|
| 389 |
AF_CCITT, |
|---|
| 390 |
AF_SNA, |
|---|
| 391 |
AF_DECnet, |
|---|
| 392 |
AF_DLI, |
|---|
| 393 |
AF_LAT, |
|---|
| 394 |
AF_HYLINK, |
|---|
| 395 |
AF_APPLETALK, |
|---|
| 396 |
AF_NETBIOS, |
|---|
| 397 |
AF_VOICEVIEW, |
|---|
| 398 |
AF_FIREFOX, |
|---|
| 399 |
AF_UNKNOWN1, |
|---|
| 400 |
AF_BAN, |
|---|
| 401 |
AF_ATM, |
|---|
| 402 |
AF_INET6, |
|---|
| 403 |
// AF_CLUSTER, AF_12844 nad AF_NETDES are not documented on MSDN |
|---|
| 404 |
AF_CLUSTER, |
|---|
| 405 |
AF_12844, |
|---|
| 406 |
AF_IRDA, // = 26 |
|---|
| 407 |
AF_NETDES = 28, |
|---|
| 408 |
AF_MAX // = 29 |
|---|
| 409 |
} |
|---|
| 410 |
|
|---|
| 411 |
struct SOCKADDR { |
|---|
| 412 |
u_short sa_family; |
|---|
| 413 |
char[14] sa_data; |
|---|
| 414 |
} |
|---|
| 415 |
alias SOCKADDR* PSOCKADDR, LPSOCKADDR; |
|---|
| 416 |
|
|---|
| 417 |
/* Portable IPv6/IPv4 version of sockaddr. |
|---|
| 418 |
Uses padding to force 8 byte alignment |
|---|
| 419 |
and maximum size of 128 bytes */ |
|---|
| 420 |
struct SOCKADDR_STORAGE { |
|---|
| 421 |
short ss_family; |
|---|
| 422 |
char[6] __ss_pad1; // pad to 8 |
|---|
| 423 |
long __ss_align; // force alignment |
|---|
| 424 |
char[112] __ss_pad2; // pad to 128 |
|---|
| 425 |
} |
|---|
| 426 |
alias SOCKADDR_STORAGE* PSOCKADDR_STORAGE; |
|---|
| 427 |
|
|---|
| 428 |
struct sockproto { |
|---|
| 429 |
u_short sp_family; |
|---|
| 430 |
u_short sp_protocol; |
|---|
| 431 |
} |
|---|
| 432 |
|
|---|
| 433 |
enum : int { |
|---|
| 434 |
PF_UNSPEC = AF_UNSPEC, |
|---|
| 435 |
PF_UNIX = AF_UNIX, |
|---|
| 436 |
PF_INET = AF_INET, |
|---|
| 437 |
PF_IMPLINK = AF_IMPLINK, |
|---|
| 438 |
PF_PUP = AF_PUP, |
|---|
| 439 |
PF_CHAOS = AF_CHAOS, |
|---|
| 440 |
PF_NS = AF_NS, |
|---|
| 441 |
PF_IPX = AF_IPX, |
|---|
| 442 |
PF_ISO = AF_ISO, |
|---|
| 443 |
PF_OSI = AF_OSI, |
|---|
| 444 |
PF_ECMA = AF_ECMA, |
|---|
| 445 |
PF_DATAKIT = AF_DATAKIT, |
|---|
| 446 |
PF_CCITT = AF_CCITT, |
|---|
| 447 |
PF_SNA = AF_SNA, |
|---|
| 448 |
PF_DECnet = AF_DECnet, |
|---|
| 449 |
PF_DLI = AF_DLI, |
|---|
| 450 |
PF_LAT = AF_LAT, |
|---|
| 451 |
PF_HYLINK = AF_HYLINK, |
|---|
| 452 |
PF_APPLETALK = AF_APPLETALK, |
|---|
| 453 |
PF_VOICEVIEW = AF_VOICEVIEW, |
|---|
| 454 |
PF_FIREFOX = AF_FIREFOX, |
|---|
| 455 |
PF_UNKNOWN1 = AF_UNKNOWN1, |
|---|
| 456 |
PF_BAN = AF_BAN, |
|---|
| 457 |
PF_ATM = AF_ATM, |
|---|
| 458 |
PF_INET6 = AF_INET6, |
|---|
| 459 |
PF_MAX = AF_MAX |
|---|
| 460 |
} |
|---|
| 461 |
|
|---|
| 462 |
const int SOL_SOCKET = 0xFFFF; |
|---|
| 463 |
|
|---|
| 464 |
const int SOMAXCONN = 5; |
|---|
| 465 |
|
|---|
| 466 |
const int |
|---|
| 467 |
MSG_OOB = 1, |
|---|
| 468 |
MSG_PEEK = 2, |
|---|
| 469 |
MSG_DONTROUTE = 4, |
|---|
| 470 |
MSG_MAXIOVLEN = 16, |
|---|
| 471 |
MSG_PARTIAL = 0x8000; |
|---|
| 472 |
|
|---|
| 473 |
const size_t MAXGETHOSTSTRUCT = 1024; |
|---|
| 474 |
|
|---|
| 475 |
// Not documented on MSDN |
|---|
| 476 |
enum { |
|---|
| 477 |
FD_READ_BIT, |
|---|
| 478 |
FD_WRITE_BIT, |
|---|
| 479 |
FD_OOB_BIT, |
|---|
| 480 |
FD_ACCEPT_BIT, |
|---|
| 481 |
FD_CONNECT_BIT, |
|---|
| 482 |
FD_CLOSE_BIT, |
|---|
| 483 |
FD_QOS_BIT, |
|---|
| 484 |
FD_GROUP_QOS_BIT, |
|---|
| 485 |
FD_ROUTING_INTERFACE_CHANGE_BIT, |
|---|
| 486 |
FD_ADDRESS_LIST_CHANGE_BIT, |
|---|
| 487 |
FD_MAX_EVENTS // = 10 |
|---|
| 488 |
} |
|---|
| 489 |
|
|---|
| 490 |
const int |
|---|
| 491 |
FD_READ = 1 << FD_READ_BIT, |
|---|
| 492 |
FD_WRITE = 1 << FD_WRITE_BIT, |
|---|
| 493 |
FD_OOB = 1 << FD_OOB_BIT, |
|---|
| 494 |
FD_ACCEPT = 1 << FD_ACCEPT_BIT, |
|---|
| 495 |
FD_CONNECT = 1 << FD_CONNECT_BIT, |
|---|
| 496 |
FD_CLOSE = 1 << FD_CLOSE_BIT, |
|---|
| 497 |
FD_QOS = 1 << FD_QOS_BIT, |
|---|
| 498 |
FD_GROUP_QOS = 1 << FD_GROUP_QOS_BIT, |
|---|
| 499 |
FD_ROUTING_INTERFACE_CHANGE = 1 << FD_ROUTING_INTERFACE_CHANGE_BIT, |
|---|
| 500 |
FD_ADDRESS_LIST_CHANGE = 1 << FD_ADDRESS_LIST_CHANGE_BIT, |
|---|
| 501 |
FD_ALL_EVENTS = (1 << FD_MAX_EVENTS) - 1; |
|---|
| 502 |
|
|---|
| 503 |
enum : int { |
|---|
| 504 |
WSABASEERR = 10000, |
|---|
| 505 |
WSAEINTR = WSABASEERR + 4, |
|---|
| 506 |
WSAEBADF = WSABASEERR + 9, |
|---|
| 507 |
WSAEACCES = WSABASEERR + 13, |
|---|
| 508 |
WSAEFAULT = WSABASEERR + 14, |
|---|
| 509 |
WSAEINVAL = WSABASEERR + 22, |
|---|
| 510 |
WSAEMFILE = WSABASEERR + 24, |
|---|
| 511 |
WSAEWOULDBLOCK = WSABASEERR + 35, |
|---|
| 512 |
WSAEINPROGRESS = WSABASEERR + 36, // deprecated on WinSock2 |
|---|
| 513 |
WSAEALREADY = WSABASEERR + 37, |
|---|
| 514 |
WSAENOTSOCK = WSABASEERR + 38, |
|---|
| 515 |
WSAEDESTADDRREQ = WSABASEERR + 39, |
|---|
| 516 |
WSAEMSGSIZE = WSABASEERR + 40, |
|---|
| 517 |
WSAEPROTOTYPE = WSABASEERR + 41, |
|---|
| 518 |
WSAENOPROTOOPT = WSABASEERR + 42, |
|---|
| 519 |
WSAEPROTONOSUPPORT = WSABASEERR + 43, |
|---|
| 520 |
WSAESOCKTNOSUPPORT = WSABASEERR + 44, |
|---|
| 521 |
WSAEOPNOTSUPP = WSABASEERR + 45, |
|---|
| 522 |
WSAEPFNOSUPPORT = WSABASEERR + 46, |
|---|
| 523 |
WSAEAFNOSUPPORT = WSABASEERR + 47, |
|---|
| 524 |
WSAEADDRINUSE = WSABASEERR + 48, |
|---|
| 525 |
WSAEADDRNOTAVAIL = WSABASEERR + 49, |
|---|
| 526 |
WSAENETDOWN = WSABASEERR + 50, |
|---|
| 527 |
WSAENETUNREACH = WSABASEERR + 51, |
|---|
| 528 |
WSAENETRESET = WSABASEERR + 52, |
|---|
| 529 |
WSAECONNABORTED = WSABASEERR + 53, |
|---|
| 530 |
WSAECONNRESET = WSABASEERR + 54, |
|---|
| 531 |
WSAENOBUFS = WSABASEERR + 55, |
|---|
| 532 |
WSAEISCONN = WSABASEERR + 56, |
|---|
| 533 |
WSAENOTCONN = WSABASEERR + 57, |
|---|
| 534 |
WSAESHUTDOWN = WSABASEERR + 58, |
|---|
| 535 |
WSAETOOMANYREFS = WSABASEERR + 59, |
|---|
| 536 |
WSAETIMEDOUT = WSABASEERR + 60, |
|---|
| 537 |
WSAECONNREFUSED = WSABASEERR + 61, |
|---|
| 538 |
WSAELOOP = WSABASEERR + 62, |
|---|
| 539 |
WSAENAMETOOLONG = WSABASEERR + 63, |
|---|
| 540 |
WSAEHOSTDOWN = WSABASEERR + 64, |
|---|
| 541 |
WSAEHOSTUNREACH = WSABASEERR + 65, |
|---|
| 542 |
WSAENOTEMPTY = WSABASEERR + 66, |
|---|
| 543 |
WSAEPROCLIM = WSABASEERR + 67, |
|---|
| 544 |
WSAEUSERS = WSABASEERR + 68, |
|---|
| 545 |
WSAEDQUOT = WSABASEERR + 69, |
|---|
| 546 |
WSAESTALE = WSABASEERR + 70, |
|---|
| 547 |
WSAEREMOTE = WSABASEERR + 71, |
|---|
| 548 |
WSAEDISCON = WSABASEERR + 101, |
|---|
| 549 |
WSASYSNOTREADY = WSABASEERR + 91, |
|---|
| 550 |
WSAVERNOTSUPPORTED = WSABASEERR + 92, |
|---|
| 551 |
WSANOTINITIALISED = WSABASEERR + 93, |
|---|
| 552 |
WSAHOST_NOT_FOUND = WSABASEERR + 1001, |
|---|
| 553 |
WSATRY_AGAIN = WSABASEERR + 1002, |
|---|
| 554 |
WSANO_RECOVERY = WSABASEERR + 1003, |
|---|
| 555 |
WSANO_DATA = WSABASEERR + 1004, |
|---|
| 556 |
WSANO_ADDRESS = WSANO_DATA, |
|---|
| 557 |
|
|---|
| 558 |
// WinSock2 specific error codes |
|---|
| 559 |
WSAENOMORE = WSABASEERR + 102, |
|---|
| 560 |
WSAECANCELLED = WSABASEERR + 103, |
|---|
| 561 |
WSAEINVALIDPROCTABLE = WSABASEERR + 104, |
|---|
| 562 |
WSAEINVALIDPROVIDER = WSABASEERR + 105, |
|---|
| 563 |
WSAEPROVIDERFAILEDINIT = WSABASEERR + 106, |
|---|
| 564 |
WSASYSCALLFAILURE = WSABASEERR + 107, |
|---|
| 565 |
WSASERVICE_NOT_FOUND = WSABASEERR + 108, |
|---|
| 566 |
WSATYPE_NOT_FOUND = WSABASEERR + 109, |
|---|
| 567 |
WSA_E_NO_MORE = WSABASEERR + 110, |
|---|
| 568 |
WSA_E_CANCELLED = WSABASEERR + 111, |
|---|
| 569 |
WSAEREFUSED = WSABASEERR + 112, |
|---|
| 570 |
|
|---|
| 571 |
// WS QualityofService errors |
|---|
| 572 |
WSA_QOS_RECEIVERS = WSABASEERR + 1005, |
|---|
| 573 |
WSA_QOS_SENDERS = WSABASEERR + 1006, |
|---|
| 574 |
WSA_QOS_NO_SENDERS = WSABASEERR + 1007, |
|---|
| 575 |
WSA_QOS_NO_RECEIVERS = WSABASEERR + 1008, |
|---|
| 576 |
WSA_QOS_REQUEST_CONFIRMED = WSABASEERR + 1009, |
|---|
| 577 |
WSA_QOS_ADMISSION_FAILURE = WSABASEERR + 1010, |
|---|
| 578 |
WSA_QOS_POLICY_FAILURE = WSABASEERR + 1011, |
|---|
| 579 |
WSA_QOS_BAD_STYLE = WSABASEERR + 1012, |
|---|
| 580 |
WSA_QOS_BAD_OBJECT = WSABASEERR + 1013, |
|---|
| 581 |
WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014, |
|---|
| 582 |
WSA_QOS_GENERIC_ERROR = WSABASEERR + 1015, |
|---|
| 583 |
WSA_QOS_ESERVICETYPE = WSABASEERR + 1016, |
|---|
| 584 |
WSA_QOS_EFLOWSPEC = WSABASEERR + 1017, |
|---|
| 585 |
WSA_QOS_EPROVSPECBUF = WSABASEERR + 1018, |
|---|
| 586 |
WSA_QOS_EFILTERSTYLE = WSABASEERR + 1019, |
|---|
| 587 |
WSA_QOS_EFILTERTYPE = WSABASEERR + 1020, |
|---|
| 588 |
WSA_QOS_EFILTERCOUNT = WSABASEERR + 1021, |
|---|
| 589 |
WSA_QOS_EOBJLENGTH = WSABASEERR + 1022, |
|---|
| 590 |
WSA_QOS_EFLOWCOUNT = WSABASEERR + 1023, |
|---|
| 591 |
WSA_QOS_EUNKOWNPSOBJ = WSABASEERR + 1024, |
|---|
| 592 |
WSA_QOS_EPOLICYOBJ = WSABASEERR + 1025, |
|---|
| 593 |
WSA_QOS_EFLOWDESC = WSABASEERR + 1026, |
|---|
| 594 |
WSA_QOS_EPSFLOWSPEC = WSABASEERR + 1027, |
|---|
| 595 |
WSA_QOS_EPSFILTERSPEC = WSABASEERR + 1028, |
|---|
| 596 |
WSA_QOS_ESDMODEOBJ = WSABASEERR + 1029, |
|---|
| 597 |
WSA_QOS_ESHAPERATEOBJ = WSABASEERR + 1030, |
|---|
| 598 |
WSA_QOS_RESERVED_PETYPE = WSABASEERR + 1031 |
|---|
| 599 |
} |
|---|
| 600 |
|
|---|
| 601 |
alias WSAGetLastError h_errno; |
|---|
| 602 |
|
|---|
| 603 |
enum : int { |
|---|
| 604 |
HOST_NOT_FOUND = WSAHOST_NOT_FOUND, |
|---|
| 605 |
TRY_AGAIN = WSATRY_AGAIN, |
|---|
| 606 |
NO_RECOVERY = WSANO_RECOVERY, |
|---|
| 607 |
NO_DATA = WSANO_DATA, |
|---|
| 608 |
NO_ADDRESS = WSANO_ADDRESS |
|---|
| 609 |
} |
|---|
| 610 |
|
|---|
| 611 |
extern (Windows) { |
|---|
| 612 |
SOCKET accept(SOCKET, SOCKADDR*, int*); |
|---|
| 613 |
int bind(SOCKET, CPtr!(SOCKADDR), int); |
|---|
| 614 |
int closesocket(SOCKET); |
|---|
| 615 |
int connect(SOCKET, CPtr!(SOCKADDR), int); |
|---|
| 616 |
int ioctlsocket(SOCKET, int, u_long*); |
|---|
| 617 |
int getpeername(SOCKET, SOCKADDR*, int*); |
|---|
| 618 |
int getsockname(SOCKET, SOCKADDR*, int*); |
|---|
| 619 |
int getsockopt(SOCKET, int, int, void*, int*); |
|---|
| 620 |
uint inet_addr(CPtr!(char)); |
|---|
| 621 |
int listen(SOCKET, int); |
|---|
| 622 |
int recv(SOCKET, ubyte*, int, int); |
|---|
| 623 |
int recvfrom(SOCKET, ubyte*, int, int, SOCKADDR*, int*); |
|---|
| 624 |
int send(SOCKET, CPtr!(ubyte), int, int); |
|---|
| 625 |
int sendto(SOCKET, CPtr!(ubyte), int, int, CPtr!(SOCKADDR), int); |
|---|
| 626 |
int setsockopt(SOCKET, int, int, CPtr!(void), int); |
|---|
| 627 |
int shutdown(SOCKET, int); |
|---|
| 628 |
SOCKET socket(int, int, int); |
|---|
| 629 |
|
|---|
| 630 |
alias typeof(&accept) LPFN_ACCEPT; |
|---|
| 631 |
alias typeof(&bind) LPFN_BIND; |
|---|
| 632 |
alias typeof(&closesocket) LPFN_CLOSESOCKET; |
|---|
| 633 |
alias typeof(&connect) LPFN_CONNECT; |
|---|
| 634 |
alias typeof(&ioctlsocket) LPFN_IOCTLSOCKET; |
|---|
| 635 |
alias typeof(&getpeername) LPFN_GETPEERNAME; |
|---|
| 636 |
alias typeof(&getsockname) LPFN_GETSOCKNAME; |
|---|
| 637 |
alias typeof(&getsockopt) LPFN_GETSOCKOPT; |
|---|
| 638 |
alias typeof(&inet_addr) LPFN_INET_ADDR; |
|---|
| 639 |
alias typeof(&listen) LPFN_LISTEN; |
|---|
| 640 |
alias typeof(&recv) LPFN_RECV; |
|---|
| 641 |
alias typeof(&recvfrom) LPFN_RECVFROM; |
|---|
| 642 |
alias typeof(&send) LPFN_SEND; |
|---|
| 643 |
alias typeof(&sendto) LPFN_SENDTO; |
|---|
| 644 |
alias typeof(&setsockopt) LPFN_SETSOCKOPT; |
|---|
| 645 |
alias typeof(&shutdown) LPFN_SHUTDOWN; |
|---|
| 646 |
alias typeof(&socket) LPFN_SOCKET; |
|---|
| 647 |
} |
|---|
| 648 |
|
|---|
| 649 |
extern(Windows) { |
|---|
| 650 |
char* inet_ntoa(IN_ADDR); |
|---|
| 651 |
HOSTENT* gethostbyaddr(CPtr!(char), int, int); |
|---|
| 652 |
HOSTENT* gethostbyname(CPtr!(char)); |
|---|
| 653 |
SERVENT* getservbyport(int, CPtr!(char)); |
|---|
| 654 |
SERVENT* getservbyname(CPtr!(char), CPtr!(char)); |
|---|
| 655 |
PROTOENT* getprotobynumber(int); |
|---|
| 656 |
PROTOENT* getprotobyname(CPtr!(char)); |
|---|
| 657 |
|
|---|
| 658 |
/* NOTE: DK: in the original headers, these were declared with |
|---|
| 659 |
PASCAL linkage. Since this is at odds with the definition |
|---|
| 660 |
of the functions themselves, and also since MinGW seems to |
|---|
| 661 |
treat the two interchangably, I have moved them here. */ |
|---|
| 662 |
alias typeof(&inet_ntoa) LPFN_INET_NTOA; |
|---|
| 663 |
alias typeof(&gethostbyaddr) LPFN_GETHOSTBYADDR; |
|---|
| 664 |
alias typeof(&gethostbyname) LPFN_GETHOSTBYNAME; |
|---|
| 665 |
alias typeof(&getservbyport) LPFN_GETSERVBYPORT; |
|---|
| 666 |
alias typeof(&getservbyname) LPFN_GETSERVBYNAME; |
|---|
| 667 |
alias typeof(&getprotobynumber) LPFN_GETPROTOBYNUMBER; |
|---|
| 668 |
alias typeof(&getprotobyname) LPFN_GETPROTOBYNAME; |
|---|
| 669 |
} |
|---|
| 670 |
|
|---|
| 671 |
extern(Windows) { |
|---|
| 672 |
int WSAStartup(WORD, LPWSADATA); |
|---|
| 673 |
int WSACleanup(); |
|---|
| 674 |
void WSASetLastError(int); |
|---|
| 675 |
int WSAGetLastError(); |
|---|
| 676 |
|
|---|
| 677 |
alias typeof(&WSAStartup) LPFN_WSASTARTUP; |
|---|
| 678 |
alias typeof(&WSACleanup) LPFN_WSACLEANUP; |
|---|
| 679 |
alias typeof(&WSASetLastError) LPFN_WSASETLASTERROR; |
|---|
| 680 |
alias typeof(&WSAGetLastError) LPFN_WSAGETLASTERROR; |
|---|
| 681 |
} |
|---|
| 682 |
|
|---|
| 683 |
/* |
|---|
| 684 |
* Pseudo-blocking functions are deprecated in WinSock2 |
|---|
| 685 |
* spec. Use threads instead. |
|---|
| 686 |
*/ |
|---|
| 687 |
deprecated extern(Windows) { |
|---|
| 688 |
BOOL WSAIsBlocking(); |
|---|
| 689 |
int WSAUnhookBlockingHook(); |
|---|
| 690 |
FARPROC WSASetBlockingHook(FARPROC); |
|---|
| 691 |
int WSACancelBlockingCall(); |
|---|
| 692 |
|
|---|
| 693 |
alias typeof(&WSAIsBlocking) LPFN_WSAISBLOCKING; |
|---|
| 694 |
alias typeof(&WSAUnhookBlockingHook) LPFN_WSAUNHOOKBLOCKINGHOOK; |
|---|
| 695 |
alias typeof(&WSASetBlockingHook) LPFN_WSASETBLOCKINGHOOK; |
|---|
| 696 |
alias typeof(&WSACancelBlockingCall) LPFN_WSACANCELBLOCKINGCALL; |
|---|
| 697 |
} |
|---|
| 698 |
|
|---|
| 699 |
extern(Windows) { |
|---|
| 700 |
HANDLE WSAAsyncGetServByName(HWND, u_int, CPtr!(char), CPtr!(char), char*, int); |
|---|
| 701 |
HANDLE WSAAsyncGetServByPort(HWND, u_int, int, CPtr!(char), char*, int); |
|---|
| 702 |
HANDLE WSAAsyncGetProtoByName(HWND, u_int, CPtr!(char), char*, int); |
|---|
| 703 |
HANDLE WSAAsyncGetProtoByNumber(HWND, u_int, int, char*, int); |
|---|
| 704 |
HANDLE WSAAsyncGetHostByName(HWND, u_int, CPtr!(char), char*, int); |
|---|
| 705 |
HANDLE WSAAsyncGetHostByAddr(HWND, u_int, CPtr!(char), int, int, char*, int); |
|---|
| 706 |
int WSACancelAsyncRequest(HANDLE); |
|---|
| 707 |
int WSAAsyncSelect(SOCKET, HWND, u_int, long); |
|---|
| 708 |
|
|---|
| 709 |
alias typeof(&WSAAsyncGetServByName) LPFN_WSAAsyncGetServByName; |
|---|
| 710 |
alias typeof(&WSAAsyncGetServByPort) LPFN_WSAASYNCGETSERVBYPORT; |
|---|
| 711 |
alias typeof(&WSAAsyncGetProtoByName) LPFN_WSAASYNCGETPROTOBYNAME; |
|---|
| 712 |
alias typeof(&WSAAsyncGetProtoByNumber) LPFN_WSAASYNCGETPROTOBYNUMBER; |
|---|
| 713 |
alias typeof(&WSAAsyncGetHostByName) LPFN_WSAASYNCGETHOSTBYNAME; |
|---|
| 714 |
alias typeof(&WSAAsyncGetHostByAddr) LPFN_WSAASYNCGETHOSTBYADDR; |
|---|
| 715 |
alias typeof(&WSACancelAsyncRequest) LPFN_WSACANCELASYNCREQUEST; |
|---|
| 716 |
alias typeof(&WSAAsyncSelect) LPFN_WSAASYNCSELECT; |
|---|
| 717 |
} |
|---|
| 718 |
|
|---|
| 719 |
extern(Windows) { |
|---|
| 720 |
u_long htonl(u_long); |
|---|
| 721 |
u_long ntohl(u_long); |
|---|
| 722 |
u_short htons(u_short); |
|---|
| 723 |
u_short ntohs(u_short); |
|---|
| 724 |
int select(int nfds, fd_set*, fd_set*, fd_set*, CPtr!(TIMEVAL)); |
|---|
| 725 |
|
|---|
| 726 |
alias typeof(&htonl) LPFN_HTONL; |
|---|
| 727 |
alias typeof(&ntohl) LPFN_NTOHL; |
|---|
| 728 |
alias typeof(&htons) LPFN_HTONS; |
|---|
| 729 |
alias typeof(&ntohs) LPFN_NTOHS; |
|---|
| 730 |
alias typeof(&select) LPFN_SELECT; |
|---|
| 731 |
|
|---|
| 732 |
int gethostname(char*, int); |
|---|
| 733 |
alias typeof(&gethostname) LPFN_GETHOSTNAME; |
|---|
| 734 |
} |
|---|
| 735 |
|
|---|
| 736 |
alias MAKELONG WSAMAKEASYNCREPLY, WSAMAKESELECTREPLY; |
|---|
| 737 |
alias LOWORD WSAGETASYNCBUFLEN, WSAGETSELECTEVENT; |
|---|
| 738 |
alias HIWORD WSAGETASYNCERROR, WSAGETSELECTERROR; |
|---|
| 739 |
|
|---|
| 740 |
|
|---|
| 741 |
alias INADDR_ANY ADDR_ANY; |
|---|
| 742 |
|
|---|
| 743 |
bool IN_CLASSD(int i) { return (i & 0xf0000000) == 0xe0000000; } |
|---|
| 744 |
|
|---|
| 745 |
const IN_CLASSD_NET = 0xf0000000; |
|---|
| 746 |
const IN_CLASSD_NSHIFT = 28; |
|---|
| 747 |
const IN_CLASSD_HOST = 0x0fffffff; |
|---|
| 748 |
|
|---|
| 749 |
alias IN_CLASSD IN_MULTICAST; |
|---|
| 750 |
|
|---|
| 751 |
const FROM_PROTOCOL_INFO = -1; |
|---|
| 752 |
|
|---|
| 753 |
enum : int { |
|---|
| 754 |
SO_GROUP_ID = 0x2001, |
|---|
| 755 |
SO_GROUP_PRIORITY, |
|---|
| 756 |
SO_MAX_MSG_SIZE, |
|---|
| 757 |
SO_PROTOCOL_INFOA, |
|---|
| 758 |
SO_PROTOCOL_INFOW |
|---|
| 759 |
} |
|---|
| 760 |
// NOTE: These are logically part of the previous enum, but you can't |
|---|
| 761 |
// have version statements in an enum body... |
|---|
| 762 |
version(Unicode) |
|---|
| 763 |
const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW; |
|---|
| 764 |
else |
|---|
| 765 |
const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA; |
|---|
| 766 |
|
|---|
| 767 |
const PVD_CONFIG = 0x3001; |
|---|
| 768 |
|
|---|
| 769 |
const MSG_INTERRUPT = 0x10; |
|---|
| 770 |
//const MSG_MAXIOVLEN = 16; // Already declared above |
|---|
| 771 |
|
|---|
| 772 |
alias HANDLE WSAEVENT; |
|---|
| 773 |
alias LPHANDLE LPWSAEVENT; |
|---|
| 774 |
alias OVERLAPPED WSAOVERLAPPED; |
|---|
| 775 |
alias OVERLAPPED* LPWSAOVERLAPPED; |
|---|
| 776 |
|
|---|
| 777 |
private import win32.winerror; |
|---|
| 778 |
private import win32.winbase; |
|---|
| 779 |
|
|---|
| 780 |
enum { |
|---|
| 781 |
WSA_IO_PENDING = ERROR_IO_PENDING, |
|---|
| 782 |
WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE, |
|---|
| 783 |
WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE, |
|---|
| 784 |
WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER, |
|---|
| 785 |
WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY, |
|---|
| 786 |
WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED |
|---|
| 787 |
} |
|---|
| 788 |
|
|---|
| 789 |
const WSA_INVALID_EVENT = cast(WSAEVENT)null; |
|---|
| 790 |
const WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS; |
|---|
| 791 |
const WSA_WAIT_FAILED = cast(DWORD)-1; |
|---|
| 792 |
const WSA_WAIT_EVENT_0 = WAIT_OBJECT_0; |
|---|
| 793 |
const WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION; |
|---|
| 794 |
const WSA_WAIT_TIMEOUT = WAIT_TIMEOUT; |
|---|
| 795 |
const WSA_INFINITE = INFINITE; |
|---|
| 796 |
|
|---|
| 797 |
struct WSABUF { |
|---|
| 798 |
uint len; |
|---|
| 799 |
char* buf; |
|---|
| 800 |
} |
|---|
| 801 |
|
|---|
| 802 |
alias WSABUF* LPWSABUF; |
|---|
| 803 |
|
|---|
| 804 |
enum GUARANTEE { |
|---|
| 805 |
BestEffortService, |
|---|
| 806 |
ControlledLoadService, |
|---|
| 807 |
PredictiveService, |
|---|
| 808 |
GuaranteedDelayService, |
|---|
| 809 |
GuaranteedService |
|---|
| 810 |
} |
|---|
| 811 |
|
|---|
| 812 |
/* TODO: FLOWSPEC and related definitions belong in qos.h */ |
|---|
| 813 |
|
|---|
| 814 |
/* |
|---|
| 815 |
Windows Sockets 2 Application Programming Interface, |
|---|
| 816 |
revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE |
|---|
| 817 |
and the elements of _flowspec, but the type uint32 is not defined |
|---|
| 818 |
or used anywhere else in the w32api. For now, just use |
|---|
| 819 |
unsigned int, which is 32 bits on _WIN32 and _WIN64. |
|---|
| 820 |
*/ |
|---|
| 821 |
|
|---|
| 822 |
alias uint SERVICETYPE; |
|---|
| 823 |
|
|---|
| 824 |
struct FLOWSPEC { |
|---|
| 825 |
uint TokenRate; |
|---|
| 826 |
uint TokenBucketSize; |
|---|
| 827 |
uint PeakBandwidth; |
|---|
| 828 |
uint Latency; |
|---|
| 829 |
uint DelayVariation; |
|---|
| 830 |
SERVICETYPE ServiceType; |
|---|
| 831 |
uint MaxSduSize; |
|---|
| 832 |
uint MinimumPolicedSize; |
|---|
| 833 |
} |
|---|
| 834 |
|
|---|
| 835 |
alias FLOWSPEC* PFLOWSPEC, LPFLOWSPEC; |
|---|
| 836 |
|
|---|
| 837 |
struct QOS |
|---|
| 838 |
{ |
|---|
| 839 |
FLOWSPEC SendingFlowspec; |
|---|
| 840 |
FLOWSPEC ReceivingFlowspec; |
|---|
| 841 |
WSABUF ProviderSpecific; |
|---|
| 842 |
} |
|---|
| 843 |
|
|---|
| 844 |
alias QOS* LPQOS; |
|---|
| 845 |
|
|---|
| 846 |
enum { |
|---|
| 847 |
CF_ACCEPT, |
|---|
| 848 |
CF_REJECT, |
|---|
| 849 |
CF_DEFER |
|---|
| 850 |
} |
|---|
| 851 |
|
|---|
| 852 |
// REM: Already defined above |
|---|
| 853 |
/*enum { |
|---|
| 854 |
SD_RECEIVE, |
|---|
| 855 |
SD_SEND, |
|---|
| 856 |
SD_BOTH |
|---|
| 857 |
}*/ |
|---|
| 858 |
|
|---|
| 859 |
alias uint GROUP; |
|---|
| 860 |
|
|---|
| 861 |
enum { |
|---|
| 862 |
SG_UNCONSTRAINED_GROUP = 0x01, |
|---|
| 863 |
SG_CONSTRAINED_GROUP |
|---|
| 864 |
} |
|---|
| 865 |
|
|---|
| 866 |
struct WSANETWORKEVENTS { |
|---|
| 867 |
int lNetworkEvents; |
|---|
| 868 |
int[FD_MAX_EVENTS] iErrorCode; |
|---|
| 869 |
} |
|---|
| 870 |
|
|---|
| 871 |
alias WSANETWORKEVENTS* LPWSANETWORKEVENTS; |
|---|
| 872 |
|
|---|
| 873 |
const MAX_PROTOCOL_CHAIN = 7; |
|---|
| 874 |
|
|---|
| 875 |
const BASE_PROTOCOL = 1; |
|---|
| 876 |
const LAYERED_PROTOCOL = 0; |
|---|
| 877 |
|
|---|
| 878 |
enum WSAESETSERVICEOP |
|---|
| 879 |
{ |
|---|
| 880 |
RNRSERVICE_REGISTER = 0, |
|---|
| 881 |
RNRSERVICE_DEREGISTER, |
|---|
| 882 |
RNRSERVICE_DELETE |
|---|
| 883 |
} |
|---|
| 884 |
|
|---|
| 885 |
alias WSAESETSERVICEOP* PWSAESETSERVICEOP, LPWSAESETSERVICEOP; |
|---|
| 886 |
|
|---|
| 887 |
struct AFPROTOCOLS { |
|---|
| 888 |
INT iAddressFamily; |
|---|
| 889 |
INT iProtocol; |
|---|
| 890 |
} |
|---|
| 891 |
|
|---|
| 892 |
alias AFPROTOCOLS* PAFPROTOCOLS, LPAFPROTOCOLS; |
|---|
| 893 |
|
|---|
| 894 |
enum WSAECOMPARATOR |
|---|
| 895 |
{ |
|---|
| 896 |
COMP_EQUAL = 0, |
|---|
| 897 |
COMP_NOTLESS |
|---|
| 898 |
} |
|---|
| 899 |
|
|---|
| 900 |
alias WSAECOMPARATOR* PWSAECOMPARATOR, LPWSAECOMPARATOR; |
|---|
| 901 |
|
|---|
| 902 |
struct WSAVERSION |
|---|
| 903 |
{ |
|---|
| 904 |
DWORD dwVersion; |
|---|
| 905 |
WSAECOMPARATOR ecHow; |
|---|
| 906 |
} |
|---|
| 907 |
|
|---|
| 908 |
alias WSAVERSION* PWSAVERSION, LPWSAVERSION; |
|---|
| 909 |
|
|---|
| 910 |
// Import for SOCKET_ADDRESS, CSADDR_INFO |
|---|
| 911 |
// import win32.nspapi; |
|---|
| 912 |
//#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */ |
|---|
| 913 |
//#define __CSADDR_T_DEFINED |
|---|
| 914 |
|
|---|
| 915 |
struct SOCKET_ADDRESS { |
|---|
| 916 |
LPSOCKADDR lpSockaddr; |
|---|
| 917 |
INT iSockaddrLength; |
|---|
| 918 |
} |
|---|
| 919 |
|
|---|
| 920 |
alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; |
|---|
| 921 |
|
|---|
| 922 |
struct CSADDR_INFO { |
|---|
| 923 |
SOCKET_ADDRESS LocalAddr; |
|---|
| 924 |
SOCKET_ADDRESS RemoteAddr; |
|---|
| 925 |
INT iSocketType; |
|---|
| 926 |
INT iProtocol; |
|---|
| 927 |
} |
|---|
| 928 |
|
|---|
| 929 |
alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; |
|---|
| 930 |
|
|---|
| 931 |
//#endif |
|---|
| 932 |
|
|---|
| 933 |
struct SOCKET_ADDRESS_LIST { |
|---|
| 934 |
INT iAddressCount; |
|---|
| 935 |
SOCKET_ADDRESS[1] _Address; |
|---|
| 936 |
SOCKET_ADDRESS* Address() { return _Address.ptr; } |
|---|
| 937 |
} |
|---|
| 938 |
|
|---|
| 939 |
alias SOCKET_ADDRESS_LIST* LPSOCKET_ADDRESS_LIST; |
|---|
| 940 |
|
|---|
| 941 |
// TODO: Import wtypes/nspapi? |
|---|
| 942 |
//#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */ |
|---|
| 943 |
//#define __BLOB_T_DEFINED |
|---|
| 944 |
struct BLOB { |
|---|
| 945 |
ULONG cbSize; |
|---|
| 946 |
BYTE* pBlobData; |
|---|
| 947 |
} |
|---|
| 948 |
|
|---|
| 949 |
alias BLOB* PBLOB, LPBLOB; |
|---|
| 950 |
//#endif |
|---|
| 951 |
|
|---|
| 952 |
struct WSAQUERYSETA |
|---|
| 953 |
{ |
|---|
| 954 |
DWORD dwSize; |
|---|
| 955 |
LPSTR lpszServiceInstanceName; |
|---|
| 956 |
LPGUID lpServiceClassId; |
|---|
| 957 |
LPWSAVERSION lpVersion; |
|---|
| 958 |
LPSTR lpszComment; |
|---|
| 959 |
DWORD dwNameSpace; |
|---|
| 960 |
LPGUID lpNSProviderId; |
|---|
| 961 |
LPSTR lpszContext; |
|---|
| 962 |
DWORD dwNumberOfProtocols; |
|---|
| 963 |
LPAFPROTOCOLS lpafpProtocols; |
|---|
| 964 |
LPSTR lpszQueryString; |
|---|
| 965 |
DWORD dwNumberOfCsAddrs; |
|---|
| 966 |
LPCSADDR_INFO lpcsaBuffer; |
|---|
| 967 |
DWORD dwOutputFlags; |
|---|
| 968 |
LPBLOB lpBlob; |
|---|
| 969 |
} |
|---|
| 970 |
|
|---|
| 971 |
alias WSAQUERYSETA* PWSAQUERYSETA, LPWSAQUERYSETA; |
|---|
| 972 |
|
|---|
| 973 |
struct WSAQUERYSETW |
|---|
| 974 |
{ |
|---|
| 975 |
DWORD dwSize; |
|---|
| 976 |
LPWSTR lpszServiceInstanceName; |
|---|
| 977 |
LPGUID lpServiceClassId; |
|---|
| 978 |
LPWSAVERSION lpVersion; |
|---|
| 979 |
LPWSTR lpszComment; |
|---|
| 980 |
DWORD dwNameSpace; |
|---|
| 981 |
LPGUID lpNSProviderId; |
|---|
| 982 |
LPWSTR lpszContext; |
|---|
| 983 |
DWORD dwNumberOfProtocols; |
|---|
| 984 |
LPAFPROTOCOLS lpafpProtocols; |
|---|
| 985 |
LPWSTR lpszQueryString; |
|---|
| 986 |
DWORD dwNumberOfCsAddrs; |
|---|
| 987 |
LPCSADDR_INFO lpcsaBuffer; |
|---|
| 988 |
DWORD dwOutputFlags; |
|---|
| 989 |
LPBLOB lpBlob; |
|---|
| 990 |
} |
|---|
| 991 |
|
|---|
| 992 |
|
|---|
| 993 |
alias WSAQUERYSETW* PWSAQUERYSETW, LPWSAQUERYSETW; |
|---|
| 994 |
|
|---|
| 995 |
version(Unicode) { |
|---|
| 996 |
alias WSAQUERYSETW WSAQUERYSET; |
|---|
| 997 |
alias PWSAQUERYSETW PWSAQUERYSET; |
|---|
| 998 |
alias LPWSAQUERYSETW LPWSAQUERYSET; |
|---|
| 999 |
} else { |
|---|
| 1000 |
alias WSAQUERYSETA WSAQUERYSET; |
|---|
| 1001 |
alias PWSAQUERYSETA PWSAQUERYSET; |
|---|
| 1002 |
alias LPWSAQUERYSETA LPWSAQUERYSET; |
|---|
| 1003 |
} |
|---|
| 1004 |
|
|---|
| 1005 |
const int |
|---|
| 1006 |
LUP_DEEP = 0x0001, |
|---|
| 1007 |
LUP_CONTAINERS = 0x0002, |
|---|
| 1008 |
LUP_NOCONTAINERS = 0x0004, |
|---|
| 1009 |
LUP_NEAREST = 0x0008, |
|---|
| 1010 |
LUP_RETURN_NAME = 0x0010, |
|---|
| 1011 |
LUP_RETURN_TYPE = 0x0020, |
|---|
| 1012 |
LUP_RETURN_VERSION = 0x0040, |
|---|
| 1013 |
LUP_RETURN_COMMENT = 0x0080, |
|---|
| 1014 |
LUP_RETURN_ADDR = 0x0100, |
|---|
| 1015 |
LUP_RETURN_BLOB = 0x0200, |
|---|
| 1016 |
LUP_RETURN_ALIASES = 0x0400, |
|---|
| 1017 |
LUP_RETURN_QUERY_STRING = 0x0800, |
|---|
| 1018 |
LUP_RETURN_ALL = 0x0FF0, |
|---|
| 1019 |
LUP_RES_SERVICE = 0x8000, |
|---|
| 1020 |
LUP_FLUSHCACHE = 0x1000, |
|---|
| 1021 |
LUP_FLUSHPREVIOUS = 0x2000; |
|---|
| 1022 |
|
|---|
| 1023 |
struct WSANSCLASSINFOA |
|---|
| 1024 |
{ |
|---|
| 1025 |
LPSTR lpszName; |
|---|
| 1026 |
DWORD dwNameSpace; |
|---|
| 1027 |
DWORD dwValueType; |
|---|
| 1028 |
DWORD dwValueSize; |
|---|
| 1029 |
LPVOID lpValue; |
|---|
| 1030 |
} |
|---|
| 1031 |
|
|---|
| 1032 |
alias WSANSCLASSINFOA* PWSANSCLASSINFOA, LPWSANSCLASSINFOA; |
|---|
| 1033 |
|
|---|
| 1034 |
struct WSANSCLASSINFOW |
|---|
| 1035 |
{ |
|---|
| 1036 |
LPWSTR lpszName; |
|---|
| 1037 |
DWORD dwNameSpace; |
|---|
| 1038 |
DWORD dwValueType; |
|---|
| 1039 |
DWORD dwValueSize; |
|---|
| 1040 |
LPVOID lpValue; |
|---|
| 1041 |
} |
|---|
| 1042 |
|
|---|
| 1043 |
alias WSANSCLASSINFOW* PWSANSCLASSINFOW, LPWSANSCLASSINFOW; |
|---|
| 1044 |
|
|---|
| 1045 |
version(Unicode) { |
|---|
| 1046 |
alias WSANSCLASSINFOW WSANSCLASSINFO; |
|---|
| 1047 |
alias PWSANSCLASSINFOW PWSANSCLASSINFO; |
|---|
| 1048 |
alias LPWSANSCLASSINFOW LPWSANSCLASSINFO; |
|---|
| 1049 |
} else { |
|---|
| 1050 |
alias WSANSCLASSINFOA WSANSCLASSINFO; |
|---|
| 1051 |
alias PWSANSCLASSINFOA PWSANSCLASSINFO; |
|---|
| 1052 |
alias LPWSANSCLASSINFOA LPWSANSCLASSINFO; |
|---|
| 1053 |
} |
|---|
| 1054 |
|
|---|
| 1055 |
struct WSASERVICECLASSINFOA |
|---|
| 1056 |
{ |
|---|
| 1057 |
LPGUID lpServiceClassId; |
|---|
| 1058 |
LPSTR lpszServiceClassName; |
|---|
| 1059 |
DWORD dwCount; |
|---|
| 1060 |
LPWSANSCLASSINFOA lpClassInfos; |
|---|
| 1061 |
} |
|---|
| 1062 |
|
|---|
| 1063 |
alias WSASERVICECLASSINFOA* PWSASERVICECLASSINFOA, LPWSASERVICECLASSINFOA; |
|---|
| 1064 |
|
|---|
| 1065 |
struct WSASERVICECLASSINFOW |
|---|
| 1066 |
{ |
|---|
| 1067 |
LPGUID lpServiceClassId; |
|---|
| 1068 |
LPWSTR lpszServiceClassName; |
|---|
| 1069 |
DWORD dwCount; |
|---|
| 1070 |
LPWSANSCLASSINFOW lpClassInfos; |
|---|
| 1071 |
} |
|---|
| 1072 |
|
|---|
| 1073 |
alias WSASERVICECLASSINFOW* PWSASERVICECLASSINFOW, LPWSASERVICECLASSINFOW; |
|---|
| 1074 |
|
|---|
| 1075 |
version(Unicode) { |
|---|
| 1076 |
alias WSASERVICECLASSINFOW WSASERVICECLASSINFO; |
|---|
| 1077 |
alias PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; |
|---|
| 1078 |
alias LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; |
|---|
| 1079 |
} else { |
|---|
| 1080 |
alias WSASERVICECLASSINFOA WSASERVICECLASSINFO; |
|---|
| 1081 |
alias PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; |
|---|
| 1082 |
alias LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; |
|---|
| 1083 |
} |
|---|
| 1084 |
|
|---|
| 1085 |
struct WSANAMESPACE_INFOA { |
|---|
| 1086 |
GUID NSProviderId; |
|---|
| 1087 |
DWORD dwNameSpace; |
|---|
| 1088 |
BOOL fActive; |
|---|
| 1089 |
DWORD dwVersion; |
|---|
| 1090 |
LPSTR lpszIdentifier; |
|---|
| 1091 |
} |
|---|
| 1092 |
|
|---|
| 1093 |
alias WSANAMESPACE_INFOA* PWSANAMESPACE_INFOA, LPWSANAMESPACE_INFOA; |
|---|
| 1094 |
|
|---|
| 1095 |
struct WSANAMESPACE_INFOW { |
|---|
| 1096 |
GUID NSProviderId; |
|---|
| 1097 |
DWORD dwNameSpace; |
|---|
| 1098 |
BOOL fActive; |
|---|
| 1099 |
DWORD dwVersion; |
|---|
| 1100 |
LPWSTR lpszIdentifier; |
|---|
| 1101 |
} |
|---|
| 1102 |
|
|---|
| 1103 |
alias WSANAMESPACE_INFOW* PWSANAMESPACE_INFOW, LPWSANAMESPACE_INFOW; |
|---|
| 1104 |
|
|---|
| 1105 |
version(Unicode) { |
|---|
| 1106 |
alias WSANAMESPACE_INFOW WSANAMESPACE_INFO; |
|---|
| 1107 |
alias PWSANAMESPACE_INFOW PWSANAMESPACE_INFO; |
|---|
| 1108 |
alias LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO; |
|---|
| 1109 |
} else { |
|---|
| 1110 |
alias WSANAMESPACE_INFOA WSANAMESPACE_INFO; |
|---|
| 1111 |
alias PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; |
|---|
| 1112 |
alias LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; |
|---|
| 1113 |
} |
|---|
| 1114 |
|
|---|
| 1115 |
struct WSAPROTOCOLCHAIN { |
|---|
| 1116 |
int ChainLen; |
|---|
| 1117 |
DWORD[MAX_PROTOCOL_CHAIN] ChainEntries; |
|---|
| 1118 |
} |
|---|
| 1119 |
|
|---|
| 1120 |
alias WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN; |
|---|
| 1121 |
|
|---|
| 1122 |
const WSAPROTOCOL_LEN = 255; |
|---|
| 1123 |
|
|---|
| 1124 |
struct WSAPROTOCOL_INFOA { |
|---|
| 1125 |
DWORD dwServiceFlags1; |
|---|
| 1126 |
DWORD dwServiceFlags2; |
|---|
| 1127 |
DWORD dwServiceFlags3; |
|---|
| 1128 |
DWORD dwServiceFlags4; |
|---|
| 1129 |
DWORD dwProviderFlags; |
|---|
| 1130 |
GUID ProviderId; |
|---|
| 1131 |
DWORD dwCatalogEntryId; |
|---|
| 1132 |
WSAPROTOCOLCHAIN ProtocolChain; |
|---|
| 1133 |
int iVersion; |
|---|
| 1134 |
int iAddressFamily; |
|---|
| 1135 |
int iMaxSockAddr; |
|---|
| 1136 |
int iMinSockAddr; |
|---|
| 1137 |
int iSocketType; |
|---|
| 1138 |
int iProtocol; |
|---|
| 1139 |
int iProtocolMaxOffset; |
|---|
| 1140 |
int iNetworkByteOrder; |
|---|
| 1141 |
int iSecurityScheme; |
|---|
| 1142 |
DWORD dwMessageSize; |
|---|
| 1143 |
DWORD dwProviderReserved; |
|---|
| 1144 |
CHAR[WSAPROTOCOL_LEN+1] szProtocol; |
|---|
| 1145 |
} |
|---|
| 1146 |
|
|---|
| 1147 |
alias WSAPROTOCOL_INFOA* LPWSAPROTOCOL_INFOA; |
|---|
| 1148 |
|
|---|
| 1149 |
struct WSAPROTOCOL_INFOW { |
|---|
| 1150 |
DWORD dwServiceFlags1; |
|---|
| 1151 |
DWORD dwServiceFlags2; |
|---|
| 1152 |
DWORD dwServiceFlags3; |
|---|
| 1153 |
DWORD dwServiceFlags4; |
|---|
| 1154 |
DWORD dwProviderFlags; |
|---|
| 1155 |
GUID ProviderId; |
|---|
| 1156 |
DWORD dwCatalogEntryId; |
|---|
| 1157 |
WSAPROTOCOLCHAIN ProtocolChain; |
|---|
| 1158 |
int iVersion; |
|---|
| 1159 |
int iAddressFamily; |
|---|
| 1160 |
int iMaxSockAddr; |
|---|
| 1161 |
int iMinSockAddr; |
|---|
| 1162 |
int iSocketType; |
|---|
| 1163 |
int iProtocol; |
|---|
| 1164 |
int iProtocolMaxOffset; |
|---|
| 1165 |
int iNetworkByteOrder; |
|---|
| 1166 |
int iSecurityScheme; |
|---|
| 1167 |
DWORD dwMessageSize; |
|---|
| 1168 |
DWORD dwProviderReserved; |
|---|
| 1169 |
WCHAR[WSAPROTOCOL_LEN+1] szProtocol; |
|---|
| 1170 |
} |
|---|
| 1171 |
|
|---|
| 1172 |
alias WSAPROTOCOL_INFOW* LPWSAPROTOCOL_INFOW; |
|---|
| 1173 |
|
|---|
| 1174 |
// TODO: Below fptr was defined as "CALLBACK" for linkage; is this right? |
|---|
| 1175 |
extern(C) { |
|---|
| 1176 |
alias int function(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD) LPCONDITIONPROC; |
|---|
| 1177 |
} |
|---|
| 1178 |
|
|---|
| 1179 |
extern(Windows) { |
|---|
| 1180 |
alias void function(DWORD, DWORD, LPWSAOVERLAPPED, DWORD) LPWSAOVERLAPPED_COMPLETION_ROUTINE; |
|---|
| 1181 |
} |
|---|
| 1182 |
|
|---|
| 1183 |
version(Unicode) { |
|---|
| 1184 |
alias WSAPROTOCOL_INFOW WSAPROTOCOL_INFO; |
|---|
| 1185 |
alias LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO; |
|---|
| 1186 |
} else { |
|---|
| 1187 |
alias WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; |
|---|
| 1188 |
alias LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; |
|---|
| 1189 |
} |
|---|
| 1190 |
|
|---|
| 1191 |
/* Needed for XP & .NET Server function WSANSPIoctl. */ |
|---|
| 1192 |
enum WSACOMPLETIONTYPE { |
|---|
| 1193 |
NSP_NOTIFY_IMMEDIATELY = 0, |
|---|
| 1194 |
NSP_NOTIFY_HWND, |
|---|
| 1195 |
NSP_NOTIFY_EVENT, |
|---|
| 1196 |
NSP_NOTIFY_PORT, |
|---|
| 1197 |
NSP_NOTIFY_APC |
|---|
| 1198 |
} |
|---|
| 1199 |
|
|---|
| 1200 |
alias WSACOMPLETIONTYPE* PWSACOMPLETIONTYPE, LPWSACOMPLETIONTYPE; |
|---|
| 1201 |
|
|---|
| 1202 |
struct WSACOMPLETION { |
|---|
| 1203 |
WSACOMPLETIONTYPE Type; |
|---|
| 1204 |
union WSACOMPLETION_PARAMETERS { |
|---|
| 1205 |
struct WSACOMPLETION_WINDOWMESSAGE { |
|---|
| 1206 |
HWND hWnd; |
|---|
| 1207 |
UINT uMsg; |
|---|
| 1208 |
WPARAM context; |
|---|
| 1209 |
} |
|---|
| 1210 |
WSACOMPLETION_WINDOWMESSAGE WindowMessage; |
|---|
| 1211 |
struct WSACOMPLETION_EVENT { |
|---|
| 1212 |
LPWSAOVERLAPPED lpOverlapped; |
|---|
| 1213 |
} |
|---|
| 1214 |
WSACOMPLETION_EVENT Event; |
|---|
| 1215 |
struct WSACOMPLETION_APC { |
|---|
| 1216 |
LPWSAOVERLAPPED lpOverlapped; |
|---|
| 1217 |
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; |
|---|
| 1218 |
} |
|---|
| 1219 |
WSACOMPLETION_APC Apc; |
|---|
| 1220 |
struct WSACOMPLETION_PORT { |
|---|
| 1221 |
LPWSAOVERLAPPED lpOverlapped; |
|---|
| 1222 |
HANDLE hPort; |
|---|
| 1223 |
ULONG_PTR Key; |
|---|
| 1224 |
} |
|---|
| 1225 |
WSACOMPLETION_PORT Port; |
|---|
| 1226 |
} |
|---|
| 1227 |
WSACOMPLETION_PARAMETERS Parameters; |
|---|
| 1228 |
} |
|---|
| 1229 |
|
|---|
| 1230 |
alias WSACOMPLETION* PWSACOMPLETION, LPWSACOMPLETION; |
|---|
| 1231 |
|
|---|
| 1232 |
const int |
|---|
| 1233 |
PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001, |
|---|
| 1234 |
PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002, |
|---|
| 1235 |
PFL_HIDDEN = 0x00000004, |
|---|
| 1236 |
PFL_MATCHES_PROTOCOL_ZERO = 0x00000008; |
|---|
| 1237 |
|
|---|
| 1238 |
const int |
|---|
| 1239 |
XP1_CONNECTIONLESS = 0x00000001, |
|---|
| 1240 |
XP1_GUARANTEED_DELIVERY = 0x00000002, |
|---|
| 1241 |
XP1_GUARANTEED_ORDER = 0x00000004, |
|---|
| 1242 |
XP1_MESSAGE_ORIENTED = 0x00000008, |
|---|
| 1243 |
XP1_PSEUDO_STREAM = 0x00000010, |
|---|
| 1244 |
XP1_GRACEFUL_CLOSE = 0x00000020, |
|---|
| 1245 |
XP1_EXPEDITED_DATA = 0x00000040, |
|---|
| 1246 |
XP1_CONNECT_DATA = 0x00000080, |
|---|
| 1247 |
XP1_DISCONNECT_DATA = 0x00000100, |
|---|
| 1248 |
XP1_SUPPORT_BROADCAST = 0x00000200, |
|---|
| 1249 |
XP1_SUPPORT_MULTIPOINT = 0x00000400, |
|---|
| 1250 |
XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800, |
|---|
| 1251 |
XP1_MULTIPOINT_DATA_PLANE = 0x00001000, |
|---|
| 1252 |
XP1_QOS_SUPPORTED = 0x00002000, |
|---|
| 1253 |
XP1_INTERRUPT = 0x00004000, |
|---|
| 1254 |
XP1_UNI_SEND = 0x00008000, |
|---|
| 1255 |
XP1_UNI_RECV = 0x00010000, |
|---|
| 1256 |
XP1_IFS_HANDLES = 0x00020000, |
|---|
| 1257 |
XP1_PARTIAL_MESSAGE = 0x00040000; |
|---|
| 1258 |
|
|---|
| 1259 |
enum : int { |
|---|
| 1260 |
BIGENDIAN = 0x0000, |
|---|
| 1261 |
LITTLEENDIAN = 0x0001 |
|---|
| 1262 |
} |
|---|
| 1263 |
|
|---|
| 1264 |
const SECURITY_PROTOCOL_NONE = 0x0000; |
|---|
| 1265 |
|
|---|
| 1266 |
const JL_SENDER_ONLY = 0x01; |
|---|
| 1267 |
const JL_RECEIVER_ONLY = 0x02; |
|---|
| 1268 |
const JL_BOTH = 0x04; |
|---|
| 1269 |
|
|---|
| 1270 |
const WSA_FLAG_OVERLAPPED = 0x01; |
|---|
| 1271 |
const WSA_FLAG_MULTIPOINT_C_ROOT = 0x02; |
|---|
| 1272 |
const WSA_FLAG_MULTIPOINT_C_LEAF = 0x04; |
|---|
| 1273 |
const WSA_FLAG_MULTIPOINT_D_ROOT = 0x08; |
|---|
| 1274 |
const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; |
|---|
| 1275 |
|
|---|
| 1276 |
const int IOC_UNIX = 0x00000000; |
|---|
| 1277 |
const int IOC_WS2 = 0x08000000; |
|---|
| 1278 |
const int IOC_PROTOCOL = 0x10000000; |
|---|
| 1279 |
const int IOC_VENDOR = 0x18000000; |
|---|
| 1280 |
|
|---|
| 1281 |
template _WSAIO(int x, int y) { const int _WSAIO = IOC_VOID | x | y; } |
|---|
| 1282 |
template _WSAIOR(int x, int y) { const int _WSAIOR = IOC_OUT | x | y; } |
|---|
| 1283 |
template _WSAIOW(int x, int y) { const int _WSAIOW = IOC_IN | x | y; } |
|---|
| 1284 |
template _WSAIORW(int x, int y) { const int _WSAIORW = IOC_INOUT | x | y; } |
|---|
| 1285 |
|
|---|
| 1286 |
const int SIO_ASSOCIATE_HANDLE = _WSAIOW!(IOC_WS2,1); |
|---|
| 1287 |
const int SIO_ENABLE_CIRCULAR_QUEUEING = _WSAIO!(IOC_WS2,2); |
|---|
| 1288 |
const int SIO_FIND_ROUTE = _WSAIOR!(IOC_WS2,3); |
|---|
| 1289 |
const int SIO_FLUSH = _WSAIO!(IOC_WS2,4); |
|---|
| 1290 |
const int SIO_GET_BROADCAST_ADDRESS = _WSAIOR!(IOC_WS2,5); |
|---|
| 1291 |
const int SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW!(IOC_WS2,6); |
|---|
| 1292 |
const int SIO_GET_QOS = _WSAIORW!(IOC_WS2,7); |
|---|
| 1293 |
const int SIO_GET_GROUP_QOS = _WSAIORW!(IOC_WS2,8); |
|---|
| 1294 |
const int SIO_MULTIPOINT_LOOPBACK = _WSAIOW!(IOC_WS2,9); |
|---|
| 1295 |
const int SIO_MULTICAST_SCOPE = _WSAIOW!(IOC_WS2,10); |
|---|
| 1296 |
const int SIO_SET_QOS = _WSAIOW!(IOC_WS2,11); |
|---|
| 1297 |
const int SIO_SET_GROUP_QOS = _WSAIOW!(IOC_WS2,12); |
|---|
| 1298 |
const int SIO_TRANSLATE_HANDLE = _WSAIORW!(IOC_WS2,13); |
|---|
| 1299 |
const int SIO_ROUTING_INTERFACE_QUERY = _WSAIORW!(IOC_WS2,20); |
|---|
| 1300 |
const int SIO_ROUTING_INTERFACE_CHANGE = _WSAIOW!(IOC_WS2,21); |
|---|
| 1301 |
const int SIO_ADDRESS_LIST_QUERY = _WSAIOR!(IOC_WS2,22); |
|---|
| 1302 |
const int SIO_ADDRESS_LIST_CHANGE = _WSAIO!(IOC_WS2,23); |
|---|
| 1303 |
const int SIO_QUERY_TARGET_PNP_HANDLE = _WSAIOR!(IOC_WS2,24); |
|---|
| 1304 |
const int SIO_NSP_NOTIFY_CHANGE = _WSAIOW!(IOC_WS2,25); |
|---|
| 1305 |
|
|---|
| 1306 |
const int TH_NETDEV = 1; |
|---|
| 1307 |
const int TH_TAPI = 2; |
|---|
| 1308 |
|
|---|
| 1309 |
|
|---|
| 1310 |
extern(Windows) { |
|---|
| 1311 |
SOCKET WSAAccept(SOCKET, SOCKADDR*, LPINT, LPCONDITIONPROC, DWORD); |
|---|
| 1312 |
INT WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); |
|---|
| 1313 |
INT WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD); |
|---|
| 1314 |
BOOL WSACloseEvent(WSAEVENT); |
|---|
| 1315 |
int WSAConnect(SOCKET, CPtr!(SOCKADDR), int, LPWSABUF, LPWSABUF, LPQOS, LPQOS); |
|---|
| 1316 |
WSAEVENT WSACreateEvent(); |
|---|
| 1317 |
int WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA); |
|---|
| 1318 |
int WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW); |
|---|
| 1319 |
INT WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA); |
|---|
| 1320 |
INT WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW); |
|---|
| 1321 |
int WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS); |
|---|
| 1322 |
int WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD); |
|---|
| 1323 |
int WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD); |
|---|
| 1324 |
int WSAEventSelect(SOCKET, WSAEVENT, int); |
|---|
| 1325 |
BOOL WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD); |
|---|
| 1326 |
BOOL WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS); |
|---|
| 1327 |
INT WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA); |
|---|
| 1328 |
INT WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW); |
|---|
| 1329 |
INT WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD); |
|---|
| 1330 |
INT WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD); |
|---|
| 1331 |
int WSAHtonl(SOCKET, uint, uint*); |
|---|
| 1332 |
int WSAHtons(SOCKET, ushort, ushort*); |
|---|
| 1333 |
INT WSAInstallServiceClassA(LPWSASERVICECLASSINFOA); |
|---|
| 1334 |
INT WSAInstallServiceClassW(LPWSASERVICECLASSINFOW); |
|---|
| 1335 |
int WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
|---|
| 1336 |
SOCKET WSAJoinLeaf(SOCKET, CPtr!(SOCKADDR), int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD); |
|---|
| 1337 |
INT WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE); |
|---|
| 1338 |
INT WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE); |
|---|
| 1339 |
INT WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA); |
|---|
| 1340 |
INT WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW); |
|---|
| 1341 |
INT WSALookupServiceEnd(HANDLE); |
|---|
| 1342 |
int WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */ |
|---|
| 1343 |
int WSANtohl(SOCKET, uint, uint*); |
|---|
| 1344 |
int WSANtohs(SOCKET, ushort, ushort*); |
|---|
| 1345 |
int WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
|---|
| 1346 |
int WSARecvDisconnect(SOCKET, LPWSABUF); |
|---|
| 1347 |
int WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, SOCKADDR*, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
|---|
| 1348 |
INT WSARemoveServiceClass(LPGUID); |
|---|
| 1349 |
BOOL WSAResetEvent(WSAEVENT); |
|---|
| 1350 |
int WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
|---|
| 1351 |
int WSASendDisconnect(SOCKET, LPWSABUF); |
|---|
| 1352 |
int WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, CPtr!(SOCKADDR), int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
|---|
| 1353 |
BOOL WSASetEvent(WSAEVENT); |
|---|
| 1354 |
INT WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); // NB: was declared with "WSAAPI" linkage |
|---|
| 1355 |
INT WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD); |
|---|
| 1356 |
SOCKET WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD); |
|---|
| 1357 |
SOCKET WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD); |
|---|
| 1358 |
INT WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT); |
|---|
| 1359 |
INT WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT); |
|---|
| 1360 |
DWORD WSAWaitForMultipleEvents(DWORD, CPtr!(WSAEVENT), BOOL, DWORD, BOOL); |
|---|
| 1361 |
|
|---|
| 1362 |
alias typeof(&WSAAccept) LPFN_WSAACCEPT; |
|---|
| 1363 |
alias typeof(&WSAAddressToStringA) LPFN_WSAADDRESSTOSTRINGA; |
|---|
| 1364 |
alias typeof(&WSAAddressToStringW) LPFN_WSAADDRESSTOSTRINGW; |
|---|
| 1365 |
alias typeof(&WSACloseEvent) LPFN_WSACLOSEEVENT; |
|---|
| 1366 |
alias typeof(&WSAConnect) LPFN_WSACONNECT; |
|---|
| 1367 |
alias typeof(&WSACreateEvent) LPFN_WSACREATEEVENT; |
|---|
| 1368 |
alias typeof(&WSADuplicateSocketA) LPFN_WSADUPLICATESOCKETA; |
|---|
| 1369 |
alias typeof(&WSADuplicateSocketW) LPFN_WSADUPLICATESOCKETW; |
|---|
| 1370 |
alias typeof(&WSAEnumNameSpaceProvidersA) LPFN_WSAENUMNAMESPACEPROVIDERSA; |
|---|
| 1371 |
alias typeof(&WSAEnumNameSpaceProvidersW) LPFN_WSAENUMNAMESPACEPROVIDERSW; |
|---|
| 1372 |
alias typeof(&WSAEnumNetworkEvents) LPFN_WSAENUMNETWORKEVENTS; |
|---|
| 1373 |
alias typeof(&WSAEnumProtocolsA) LPFN_WSAENUMPROTOCOLSA; |
|---|
| 1374 |
alias typeof(&WSAEnumProtocolsW) LPFN_WSAENUMPROTOCOLSW; |
|---|
| 1375 |
alias typeof(&WSAEventSelect) LPFN_WSAEVENTSELECT; |
|---|
| 1376 |
alias typeof(&WSAGetOverlappedResult) LPFN_WSAGETOVERLAPPEDRESULT; |
|---|
| 1377 |
alias typeof(&WSAGetQOSByName) LPFN_WSAGETQOSBYNAME; |
|---|
| 1378 |
alias typeof(&WSAGetServiceClassInfoA) LPFN_WSAGETSERVICECLASSINFOA; |
|---|
| 1379 |
alias typeof(&WSAGetServiceClassInfoW) LPFN_WSAGETSERVICECLASSINFOW; |
|---|
| 1380 |
alias typeof(&WSAGetServiceClassNameByClassIdA) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA; |
|---|
| 1381 |
alias typeof(&WSAGetServiceClassNameByClassIdW) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW; |
|---|
| 1382 |
alias typeof(&WSAHtonl) LPFN_WSAHTONL; |
|---|
| 1383 |
alias typeof(&WSAHtons) LPFN_WSAHTONS; |
|---|
| 1384 |
alias typeof(&WSAInstallServiceClassA) LPFN_WSAINSTALLSERVICECLASSA; |
|---|
| 1385 |
alias typeof(&WSAInstallServiceClassW) LPFN_WSAINSTALLSERVICECLASSW; |
|---|
| 1386 |
alias typeof(&WSAIoctl) LPFN_WSAIOCTL; |
|---|
| 1387 |
alias typeof(&WSAJoinLeaf) LPFN_WSAJOINLEAF; |
|---|
| 1388 |
alias typeof(&WSALookupServiceBeginA) LPFN_WSALOOKUPSERVICEBEGINA; |
|---|
| 1389 |
alias typeof(&WSALookupServiceBeginW) LPFN_WSALOOKUPSERVICEBEGINW; |
|---|
| 1390 |
alias typeof(&WSALookupServiceNextA) LPFN_WSALOOKUPSERVICENEXTA; |
|---|
| 1391 |
alias typeof(&WSALookupServiceNextW) LPFN_WSALOOKUPSERVICENEXTW; |
|---|
| 1392 |
alias typeof(&WSALookupServiceEnd) LPFN_WSALOOKUPSERVICEEND; |
|---|
| 1393 |
alias typeof(&WSANSPIoctl) LPFN_WSANSPIoctl; |
|---|
| 1394 |
alias typeof(&WSANtohl) LPFN_WSANTOHL; |
|---|
| 1395 |
alias typeof(&WSANtohs) LPFN_WSANTOHS; |
|---|
| 1396 |
alias typeof(&WSARecv) LPFN_WSARECV; |
|---|
| 1397 |
alias typeof(&WSARecvDisconnect) LPFN_WSARECVDISCONNECT; |
|---|
| 1398 |
alias typeof(&WSARecvFrom) LPFN_WSARECVFROM; |
|---|
| 1399 |
alias typeof(&WSARemoveServiceClass) LPFN_WSAREMOVESERVICECLASS; |
|---|
| 1400 |
alias typeof(&WSAResetEvent) LPFN_WSARESETEVENT; |
|---|
| 1401 |
alias typeof(&WSASend) LPFN_WSASEND; |
|---|
| 1402 |
alias typeof(&WSASendDisconnect) LPFN_WSASENDDISCONNECT; |
|---|
| 1403 |
alias typeof(&WSASendTo) LPFN_WSASENDTO; |
|---|
| 1404 |
alias typeof(&WSASetEvent) LPFN_WSASETEVENT; |
|---|
| 1405 |
alias typeof(&WSASetServiceA) LPFN_WSASETSERVICEA; |
|---|
| 1406 |
alias typeof(&WSASetServiceW) LPFN_WSASETSERVICEW; |
|---|
| 1407 |
alias typeof(&WSASocketA) LPFN_WSASOCKETA; |
|---|
| 1408 |
alias typeof(&WSASocketW) LPFN_WSASOCKETW; |
|---|
| 1409 |
alias typeof(&WSAStringToAddressA) LPFN_WSASTRINGTOADDRESSA; |
|---|
| 1410 |
alias typeof(&WSAStringToAddressW) LPFN_WSASTRINGTOADDRESSW; |
|---|
| 1411 |
alias typeof(&WSAWaitForMultipleEvents) LPFN_WSAWAITFORMULTIPLEEVENTS; |
|---|
| 1412 |
} |
|---|
| 1413 |
|
|---|
| 1414 |
version(Unicode) { |
|---|
| 1415 |
alias LPFN_WSAADDRESSTOSTRINGW LPFN_WSAADDRESSTOSTRING; |
|---|
| 1416 |
alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; |
|---|
| 1417 |
alias LPFN_WSAENUMNAMESPACEPROVIDERSW LPFN_WSAENUMNAMESPACEPROVIDERS; |
|---|
| 1418 |
alias LPFN_WSAENUMPROTOCOLSW LPFN_WSAENUMPROTOCOLS; |
|---|
| 1419 |
alias LPFN_WSAGETSERVICECLASSINFOW LPFN_WSAGETSERVICECLASSINFO; |
|---|
| 1420 |
alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; |
|---|
| 1421 |
alias LPFN_WSAINSTALLSERVICECLASSW LPFN_WSAINSTALLSERVICECLASS; |
|---|
| 1422 |
alias LPFN_WSALOOKUPSERVICEBEGINW LPFN_WSALOOKUPSERVICEBEGIN; |
|---|
| 1423 |
alias LPFN_WSALOOKUPSERVICENEXTW LPFN_WSALOOKUPSERVICENEXT; |
|---|
| 1424 |
alias LPFN_WSASETSERVICEW LPFN_WSASETSERVICE; |
|---|
| 1425 |
alias LPFN_WSASOCKETW LPFN_WSASOCKET; |
|---|
| 1426 |
alias LPFN_WSASTRINGTOADDRESSW LPFN_WSASTRINGTOADDRESS; |
|---|
| 1427 |
alias WSAAddressToStringW WSAAddressToString; |
|---|
| 1428 |
alias WSADuplicateSocketW WSADuplicateSocket; |
|---|
| 1429 |
alias WSAEnumNameSpaceProvidersW WSAEnumNameSpaceProviders; |
|---|
| 1430 |
alias WSAEnumProtocolsW WSAEnumProtocols; |
|---|
| 1431 |
alias WSAGetServiceClassInfoW WSAGetServiceClassInfo; |
|---|
| 1432 |
alias WSAGetServiceClassNameByClassIdW WSAGetServiceClassNameByClassId; |
|---|
| 1433 |
alias WSASetServiceW WSASetService; |
|---|
| 1434 |
alias WSASocketW WSASocket; |
|---|
| 1435 |
alias WSAStringToAddressW WSAStringToAddress; |
|---|
| 1436 |
alias WSALookupServiceBeginW WSALookupServiceBegin; |
|---|
| 1437 |
alias WSALookupServiceNextW WSALookupServiceNext; |
|---|
| 1438 |
alias WSAInstallServiceClassW WSAInstallServiceClass; |
|---|
| 1439 |
} else { |
|---|
| 1440 |
alias LPFN_WSAADDRESSTOSTRINGA LPFN_WSAADDRESSTOSTRING; |
|---|
| 1441 |
alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; |
|---|
| 1442 |
alias LPFN_WSAENUMNAMESPACEPROVIDERSA LPFN_WSAENUMNAMESPACEPROVIDERS; |
|---|
| 1443 |
alias LPFN_WSAENUMPROTOCOLSA LPFN_WSAENUMPROTOCOLS; |
|---|
| 1444 |
alias LPFN_WSAGETSERVICECLASSINFOA LPFN_WSAGETSERVICECLASSINFO; |
|---|
| 1445 |
alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; |
|---|
| 1446 |
alias LPFN_WSAINSTALLSERVICECLASSA LPFN_WSAINSTALLSERVICECLASS; |
|---|
| 1447 |
alias LPFN_WSALOOKUPSERVICEBEGINA LPFN_WSALOOKUPSERVICEBEGIN; |
|---|
| 1448 |
alias LPFN_WSALOOKUPSERVICENEXTA LPFN_WSALOOKUPSERVICENEXT; |
|---|
| 1449 |
alias LPFN_WSASETSERVICEA LPFN_WSASETSERVICE; |
|---|
| 1450 |
alias LPFN_WSASOCKETA LPFN_WSASOCKET; |
|---|
| 1451 |
alias LPFN_WSASTRINGTOADDRESSA LPFN_WSASTRINGTOADDRESS; |
|---|
| 1452 |
alias WSAAddressToStringA WSAAddressToString; |
|---|
| 1453 |
alias WSADuplicateSocketA WSADuplicateSocket; |
|---|
| 1454 |
alias WSAEnumNameSpaceProvidersA WSAEnumNameSpaceProviders; |
|---|
| 1455 |
alias WSAEnumProtocolsA WSAEnumProtocols; |
|---|
| 1456 |
alias WSAGetServiceClassInfoA WSAGetServiceClassInfo; |
|---|
| 1457 |
alias WSAGetServiceClassNameByClassIdA WSAGetServiceClassNameByClassId; |
|---|
| 1458 |
alias WSAInstallServiceClassA WSAInstallServiceClass; |
|---|
| 1459 |
alias WSALookupServiceBeginA WSALookupServiceBegin; |
|---|
| 1460 |
alias WSALookupServiceNextA WSALookupServiceNext; |
|---|
| 1461 |
alias WSASocketA WSASocket; |
|---|
| 1462 |
alias WSAStringToAddressA WSAStringToAddress; |
|---|
| 1463 |
alias WSASetServiceA WSASetService; |
|---|
| 1464 |
} |
|---|