1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::minwindef::{DWORD, ULONG};
7 use shared::ws2def::IOC_VENDOR;
8 use um::winnt::{LONG, PVOID, ULONGLONG};
9 pub const SIO_SET_COMPATIBILITY_MODE: DWORD = _WSAIOW!(IOC_VENDOR, 300);
10 ENUM!{enum WSA_COMPATIBILITY_BEHAVIOR_ID {
11     WsaBehaviorAll = 0,
12     WsaBehaviorReceiveBuffering,
13     WsaBehaviorAutoTuning,
14 }}
15 pub type PWSA_COMPATIBILITY_BEHAVIOR_ID = *mut WSA_COMPATIBILITY_BEHAVIOR_ID;
16 STRUCT!{struct WSA_COMPATIBILITY_MODE {
17     BehaviorId: WSA_COMPATIBILITY_BEHAVIOR_ID,
18     TargetOsVersion: ULONG,
19 }}
20 pub type PWSA_COMPATIBILITY_MODE = *mut WSA_COMPATIBILITY_MODE;
21 pub type RIO_BUFFERID = PVOID;
22 pub type PRIO_BUFFERID = *mut PVOID;
23 pub type RIO_CQ = PVOID;
24 pub type PRIO_CQ = *mut PVOID;
25 pub type RIO_RQ = PVOID;
26 pub type PRIO_RQ = *mut PVOID;
27 STRUCT!{struct RIORESULT {
28     Status: LONG,
29     BytesTransferred: ULONG,
30     SocketContext: ULONGLONG,
31     RequestContext: ULONGLONG,
32 }}
33 pub type PRIORESULT = *mut RIORESULT;
34 STRUCT!{struct RIO_BUF {
35     BufferId: RIO_BUFFERID,
36     Offset: ULONG,
37     Length: ULONG,
38 }}
39 pub type PRIO_BUF = *mut RIO_BUF;
40 pub const RIO_MSG_DONT_NOTIFY: DWORD = 0x00000001;
41 pub const RIO_MSG_DEFER: DWORD = 0x00000002;
42 pub const RIO_MSG_WAITALL: DWORD = 0x00000004;
43 pub const RIO_MSG_COMMIT_ONLY: DWORD = 0x00000008;
44 pub const RIO_INVALID_BUFFERID: RIO_BUFFERID = 0xFFFFFFFF as RIO_BUFFERID;
45 pub const RIO_INVALID_CQ: RIO_CQ = 0 as RIO_CQ;
46 pub const RIO_INVALID_RQ: RIO_RQ = 0 as RIO_RQ;
47 pub const RIO_MAX_CQ_SIZE: DWORD = 0x8000000;
48 pub const RIO_CORRUPT_CQ: ULONG = 0xFFFFFFFF;
49