blob: 05b62f2c43152b09b48f125073e515537df25809 [file] [log] [blame]
Peter Atashian98615952015-06-08 02:20:331// Copyright © 2015, Peter Atashian
2// Licensed under the MIT License <LICENSE.md>
3//! definitions to be used with the WinSock 2 DLL and WinSock 2 applications.
4//!
5//! This header file corresponds to version 2.2.x of the WinSock API specification.
6pub const WINSOCK_VERSION: ::WORD = 2 | (2 << 8);
7pub type u_char = ::c_uchar;
8pub type u_short = ::c_ushort;
9pub type u_int = ::c_uint;
10pub type u_long = ::c_ulong;
11pub type u_int64 = ::__uint64;
12pub type SOCKET = ::UINT_PTR;
skdltmxnfa2cf4f2015-07-23 02:54:3013pub type GROUP = ::c_uint;
Peter Atashian98615952015-06-08 02:20:3314pub const FD_SETSIZE: usize = 64;
skdltmxnfa2cf4f2015-07-23 02:54:3015pub const FD_MAX_EVENTS: usize = 10;
Peter Atashian04c79782016-03-05 01:44:5516STRUCT!{nodebug struct fd_set {
17 fd_count: u_int,
18 fd_array: [SOCKET; FD_SETSIZE],
19}}
Eh2406df60d5f2015-10-25 14:22:5320STRUCT!{struct timeval {
21 tv_sec: ::c_long,
22 tv_usec: ::c_long,
23}}
24STRUCT!{struct hostent {
25 h_name: *mut ::c_char,
26 h_aliases: *mut *mut ::c_char,
27 h_addrtype: ::c_short,
28 h_length: ::c_short,
29 h_addr_list: *mut *mut ::c_char,
30}}
31STRUCT!{struct netent {
32 n_name: *mut ::c_char,
33 n_aliases: *mut *mut ::c_char,
34 n_addrtype: ::c_short,
35 n_net: u_long,
36}}
Peter Atashian04c79782016-03-05 01:44:5537#[cfg(target_arch="x86")]
38STRUCT!{struct servent {
39 s_name: *mut ::c_char,
40 s_aliases: *mut *mut ::c_char,
41 s_port: ::c_short,
42 s_proto: *mut ::c_char,
43}}
44#[cfg(target_arch="x86_64")]
45STRUCT!{struct servent {
46 s_name: *mut ::c_char,
47 s_aliases: *mut *mut ::c_char,
48 s_proto: *mut ::c_char,
49 s_port: ::c_short,
50}}
Eh2406df60d5f2015-10-25 14:22:5351STRUCT!{struct protoent {
52 p_name: *mut ::c_char,
53 p_aliases: *mut *mut ::c_char,
54 p_proto: ::c_short,
55}}
skdltmxnfa2cf4f2015-07-23 02:54:3056pub const WSADESCRIPTION_LEN: usize = 256;
57pub const WSASYS_STATUS_LEN: usize = 128;
Peter Atashian04c79782016-03-05 01:44:5558#[cfg(target_arch="x86")]
59STRUCT!{nodebug struct WSADATA {
60 wVersion: ::WORD,
61 wHighVersion: ::WORD,
62 szDescription: [::c_char; WSADESCRIPTION_LEN + 1],
63 szSystemStatus: [::c_char; WSASYS_STATUS_LEN + 1],
64 iMaxSockets: ::c_ushort,
65 iMaxUdpDg: ::c_ushort,
66 lpVendorInfo: *mut ::c_char,
67}}
68#[cfg(target_arch="x86_64")]
69STRUCT!{nodebug struct WSADATA {
70 wVersion: ::WORD,
71 wHighVersion: ::WORD,
72 iMaxSockets: ::c_ushort,
73 iMaxUdpDg: ::c_ushort,
74 lpVendorInfo: *mut ::c_char,
75 szDescription: [::c_char; WSADESCRIPTION_LEN + 1],
76 szSystemStatus: [::c_char; WSASYS_STATUS_LEN + 1],
77}}
skdltmxnfa2cf4f2015-07-23 02:54:3078pub type LPWSADATA = *mut WSADATA;
skdltmxnfa2cf4f2015-07-23 02:54:3079//391
80pub const INVALID_SOCKET: SOCKET = !0;
81pub const SOCKET_ERROR: ::c_int = -1;
Eh2406df60d5f2015-10-25 14:22:5382STRUCT!{struct sockproto {
83 sp_family: u_short,
84 sp_protocol: u_short,
85}}
skdltmxnfa2cf4f2015-07-23 02:54:3086pub const PF_UNSPEC: ::c_int = ::AF_UNSPEC;
87pub const PF_UNIX: ::c_int = ::AF_UNIX;
88pub const PF_INET: ::c_int = ::AF_INET;
89pub const PF_IMPLINK: ::c_int = ::AF_IMPLINK;
90pub const PF_PUP: ::c_int = ::AF_PUP;
91pub const PF_CHAOS: ::c_int = ::AF_CHAOS;
92pub const PF_NS: ::c_int = ::AF_NS;
93pub const PF_IPX: ::c_int = ::AF_IPX;
94pub const PF_ISO: ::c_int = ::AF_ISO;
95pub const PF_OSI: ::c_int = ::AF_OSI;
96pub const PF_ECMA: ::c_int = ::AF_ECMA;
97pub const PF_DATAKIT: ::c_int = ::AF_DATAKIT;
98pub const PF_CCITT: ::c_int = ::AF_CCITT;
99pub const PF_SNA: ::c_int = ::AF_SNA;
100pub const PF_DECnet: ::c_int = ::AF_DECnet;
101pub const PF_DLI: ::c_int = ::AF_DLI;
102pub const PF_LAT: ::c_int = ::AF_LAT;
103pub const PF_HYLINK: ::c_int = ::AF_HYLINK;
104pub const PF_APPLETALK: ::c_int = ::AF_APPLETALK;
105pub const PF_VOICEVIEW: ::c_int = ::AF_VOICEVIEW;
106pub const PF_FIREFOX: ::c_int = ::AF_FIREFOX;
107pub const PF_UNKNOWN1: ::c_int = ::AF_UNKNOWN1;
108pub const PF_BAN: ::c_int = ::AF_BAN;
109pub const PF_ATM: ::c_int = ::AF_ATM;
110pub const PF_INET6: ::c_int = ::AF_INET6;
111pub const PF_BTH: ::c_int = ::AF_BTH;
112pub const PF_MAX: ::c_int = ::AF_MAX;
Eh2406df60d5f2015-10-25 14:22:53113STRUCT!{struct linger {
114 l_onoff: u_short,
115 l_linger: u_short,
116}}
skdltmxnfa2cf4f2015-07-23 02:54:30117pub const SOMAXCONN: ::c_int = 0x7fffffff;
skdltmxnfa2cf4f2015-07-23 02:54:30118pub type WSAEVENT = ::HANDLE;
119pub type LPWSAEVENT = ::LPHANDLE;
120pub type WSAOVERLAPPED = ::OVERLAPPED;
121pub type LPWSAOVERLAPPED = *mut ::OVERLAPPED;
skdltmxnfa2cf4f2015-07-23 02:54:30122pub const WSA_IO_PENDING: ::DWORD = ::ERROR_IO_PENDING;
123pub const WSA_IO_INCOMPLETE: ::DWORD = ::ERROR_IO_INCOMPLETE;
124pub const WSA_INVALID_HANDLE: ::DWORD = ::ERROR_INVALID_HANDLE;
125pub const WSA_INVALID_PARAMETER: ::DWORD = ::ERROR_INVALID_PARAMETER;
126pub const WSA_NOT_ENOUGH_MEMORY: ::DWORD = ::ERROR_NOT_ENOUGH_MEMORY;
127pub const WSA_OPERATION_ABORTED: ::DWORD = ::ERROR_OPERATION_ABORTED;
Eh2406df60d5f2015-10-25 14:22:53128STRUCT!{struct QOS {
129 SendingFlowspec: ::FLOWSPEC,
130 FLOWSPEC: ::FLOWSPEC,
131 ProviderSpecific: ::WSABUF,
132}}
skdltmxnfa2cf4f2015-07-23 02:54:30133pub type LPQOS = *mut QOS;
Eh2406df60d5f2015-10-25 14:22:53134STRUCT!{struct WSANETWORKEVENTS {
135 lNetworkEvents: ::c_long,
136 iErrorCode: [::c_int; FD_MAX_EVENTS],
137}}
skdltmxnfa2cf4f2015-07-23 02:54:30138pub type LPWSANETWORKEVENTS = *mut WSANETWORKEVENTS;
skdltmxnfa2cf4f2015-07-23 02:54:30139pub const MAX_PROTOCOL_CHAIN: usize = 7;
Eh2406df60d5f2015-10-25 14:22:53140STRUCT!{struct WSAPROTOCOLCHAIN {
141 ChainLen: ::c_int,
142 ChainEntries: [::DWORD; MAX_PROTOCOL_CHAIN],
143}}
skdltmxnfa2cf4f2015-07-23 02:54:30144pub type LPWSAPROTOCOLCHAIN = *mut WSAPROTOCOLCHAIN;
skdltmxnfa2cf4f2015-07-23 02:54:30145pub const WSAPROTOCOL_LEN: usize = 255;
Peter Atashian04c79782016-03-05 01:44:55146STRUCT!{nodebug struct WSAPROTOCOL_INFOA {
147 dwServiceFlags1: ::DWORD,
148 dwServiceFlags2: ::DWORD,
149 dwServiceFlags3: ::DWORD,
150 dwServiceFlags4: ::DWORD,
151 dwServiceFlags5: ::DWORD,
152 ProviderId: ::GUID,
153 dwCatalogEntryId: ::DWORD,
154 ProtocolChain: WSAPROTOCOLCHAIN,
155 iVersion: ::c_int,
156 iAddressFamily: ::c_int,
157 iMaxSockAddr: ::c_int,
158 iMinSockAddr: ::c_int,
159 iSocketType: ::c_int,
160 iProtocol: ::c_int,
161 iProtocolMaxOffset: ::c_int,
162 iNetworkByteOrder: ::c_int,
163 iSecurityScheme: ::c_int,
164 dwMessageSize: ::DWORD,
165 dwProviderReserved: ::DWORD,
166 szProtocol: [::CHAR; WSAPROTOCOL_LEN + 1],
167}}
skdltmxnfa2cf4f2015-07-23 02:54:30168pub type LPWSAPROTOCOL_INFOA = *mut WSAPROTOCOL_INFOA;
Peter Atashian04c79782016-03-05 01:44:55169STRUCT!{nodebug struct WSAPROTOCOL_INFOW {
170 dwServiceFlags1: ::DWORD,
171 dwServiceFlags2: ::DWORD,
172 dwServiceFlags3: ::DWORD,
173 dwServiceFlags4: ::DWORD,
174 dwServiceFlags5: ::DWORD,
175 ProviderId: ::GUID,
176 dwCatalogEntryId: ::DWORD,
177 ProtocolChain: WSAPROTOCOLCHAIN,
178 iVersion: ::c_int,
179 iAddressFamily: ::c_int,
180 iMaxSockAddr: ::c_int,
181 iMinSockAddr: ::c_int,
182 iSocketType: ::c_int,
183 iProtocol: ::c_int,
184 iProtocolMaxOffset: ::c_int,
185 iNetworkByteOrder: ::c_int,
186 iSecurityScheme: ::c_int,
187 dwMessageSize: ::DWORD,
188 dwProviderReserved: ::DWORD,
189 szProtocol: [::WCHAR; WSAPROTOCOL_LEN + 1],
190}}
skdltmxnfa2cf4f2015-07-23 02:54:30191pub type LPWSAPROTOCOL_INFOW = *mut WSAPROTOCOL_INFOW;
skdltmxnfa2cf4f2015-07-23 02:54:30192pub type LPCONDITIONPROC = Option<unsafe extern "system" fn(
193 lpCallerId: ::LPWSABUF, lpCallerData: ::LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS,
194 lpCalleeId: ::LPWSABUF, lpCalleeData: ::LPWSABUF, g: *mut GROUP, dwCallbackData: ::DWORD,
195) -> ::c_int>;
Peter Atashiand8e88202015-10-06 19:40:30196pub type LPWSAOVERLAPPED_COMPLETION_ROUTINE = Option<unsafe extern "system" fn(
skdltmxnfa2cf4f2015-07-23 02:54:30197 dwError: ::DWORD, cbTransferred: ::DWORD, lpOverlapped: LPWSAOVERLAPPED, dwFlags: ::DWORD,
198)>;
Eh24061573ab82015-10-31 19:59:55199ENUM!{enum WSACOMPLETIONTYPE {
skdltmxnfa2cf4f2015-07-23 02:54:30200 NSP_NOTIFY_IMMEDIATELY = 0,
201 NSP_NOTIFY_HWND,
202 NSP_NOTIFY_EVENT,
203 NSP_NOTIFY_PORT,
204 NSP_NOTIFY_APC,
Eh24061573ab82015-10-31 19:59:55205}}
skdltmxnfa2cf4f2015-07-23 02:54:30206pub type PWSACOMPLETIONTYPE = *mut WSACOMPLETIONTYPE;
207pub type LPWSACOMPLETIONTYPE = *mut WSACOMPLETIONTYPE;
Eh2406df60d5f2015-10-25 14:22:53208STRUCT!{struct WSACOMPLETION_WindowMessage {
209 hWnd: ::HWND,
210 uMsg: ::UINT,
211 context: ::WPARAM,
212}}
213STRUCT!{struct WSACOMPLETION_Event {
214 lpOverlapped: LPWSAOVERLAPPED,
215}}
Peter Atashian04c79782016-03-05 01:44:55216STRUCT!{nodebug struct WSACOMPLETION_Apc {
217 lpOverlapped: LPWSAOVERLAPPED,
218 lpfnCompletionProc: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
219}}
Eh2406df60d5f2015-10-25 14:22:53220STRUCT!{struct WSACOMPLETION_Port {
221 lpOverlapped: LPWSAOVERLAPPED,
222 hPort: ::HANDLE,
223 Key: ::ULONG_PTR,
224}}
Peter Atashian04c79782016-03-05 01:44:55225#[cfg(target_arch="x86")]
226STRUCT!{struct WSACOMPLETION {
227 Type: WSACOMPLETIONTYPE,
228 Parameters: [u8; 12],
229}}
230#[cfg(target_arch="x86_64")]
231STRUCT!{struct WSACOMPLETION {
232 Type: WSACOMPLETIONTYPE,
233 Parameters: [u8; 24],
234}}
skdltmxnfa2cf4f2015-07-23 02:54:30235UNION!(WSACOMPLETION, Parameters, WindowMessage, WindowMessage_mut, WSACOMPLETION_WindowMessage);
236UNION!(WSACOMPLETION, Parameters, Event, Event_mut, WSACOMPLETION_Event);
237UNION!(WSACOMPLETION, Parameters, Apc, Apc_mut, WSACOMPLETION_Apc);
238UNION!(WSACOMPLETION, Parameters, Port, Port_mut, WSACOMPLETION_Port);
239pub type PWSACOMPLETION = *mut WSACOMPLETION;
240pub type LPWSACOMPLETION = *mut WSACOMPLETION;
Eh2406df60d5f2015-10-25 14:22:53241STRUCT!{struct AFPROTOCOLS {
242 iAddressFamily: ::INT,
243 iProtocol: ::INT,
244}}
skdltmxnfa2cf4f2015-07-23 02:54:30245pub type PAFPROTOCOLS = *mut AFPROTOCOLS;
246pub type LPAFPROTOCOLS = *mut AFPROTOCOLS;
Eh24061573ab82015-10-31 19:59:55247ENUM!{enum WSAECOMPARATOR {
skdltmxnfa2cf4f2015-07-23 02:54:30248 COMP_EQUAL = 0,
249 COMP_NOTLESS,
Eh24061573ab82015-10-31 19:59:55250}}
skdltmxnfa2cf4f2015-07-23 02:54:30251pub type PWSAECOMPARATOR = *mut WSAECOMPARATOR;
252pub type LPWSAECOMPARATOR = *mut WSAECOMPARATOR;
Eh2406df60d5f2015-10-25 14:22:53253STRUCT!{struct WSAVERSION {
254 dwVersion: ::DWORD,
255 ecHow: WSAECOMPARATOR,
256}}
skdltmxnfa2cf4f2015-07-23 02:54:30257pub type PWSAVERSION = *mut WSAVERSION;
258pub type LPWSAVERSION = *mut WSAVERSION;
Eh2406df60d5f2015-10-25 14:22:53259STRUCT!{struct WSAQUERYSETA {
260 dwSize: ::DWORD,
261 lpszServiceInstanceName: ::LPSTR,
262 lpServiceClassId: ::LPGUID,
263 lpVersion: LPWSAVERSION,
264 lpszComment: ::LPSTR,
265 dwNameSpace: ::DWORD,
266 lpNSProviderId: ::LPGUID,
267 lpszContext: ::LPSTR,
268 dwNumberOfProtocols: ::DWORD,
269 lpafpProtocols: LPAFPROTOCOLS,
270 lpszQueryString: ::LPSTR,
271 dwNumberOfCsAddrs: ::DWORD,
272 lpcsaBuffer: ::LPCSADDR_INFO,
273 dwOutputFlags: ::DWORD,
274 lpBlob: ::LPBLOB,
275}}
skdltmxnfa2cf4f2015-07-23 02:54:30276pub type PWSAQUERYSETA = *mut WSAQUERYSETA;
277pub type LPWSAQUERYSETA = *mut WSAQUERYSETA;
Eh2406df60d5f2015-10-25 14:22:53278STRUCT!{struct WSAQUERYSETW {
279 dwSize: ::DWORD,
280 lpszServiceInstanceName: ::LPWSTR,
281 lpServiceClassId: ::LPGUID,
282 lpVersion: LPWSAVERSION,
283 lpszComment: ::LPWSTR,
284 dwNameSpace: ::DWORD,
285 lpNSProviderId: ::LPGUID,
286 lpszContext: ::LPWSTR,
287 dwNumberOfProtocols: ::DWORD,
288 lpafpProtocols: LPAFPROTOCOLS,
289 lpszQueryString: ::LPWSTR,
290 dwNumberOfCsAddrs: ::DWORD,
291 lpcsaBuffer: ::LPCSADDR_INFO,
292 dwOutputFlags: ::DWORD,
293 lpBlob: ::LPBLOB,
294}}
skdltmxnfa2cf4f2015-07-23 02:54:30295pub type PWSAQUERYSETW = *mut WSAQUERYSETW;
296pub type LPWSAQUERYSETW = *mut WSAQUERYSETW;
Eh2406df60d5f2015-10-25 14:22:53297STRUCT!{struct WSAQUERYSET2A {
298 dwSize: ::DWORD,
299 lpszServiceInstanceName: ::LPSTR,
300 lpVersion: LPWSAVERSION,
301 lpszComment: ::LPSTR,
302 dwNameSpace: ::DWORD,
303 lpNSProviderId: ::LPGUID,
304 lpszContext: ::LPSTR,
305 dwNumberOfProtocols: ::DWORD,
306 lpafpProtocols: LPAFPROTOCOLS,
307 lpszQueryString: ::LPSTR,
308 dwNumberOfCsAddrs: ::DWORD,
309 lpcsaBuffer: ::LPCSADDR_INFO,
310 dwOutputFlags: ::DWORD,
311 lpBlob: ::LPBLOB,
312}}
skdltmxnfa2cf4f2015-07-23 02:54:30313pub type PWSAQUERYSET2A = *mut WSAQUERYSET2A;
314pub type LPWSAQUERYSET2A = *mut WSAQUERYSET2A;
Eh2406df60d5f2015-10-25 14:22:53315STRUCT!{struct WSAQUERYSET2W {
316 dwSize: ::DWORD,
317 lpszServiceInstanceName: ::LPWSTR,
318 lpVersion: LPWSAVERSION,
319 lpszComment: ::LPWSTR,
320 dwNameSpace: ::DWORD,
321 lpNSProviderId: ::LPGUID,
322 lpszContext: ::LPWSTR,
323 dwNumberOfProtocols: ::DWORD,
324 lpafpProtocols: LPAFPROTOCOLS,
325 lpszQueryString: ::LPWSTR,
326 dwNumberOfCsAddrs: ::DWORD,
327 lpcsaBuffer: ::LPCSADDR_INFO,
328 dwOutputFlags: ::DWORD,
329 lpBlob: ::LPBLOB,
330}}
skdltmxnfa2cf4f2015-07-23 02:54:30331pub type PWSAQUERYSET2W = *mut WSAQUERYSET2W;
332pub type LPWSAQUERYSET2W = *mut WSAQUERYSET2W;
Eh24061573ab82015-10-31 19:59:55333ENUM!{enum WSAESETSERVICEOP {
skdltmxnfa2cf4f2015-07-23 02:54:30334 RNRSERVICE_REGISTER = 0,
335 RNRSERVICE_DEREGISTER,
336 RNRSERVICE_DELETE,
Eh24061573ab82015-10-31 19:59:55337}}
skdltmxnfa2cf4f2015-07-23 02:54:30338pub type PWSAESETSERVICEOP = *mut WSAESETSERVICEOP;
339pub type LPWSAESETSERVICEOP = *mut WSAESETSERVICEOP;
Eh2406df60d5f2015-10-25 14:22:53340STRUCT!{struct WSANSCLASSINFOA {
341 lpszName: ::LPSTR,
342 dwNameSpace: ::DWORD,
343 dwValueType: ::DWORD,
344 dwValueSize: ::DWORD,
345 lpValue: ::LPVOID,
346}}
skdltmxnfa2cf4f2015-07-23 02:54:30347pub type PWSANSCLASSINFOA = *mut WSANSCLASSINFOA;
348pub type LPWSANSCLASSINFOA = *mut WSANSCLASSINFOA;
Eh2406df60d5f2015-10-25 14:22:53349STRUCT!{struct WSANSCLASSINFOW {
350 lpszName: ::LPWSTR,
351 dwNameSpace: ::DWORD,
352 dwValueType: ::DWORD,
353 dwValueSize: ::DWORD,
354 lpValue: ::LPVOID,
355}}
skdltmxnfa2cf4f2015-07-23 02:54:30356pub type PWSANSCLASSINFOW = *mut WSANSCLASSINFOW;
357pub type LPWSANSCLASSINFOW = *mut WSANSCLASSINFOW;
Eh2406df60d5f2015-10-25 14:22:53358STRUCT!{struct WSASERVICECLASSINFOA {
359 lpServiceClassId: ::LPGUID,
360 lpszServiceClassName: ::LPSTR,
361 dwCount: ::DWORD,
362 lpClassInfos: LPWSANSCLASSINFOA,
363}}
skdltmxnfa2cf4f2015-07-23 02:54:30364pub type PWSASERVICECLASSINFOA = *mut WSASERVICECLASSINFOA;
365pub type LPWSASERVICECLASSINFOA = *mut WSASERVICECLASSINFOA;
Eh2406df60d5f2015-10-25 14:22:53366STRUCT!{struct WSASERVICECLASSINFOW {
367 lpServiceClassId: ::LPGUID,
368 lpszServiceClassName: ::LPWSTR,
369 dwCount: ::DWORD,
370 lpClassInfos: LPWSANSCLASSINFOW,
371}}
skdltmxnfa2cf4f2015-07-23 02:54:30372pub type PWSASERVICECLASSINFOW = *mut WSASERVICECLASSINFOW;
373pub type LPWSASERVICECLASSINFOW = *mut WSASERVICECLASSINFOW;
Eh2406df60d5f2015-10-25 14:22:53374STRUCT!{struct WSANAMESPACE_INFOA {
375 NSProviderId: ::GUID,
376 dwNameSpace: ::DWORD,
377 fActive: ::BOOL,
378 dwVersion: ::DWORD,
379 lpszIdentifier: ::LPSTR,
380}}
skdltmxnfa2cf4f2015-07-23 02:54:30381pub type PWSANAMESPACE_INFOA = *mut WSANAMESPACE_INFOA;
382pub type LPWSANAMESPACE_INFOA = *mut WSANAMESPACE_INFOA;
Eh2406df60d5f2015-10-25 14:22:53383STRUCT!{struct WSANAMESPACE_INFOW {
384 NSProviderId: ::GUID,
385 dwNameSpace: ::DWORD,
386 fActive: ::BOOL,
387 dwVersion: ::DWORD,
388 lpszIdentifier: ::LPWSTR,
389}}
skdltmxnfa2cf4f2015-07-23 02:54:30390pub type PWSANAMESPACE_INFOW = *mut WSANAMESPACE_INFOW;
391pub type LPWSANAMESPACE_INFOW = *mut WSANAMESPACE_INFOW;
Eh2406df60d5f2015-10-25 14:22:53392STRUCT!{struct WSANAMESPACE_INFOEXA {
393 NSProviderId: ::GUID,
394 dwNameSpace: ::DWORD,
395 fActive: ::BOOL,
396 dwVersion: ::DWORD,
397 lpszIdentifier: ::LPSTR,
398 ProviderSpecific: ::BLOB,
399}}
skdltmxnfa2cf4f2015-07-23 02:54:30400pub type PWSANAMESPACE_INFOEXA = *mut WSANAMESPACE_INFOEXA;
401pub type LPWSANAMESPACE_INFOEXA = *mut WSANAMESPACE_INFOEXA;
Eh2406df60d5f2015-10-25 14:22:53402STRUCT!{struct WSANAMESPACE_INFOEXW {
403 NSProviderId: ::GUID,
404 dwNameSpace: ::DWORD,
405 fActive: ::BOOL,
406 dwVersion: ::DWORD,
407 lpszIdentifier: ::LPWSTR,
408 ProviderSpecific: ::BLOB,
409}}
skdltmxnfa2cf4f2015-07-23 02:54:30410pub type PWSANAMESPACE_INFOEXW = *mut WSANAMESPACE_INFOEXW;
411pub type LPWSANAMESPACE_INFOEXW = *mut WSANAMESPACE_INFOEXW;
skdltmxnfa2cf4f2015-07-23 02:54:30412pub const POLLRDNORM: ::SHORT = 0x0100;
413pub const POLLRDBAND: ::SHORT = 0x0200;
414pub const POLLIN: ::SHORT = POLLRDNORM | POLLRDBAND;
415pub const POLLPRI: ::SHORT = 0x0400;
416pub const POLLWRNORM: ::SHORT = 0x0010;
417pub const POLLOUT: ::SHORT = POLLWRNORM;
418pub const POLLWRBAND: ::SHORT = 0x0020;
419pub const POLLERR: ::SHORT = 0x0001;
420pub const POLLHUP: ::SHORT = 0x0002;
421pub const POLLNVAL: ::SHORT = 0x0004;
Eh2406df60d5f2015-10-25 14:22:53422STRUCT!{struct WSAPOLLFD {
423 fd: ::SOCKET,
424 events: ::SHORT,
425 revents: ::SHORT,
426}}
skdltmxnfa2cf4f2015-07-23 02:54:30427pub type PWSAPOLLFD = *mut WSAPOLLFD;
428pub type LPWSAPOLLFD = *mut WSAPOLLFD;
Alex Crichtonf810a0e2015-11-04 00:19:01429pub const FIONBIO: ::c_ulong = 0x8004667e;