wsl_com_api_sys/
interop.rs

1use windows::core::GUID;
2
3// Interop message structures
4#[repr(C)]
5pub struct MESSAGE_HEADER {
6    pub MessageType: u32,
7    pub MessageSize: u32,
8}
9
10#[repr(C)]
11pub struct LX_INIT_CREATE_NT_PROCESS_COMMON {
12    pub FilenameOffset: u32,
13    pub CommandLineOffset: u32,
14    pub CurrentWorkingDirectoryOffset: u32,
15    pub EnvironmentOffset: u32,
16    pub CommandLineCount: u16,
17    pub Rows: u32,
18    pub Columns: u32,
19    pub CreatePseudoconsole: u32,
20}
21
22#[repr(C)]
23pub struct LX_INIT_CREATE_NT_PROCESS {
24    pub Common: LX_INIT_CREATE_NT_PROCESS_COMMON,
25    pub StdFdIds: [u32; 3],
26}
27
28#[repr(C)]
29pub struct LX_INIT_CREATE_PROCESS_RESPONSE {
30    pub Result: i32,
31    pub Flags: u32,
32    pub SignalPipeId: u32,
33}
34
35#[repr(C)]
36pub struct LX_INIT_PROCESS_EXIT_STATUS {
37    pub ExitCode: u32,
38}
39
40#[repr(C)]
41pub struct LX_INIT_WINDOW_SIZE_CHANGED {
42    pub Rows: u32,
43    pub Columns: u32,
44}
45
46#[repr(C)]
47pub struct LX_INIT_CREATE_NT_PROCESS_UTILITY_VM {
48    pub Common: LX_INIT_CREATE_NT_PROCESS_COMMON,
49    pub VmId: GUID,
50    pub Port: u32,
51}
52
53#[repr(C)]
54pub struct LXBUS_IPC_MESSAGE_MARSHAL_HANDLE_DATA {
55    pub Handle: u32,
56    pub HandleType: u32,
57}
58
59#[repr(C)]
60pub union LXBUS_IPC_LX_PROCESS_WAIT_FOR_TERMINATION_PARAMETERS {
61    pub Input: LXBUS_IPC_LX_PROCESS_WAIT_FOR_TERMINATION_INPUT,
62    pub Output: LXBUS_IPC_LX_PROCESS_WAIT_FOR_TERMINATION_OUTPUT,
63}
64
65#[repr(C)]
66#[derive(Copy, Clone)]
67pub struct LXBUS_IPC_LX_PROCESS_WAIT_FOR_TERMINATION_INPUT {
68    pub TimeoutMs: u32,
69}
70
71#[repr(C)]
72#[derive(Copy, Clone)]
73pub struct LXBUS_IPC_LX_PROCESS_WAIT_FOR_TERMINATION_OUTPUT {
74    pub ExitStatus: i32,
75}