windows_metadata/
bindings.rs

1#![allow(
2    non_snake_case,
3    non_upper_case_globals,
4    non_camel_case_types,
5    dead_code,
6    clippy::all
7)]
8
9pub type CorElementType = u8;
10pub const ELEMENT_TYPE_ARRAY: CorElementType = 20u8;
11pub const ELEMENT_TYPE_BOOLEAN: CorElementType = 2u8;
12pub const ELEMENT_TYPE_BYREF: CorElementType = 16u8;
13pub const ELEMENT_TYPE_CHAR: CorElementType = 3u8;
14pub const ELEMENT_TYPE_CLASS: CorElementType = 18u8;
15pub const ELEMENT_TYPE_CMOD_OPT: CorElementType = 32u8;
16pub const ELEMENT_TYPE_CMOD_REQD: CorElementType = 31u8;
17pub const ELEMENT_TYPE_GENERICINST: CorElementType = 21u8;
18pub const ELEMENT_TYPE_I: CorElementType = 24u8;
19pub const ELEMENT_TYPE_I1: CorElementType = 4u8;
20pub const ELEMENT_TYPE_I2: CorElementType = 6u8;
21pub const ELEMENT_TYPE_I4: CorElementType = 8u8;
22pub const ELEMENT_TYPE_I8: CorElementType = 10u8;
23pub const ELEMENT_TYPE_OBJECT: CorElementType = 28u8;
24pub const ELEMENT_TYPE_PTR: CorElementType = 15u8;
25pub const ELEMENT_TYPE_R4: CorElementType = 12u8;
26pub const ELEMENT_TYPE_R8: CorElementType = 13u8;
27pub const ELEMENT_TYPE_STRING: CorElementType = 14u8;
28pub const ELEMENT_TYPE_SZARRAY: CorElementType = 29u8;
29pub const ELEMENT_TYPE_U: CorElementType = 25u8;
30pub const ELEMENT_TYPE_U1: CorElementType = 5u8;
31pub const ELEMENT_TYPE_U2: CorElementType = 7u8;
32pub const ELEMENT_TYPE_U4: CorElementType = 9u8;
33pub const ELEMENT_TYPE_U8: CorElementType = 11u8;
34pub const ELEMENT_TYPE_VALUETYPE: CorElementType = 17u8;
35pub const ELEMENT_TYPE_VAR: CorElementType = 19u8;
36pub const ELEMENT_TYPE_VOID: CorElementType = 1u8;
37#[repr(C)]
38#[derive(Clone, Copy)]
39pub struct IMAGE_COR20_HEADER {
40    pub cb: u32,
41    pub MajorRuntimeVersion: u16,
42    pub MinorRuntimeVersion: u16,
43    pub MetaData: IMAGE_DATA_DIRECTORY,
44    pub Flags: u32,
45    pub Anonymous: IMAGE_COR20_HEADER_0,
46    pub Resources: IMAGE_DATA_DIRECTORY,
47    pub StrongNameSignature: IMAGE_DATA_DIRECTORY,
48    pub CodeManagerTable: IMAGE_DATA_DIRECTORY,
49    pub VTableFixups: IMAGE_DATA_DIRECTORY,
50    pub ExportAddressTableJumps: IMAGE_DATA_DIRECTORY,
51    pub ManagedNativeHeader: IMAGE_DATA_DIRECTORY,
52}
53impl Default for IMAGE_COR20_HEADER {
54    fn default() -> Self {
55        unsafe { core::mem::zeroed() }
56    }
57}
58#[repr(C)]
59#[derive(Clone, Copy)]
60pub union IMAGE_COR20_HEADER_0 {
61    pub EntryPointToken: u32,
62    pub EntryPointRVA: u32,
63}
64impl Default for IMAGE_COR20_HEADER_0 {
65    fn default() -> Self {
66        unsafe { core::mem::zeroed() }
67    }
68}
69#[repr(C)]
70#[derive(Clone, Copy, Default)]
71pub struct IMAGE_DATA_DIRECTORY {
72    pub VirtualAddress: u32,
73    pub Size: u32,
74}
75pub type IMAGE_DIRECTORY_ENTRY = u16;
76pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: IMAGE_DIRECTORY_ENTRY = 14u16;
77pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: IMAGE_DLL_CHARACTERISTICS = 64u16;
78pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: IMAGE_DLL_CHARACTERISTICS = 1024u16;
79pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: IMAGE_DLL_CHARACTERISTICS = 256u16;
80pub type IMAGE_DLL_CHARACTERISTICS = u16;
81#[repr(C, packed(2))]
82#[derive(Clone, Copy)]
83pub struct IMAGE_DOS_HEADER {
84    pub e_magic: u16,
85    pub e_cblp: u16,
86    pub e_cp: u16,
87    pub e_crlc: u16,
88    pub e_cparhdr: u16,
89    pub e_minalloc: u16,
90    pub e_maxalloc: u16,
91    pub e_ss: u16,
92    pub e_sp: u16,
93    pub e_csum: u16,
94    pub e_ip: u16,
95    pub e_cs: u16,
96    pub e_lfarlc: u16,
97    pub e_ovno: u16,
98    pub e_res: [u16; 4],
99    pub e_oemid: u16,
100    pub e_oeminfo: u16,
101    pub e_res2: [u16; 10],
102    pub e_lfanew: i32,
103}
104impl Default for IMAGE_DOS_HEADER {
105    fn default() -> Self {
106        unsafe { core::mem::zeroed() }
107    }
108}
109pub const IMAGE_DOS_SIGNATURE: u16 = 23117u16;
110pub const IMAGE_FILE_32BIT_MACHINE: IMAGE_FILE_CHARACTERISTICS = 256u16;
111pub type IMAGE_FILE_CHARACTERISTICS = u16;
112pub const IMAGE_FILE_DLL: IMAGE_FILE_CHARACTERISTICS = 8192u16;
113pub const IMAGE_FILE_EXECUTABLE_IMAGE: IMAGE_FILE_CHARACTERISTICS = 2u16;
114#[repr(C)]
115#[derive(Clone, Copy, Default)]
116pub struct IMAGE_FILE_HEADER {
117    pub Machine: IMAGE_FILE_MACHINE,
118    pub NumberOfSections: u16,
119    pub TimeDateStamp: u32,
120    pub PointerToSymbolTable: u32,
121    pub NumberOfSymbols: u32,
122    pub SizeOfOptionalHeader: u16,
123    pub Characteristics: IMAGE_FILE_CHARACTERISTICS,
124}
125pub type IMAGE_FILE_MACHINE = u16;
126pub const IMAGE_FILE_MACHINE_I386: IMAGE_FILE_MACHINE = 332u16;
127pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 267u16;
128pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 523u16;
129pub const IMAGE_NT_SIGNATURE: u32 = 17744u32;
130#[repr(C)]
131#[derive(Clone, Copy)]
132pub struct IMAGE_OPTIONAL_HEADER32 {
133    pub Magic: IMAGE_OPTIONAL_HEADER_MAGIC,
134    pub MajorLinkerVersion: u8,
135    pub MinorLinkerVersion: u8,
136    pub SizeOfCode: u32,
137    pub SizeOfInitializedData: u32,
138    pub SizeOfUninitializedData: u32,
139    pub AddressOfEntryPoint: u32,
140    pub BaseOfCode: u32,
141    pub BaseOfData: u32,
142    pub ImageBase: u32,
143    pub SectionAlignment: u32,
144    pub FileAlignment: u32,
145    pub MajorOperatingSystemVersion: u16,
146    pub MinorOperatingSystemVersion: u16,
147    pub MajorImageVersion: u16,
148    pub MinorImageVersion: u16,
149    pub MajorSubsystemVersion: u16,
150    pub MinorSubsystemVersion: u16,
151    pub Win32VersionValue: u32,
152    pub SizeOfImage: u32,
153    pub SizeOfHeaders: u32,
154    pub CheckSum: u32,
155    pub Subsystem: IMAGE_SUBSYSTEM,
156    pub DllCharacteristics: IMAGE_DLL_CHARACTERISTICS,
157    pub SizeOfStackReserve: u32,
158    pub SizeOfStackCommit: u32,
159    pub SizeOfHeapReserve: u32,
160    pub SizeOfHeapCommit: u32,
161    pub LoaderFlags: u32,
162    pub NumberOfRvaAndSizes: u32,
163    pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16],
164}
165impl Default for IMAGE_OPTIONAL_HEADER32 {
166    fn default() -> Self {
167        unsafe { core::mem::zeroed() }
168    }
169}
170#[repr(C, packed(4))]
171#[derive(Clone, Copy)]
172pub struct IMAGE_OPTIONAL_HEADER64 {
173    pub Magic: IMAGE_OPTIONAL_HEADER_MAGIC,
174    pub MajorLinkerVersion: u8,
175    pub MinorLinkerVersion: u8,
176    pub SizeOfCode: u32,
177    pub SizeOfInitializedData: u32,
178    pub SizeOfUninitializedData: u32,
179    pub AddressOfEntryPoint: u32,
180    pub BaseOfCode: u32,
181    pub ImageBase: u64,
182    pub SectionAlignment: u32,
183    pub FileAlignment: u32,
184    pub MajorOperatingSystemVersion: u16,
185    pub MinorOperatingSystemVersion: u16,
186    pub MajorImageVersion: u16,
187    pub MinorImageVersion: u16,
188    pub MajorSubsystemVersion: u16,
189    pub MinorSubsystemVersion: u16,
190    pub Win32VersionValue: u32,
191    pub SizeOfImage: u32,
192    pub SizeOfHeaders: u32,
193    pub CheckSum: u32,
194    pub Subsystem: IMAGE_SUBSYSTEM,
195    pub DllCharacteristics: IMAGE_DLL_CHARACTERISTICS,
196    pub SizeOfStackReserve: u64,
197    pub SizeOfStackCommit: u64,
198    pub SizeOfHeapReserve: u64,
199    pub SizeOfHeapCommit: u64,
200    pub LoaderFlags: u32,
201    pub NumberOfRvaAndSizes: u32,
202    pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16],
203}
204impl Default for IMAGE_OPTIONAL_HEADER64 {
205    fn default() -> Self {
206        unsafe { core::mem::zeroed() }
207    }
208}
209pub type IMAGE_OPTIONAL_HEADER_MAGIC = u16;
210pub type IMAGE_SECTION_CHARACTERISTICS = u32;
211#[repr(C)]
212#[derive(Clone, Copy)]
213pub struct IMAGE_SECTION_HEADER {
214    pub Name: [u8; 8],
215    pub Misc: IMAGE_SECTION_HEADER_0,
216    pub VirtualAddress: u32,
217    pub SizeOfRawData: u32,
218    pub PointerToRawData: u32,
219    pub PointerToRelocations: u32,
220    pub PointerToLinenumbers: u32,
221    pub NumberOfRelocations: u16,
222    pub NumberOfLinenumbers: u16,
223    pub Characteristics: IMAGE_SECTION_CHARACTERISTICS,
224}
225impl Default for IMAGE_SECTION_HEADER {
226    fn default() -> Self {
227        unsafe { core::mem::zeroed() }
228    }
229}
230#[repr(C)]
231#[derive(Clone, Copy)]
232pub union IMAGE_SECTION_HEADER_0 {
233    pub PhysicalAddress: u32,
234    pub VirtualSize: u32,
235}
236impl Default for IMAGE_SECTION_HEADER_0 {
237    fn default() -> Self {
238        unsafe { core::mem::zeroed() }
239    }
240}
241pub type IMAGE_SUBSYSTEM = u16;
242pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: IMAGE_SUBSYSTEM = 3u16;