windivert_sys/bindings/
ioctl.rs

1/*!
2WinDivert IOCTL types.
3
4This types are not used by this crate but some of them are used by the wrapper crate in order to implement wait variants for `recv` and `recv_ex`.
5*/
6#![allow(missing_docs)]
7
8#[repr(C)]
9#[derive(Copy, Clone)]
10pub union WINDIVERT_IOCTL {
11    pub recv: WINDIVERT_IOCTL_RECV,
12    pub send: WINDIVERT_IOCTL_SEND,
13    pub initialize: WINDIVERT_IOCTL_INITIALIZE,
14    pub startup: WINDIVERT_IOCTL_STARTUP,
15    pub shutdown: WINDIVERT_IOCTL_SHUTDOWN,
16    pub get_param: WINDIVERT_IOCTL_GET_PARAM,
17    pub set_param: WINDIVERT_IOCTL_SET_PARAM,
18    _union_align: [u8; 16usize],
19}
20
21#[repr(C, packed)]
22#[derive(Debug, Default, Copy, Clone)]
23pub struct WINDIVERT_IOCTL_RECV {
24    pub addr: u64,
25    pub addr_len_ptr: u64,
26}
27
28pub type WINDIVERT_IOCTL_SEND = WINDIVERT_IOCTL_RECV;
29
30#[repr(C, packed)]
31#[derive(Debug, Default, Copy, Clone)]
32pub struct WINDIVERT_IOCTL_INITIALIZE {
33    pub layer: u32,
34    pub priority: u32,
35    pub flags: u64,
36}
37
38#[repr(C, packed)]
39#[derive(Debug, Default, Copy, Clone)]
40pub struct WINDIVERT_IOCTL_STARTUP {
41    pub flags: u64,
42}
43
44#[repr(C, packed)]
45#[derive(Debug, Default, Copy, Clone)]
46pub struct WINDIVERT_IOCTL_SHUTDOWN {
47    pub how: u32,
48}
49
50#[repr(C, packed)]
51#[derive(Debug, Default, Copy, Clone)]
52pub struct WINDIVERT_IOCTL_GET_PARAM {
53    pub param: u32,
54}
55
56#[repr(C, packed)]
57#[derive(Debug, Default, Copy, Clone)]
58pub struct WINDIVERT_IOCTL_SET_PARAM {
59    pub val: u64,
60    pub param: u32,
61}