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
{
12 WsaBehaviorReceiveBuffering
,
13 WsaBehaviorAutoTuning
,
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
,
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
{
29 BytesTransferred
: ULONG
,
30 SocketContext
: ULONGLONG
,
31 RequestContext
: ULONGLONG
,
33 pub type PRIORESULT
= *mut RIORESULT
;
34 STRUCT
!{struct RIO_BUF
{
35 BufferId
: RIO_BUFFERID
,
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;