windows_enclave/manual_bindings/
vertdll.rs1use crate::vertdll::*;
5
6pub type PDELAYLOAD_FAILURE_SYSTEM_ROUTINE = Option<
9 unsafe extern "system" fn(dllname: PCSTR, procedurename: PCSTR) -> *mut core::ffi::c_void,
10>;
11
12windows_link::link!("vertdll.dll" "system" fn EnclaveCopyIntoEnclave(enclaveaddress: *mut core::ffi::c_void, unsecureaddress: *const core::ffi::c_void, numberofbytes: usize) -> HRESULT);
13windows_link::link!("vertdll.dll" "system" fn EnclaveCopyOutOfEnclave(unsecureaddress: *mut core::ffi::c_void, enclaveaddress: *const core::ffi::c_void, numberofbytes: usize) -> HRESULT);
14windows_link::link!("vertdll.dll" "system" fn EnclaveRestrictContainingProcessAccess(restrictaccess: BOOL, previouslyrestricted: *mut BOOL) -> HRESULT);
15windows_link::link!("vertdll.dll" "system" fn LdrDisableThreadCalloutsForDll(baseaddress: *mut core::ffi::c_void) -> NTSTATUS);
16windows_link::link!("vertdll.dll" "system" fn LdrResolveDelayLoadedAPI(parentmodulebase: *const core::ffi::c_void, delayloaddescriptor: *const IMAGE_DELAYLOAD_DESCRIPTOR, failuredllhook: PDELAYLOAD_FAILURE_DLL_CALLBACK, failuresystemhook: PDELAYLOAD_FAILURE_SYSTEM_ROUTINE, thunkaddress: *mut IMAGE_THUNK_DATA32, flags: u32) -> *mut core::ffi::c_void);
17windows_link::link!("vertdll.dll" "system" fn RtlGetLastNtStatus() -> NTSTATUS);
18windows_link::link!("vertdll.dll" "system" fn RtlNtStatusToDosError(status: NTSTATUS) -> u32);
19windows_link::link!("vertdll.dll" "system" fn RtlRaiseStatus(status: NTSTATUS));
20windows_link::link!("vertdll.dll" "system" fn RtlUnhandledExceptionFilter(exceptionpointers: *const EXCEPTION_POINTERS) -> i32);
21
22pub const HEAP_CREATE_ENABLE_EXECUTE: HEAP_FLAGS = 262144u32;
28pub const HEAP_DISABLE_COALESCE_ON_FREE: HEAP_FLAGS = 128u32;
29pub const HEAP_FREE_CHECKING_ENABLED: HEAP_FLAGS = 64u32;
30pub const HEAP_GENERATE_EXCEPTIONS: HEAP_FLAGS = 4u32;
31pub const HEAP_NO_SERIALIZE: HEAP_FLAGS = 1u32;
32pub const HEAP_REALLOC_IN_PLACE_ONLY: HEAP_FLAGS = 16u32;
33pub const HEAP_TAIL_CHECKING_ENABLED: HEAP_FLAGS = 32u32;
34pub const HEAP_ZERO_MEMORY: HEAP_FLAGS = 8u32;
35
36pub const MEM_COMMIT: u32 = 4096u32;
38pub const MEM_DECOMMIT: u32 = 16384u32;
39pub const MEM_LARGE_PAGES: u32 = 536870912u32;
40pub const MEM_RELEASE: u32 = 32768u32;
41pub const MEM_RESERVE: u32 = 8192u32;
42pub const MEM_RESET: u32 = 524288u32;
43pub const MEM_RESET_UNDO: u32 = 16777216u32;
44
45pub const PAGE_EXECUTE: u32 = 16u32;
47pub const PAGE_EXECUTE_READ: u32 = 32u32;
48pub const PAGE_EXECUTE_READWRITE: u32 = 64u32;
49pub const PAGE_EXECUTE_WRITECOPY: u32 = 128u32;
50pub const PAGE_GUARD: u32 = 256u32;
51pub const PAGE_NOACCESS: u32 = 1u32;
52pub const PAGE_NOCACHE: u32 = 512u32;
53pub const PAGE_READONLY: u32 = 2u32;
54pub const PAGE_READWRITE: u32 = 4u32;
55pub const PAGE_WRITECOMBINE: u32 = 1024u32;
56pub const PAGE_WRITECOPY: u32 = 8u32;
57
58pub const MEM_IMAGE: PAGE_TYPE = 16777216u32;
60pub const MEM_MAPPED: u32 = 262144u32;
61pub const MEM_PRIVATE: u32 = 131072u32;
62
63pub const IMAGE_ENCLAVE_LONG_ID_LENGTH: usize = 32;
66pub const IMAGE_ENCLAVE_SHORT_ID_LENGTH: usize = 16;
67
68pub const ENCLAVE_TYPE_SGX: u32 = 0x00000001;
70pub const ENCLAVE_TYPE_SGX2: u32 = 0x00000002;
71pub const ENCLAVE_TYPE_VBS: u32 = 0x00000010;
72
73#[allow(dead_code)]
75pub const IMAGE_ENCLAVE_POLICY_DEBUGGABLE: u32 = 0x0000_0001;
76
77pub const IMAGE_ENCLAVE_FLAG_PRIMARY_IMAGE: u32 = 0x0000_0001;
79
80#[repr(C)]
83pub struct ImageEnclaveConfig {
84 pub size: u32,
85 pub minimum_required_config_size: u32,
86 pub policy_flags: u32,
87 pub number_of_imports: u32,
88 pub import_list: u32,
89 pub import_entry_size: u32,
90 pub family_id: [u8; IMAGE_ENCLAVE_SHORT_ID_LENGTH],
91 pub image_id: [u8; IMAGE_ENCLAVE_SHORT_ID_LENGTH],
92 pub image_version: u32,
93 pub security_version: u32,
94 pub enclave_size: usize,
95 pub number_of_threads: u32,
96 pub enclave_flags: u32,
97}
98
99pub const IMAGE_ENCLAVE_MINIMUM_CONFIG_SIZE: u32 =
101 core::mem::offset_of!(ImageEnclaveConfig, enclave_flags) as u32;