Skip to main content

azathoth_core/os/windows/process/
structs.rs

1#![allow(non_snake_case, non_camel_case_types)]
2
3use crate::os::windows::types::HANDLE;
4use crate::os::windows::peb::structs::UNICODE_STRING;
5
6/// Windows `PROCESS_INFORMATION` - filled in by `CreateProcess`.
7#[repr(C)]
8pub struct ProcessInformation {
9    pub process: HANDLE,
10    pub thread: HANDLE,
11    pub process_id: u32,
12    pub thread_id: u32,
13}
14
15/// Windows `SYSTEM_PROCESS_INFORMATION` - one entry in the `NtQuerySystemInformation` buffer.
16#[repr(C)]
17pub struct SystemProcessInformation {
18    pub next_entry_offset: u32,
19    pub number_of_threads: u32,
20    pub working_set_private_size: i64,
21    pub hard_fault_count: u32,
22    pub number_of_threads_high_watermark: u32,
23    pub cycle_time: u64,
24    pub create_time: i64,
25    pub user_time: i64,
26    pub kernel_time: i64,
27    pub image_name: UNICODE_STRING,
28    pub base_priority: i32,
29    pub unique_process_id: usize,
30    pub inherited_from_unique_process_id: usize,
31    pub handle_count: u32,
32    pub session_id: u32,
33    pub unique_process_key: usize,
34    pub peak_virtual_size: usize,
35    pub virtual_size: usize,
36    pub page_fault_count: u32,
37    pub peak_working_set_size: usize,
38    pub working_set_size: usize,
39}
40
41/// Windows `STARTUPINFOW` - passed to `CreateProcessW`.
42#[repr(C)]
43pub struct StartupInfoW {
44    pub cb: u32,
45    pub reserved: *mut u16,
46    pub desktop: *mut u16,
47    pub title: *mut u16,
48    pub x: u32,
49    pub y: u32,
50    pub x_size: u32,
51    pub y_size: u32,
52    pub x_count_chars: u32,
53    pub y_count_chars: u32,
54    pub fill_attribute: u32,
55    pub flags: u32,
56    pub show_window: u16,
57    pub cb_reserved2: u16,
58    pub lp_reserved2: *mut u8,
59    pub std_input: HANDLE,
60    pub std_output: HANDLE,
61    pub std_error: HANDLE,
62}