]>
Commit | Line | Data |
---|---|---|
49aad941 FG |
1 | // Note: these definitions are taken from `windows-sys` to avoid a circular dependency. |
2 | #![allow(non_snake_case, non_camel_case_types)] | |
3 | ||
4 | pub type IMAGE_DIRECTORY_ENTRY = u32; | |
5 | pub type IMAGE_DLL_CHARACTERISTICS = u16; | |
6 | pub type IMAGE_FILE_CHARACTERISTICS = u16; | |
7 | pub type IMAGE_FILE_MACHINE = u16; | |
8 | pub type IMAGE_OPTIONAL_HEADER_MAGIC = u16; | |
9 | pub type IMAGE_SECTION_CHARACTERISTICS = u32; | |
10 | pub type IMAGE_SUBSYSTEM = u16; | |
11 | ||
12 | pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: IMAGE_DIRECTORY_ENTRY = 14u32; | |
13 | pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: IMAGE_DLL_CHARACTERISTICS = 64u16; | |
14 | pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: IMAGE_DLL_CHARACTERISTICS = 1024u16; | |
15 | pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: IMAGE_DLL_CHARACTERISTICS = 256u16; | |
16 | pub const IMAGE_DOS_SIGNATURE: u16 = 23117u16; | |
17 | pub const IMAGE_FILE_32BIT_MACHINE: IMAGE_FILE_CHARACTERISTICS = 256u16; | |
18 | pub const IMAGE_FILE_DLL: IMAGE_FILE_CHARACTERISTICS = 8192u16; | |
19 | pub const IMAGE_FILE_EXECUTABLE_IMAGE: IMAGE_FILE_CHARACTERISTICS = 2u16; | |
20 | pub const IMAGE_FILE_MACHINE_I386: IMAGE_FILE_MACHINE = 332u16; | |
21 | pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 267u16; | |
22 | pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 523u16; | |
23 | pub const IMAGE_NT_SIGNATURE: u32 = 17744u32; | |
24 | pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: IMAGE_SUBSYSTEM = 3u16; | |
25 | ||
26 | #[repr(C, packed(2))] | |
27 | pub struct IMAGE_DOS_HEADER { | |
28 | pub e_magic: u16, | |
29 | pub e_cblp: u16, | |
30 | pub e_cp: u16, | |
31 | pub e_crlc: u16, | |
32 | pub e_cparhdr: u16, | |
33 | pub e_minalloc: u16, | |
34 | pub e_maxalloc: u16, | |
35 | pub e_ss: u16, | |
36 | pub e_sp: u16, | |
37 | pub e_csum: u16, | |
38 | pub e_ip: u16, | |
39 | pub e_cs: u16, | |
40 | pub e_lfarlc: u16, | |
41 | pub e_ovno: u16, | |
42 | pub e_res: [u16; 4], | |
43 | pub e_oemid: u16, | |
44 | pub e_oeminfo: u16, | |
45 | pub e_res2: [u16; 10], | |
46 | pub e_lfanew: i32, | |
47 | } | |
48 | ||
49 | #[repr(C)] | |
50 | pub struct IMAGE_FILE_HEADER { | |
51 | pub Machine: IMAGE_FILE_MACHINE, | |
52 | pub NumberOfSections: u16, | |
53 | pub TimeDateStamp: u32, | |
54 | pub PointerToSymbolTable: u32, | |
55 | pub NumberOfSymbols: u32, | |
56 | pub SizeOfOptionalHeader: u16, | |
57 | pub Characteristics: IMAGE_FILE_CHARACTERISTICS, | |
58 | } | |
59 | ||
60 | #[repr(C)] | |
61 | pub struct IMAGE_OPTIONAL_HEADER32 { | |
62 | pub Magic: IMAGE_OPTIONAL_HEADER_MAGIC, | |
63 | pub MajorLinkerVersion: u8, | |
64 | pub MinorLinkerVersion: u8, | |
65 | pub SizeOfCode: u32, | |
66 | pub SizeOfInitializedData: u32, | |
67 | pub SizeOfUninitializedData: u32, | |
68 | pub AddressOfEntryPoint: u32, | |
69 | pub BaseOfCode: u32, | |
70 | pub BaseOfData: u32, | |
71 | pub ImageBase: u32, | |
72 | pub SectionAlignment: u32, | |
73 | pub FileAlignment: u32, | |
74 | pub MajorOperatingSystemVersion: u16, | |
75 | pub MinorOperatingSystemVersion: u16, | |
76 | pub MajorImageVersion: u16, | |
77 | pub MinorImageVersion: u16, | |
78 | pub MajorSubsystemVersion: u16, | |
79 | pub MinorSubsystemVersion: u16, | |
80 | pub Win32VersionValue: u32, | |
81 | pub SizeOfImage: u32, | |
82 | pub SizeOfHeaders: u32, | |
83 | pub CheckSum: u32, | |
84 | pub Subsystem: IMAGE_SUBSYSTEM, | |
85 | pub DllCharacteristics: IMAGE_DLL_CHARACTERISTICS, | |
86 | pub SizeOfStackReserve: u32, | |
87 | pub SizeOfStackCommit: u32, | |
88 | pub SizeOfHeapReserve: u32, | |
89 | pub SizeOfHeapCommit: u32, | |
90 | pub LoaderFlags: u32, | |
91 | pub NumberOfRvaAndSizes: u32, | |
92 | pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16], | |
93 | } | |
94 | ||
95 | #[repr(C, packed(4))] | |
96 | pub struct IMAGE_OPTIONAL_HEADER64 { | |
97 | pub Magic: IMAGE_OPTIONAL_HEADER_MAGIC, | |
98 | pub MajorLinkerVersion: u8, | |
99 | pub MinorLinkerVersion: u8, | |
100 | pub SizeOfCode: u32, | |
101 | pub SizeOfInitializedData: u32, | |
102 | pub SizeOfUninitializedData: u32, | |
103 | pub AddressOfEntryPoint: u32, | |
104 | pub BaseOfCode: u32, | |
105 | pub ImageBase: u64, | |
106 | pub SectionAlignment: u32, | |
107 | pub FileAlignment: u32, | |
108 | pub MajorOperatingSystemVersion: u16, | |
109 | pub MinorOperatingSystemVersion: u16, | |
110 | pub MajorImageVersion: u16, | |
111 | pub MinorImageVersion: u16, | |
112 | pub MajorSubsystemVersion: u16, | |
113 | pub MinorSubsystemVersion: u16, | |
114 | pub Win32VersionValue: u32, | |
115 | pub SizeOfImage: u32, | |
116 | pub SizeOfHeaders: u32, | |
117 | pub CheckSum: u32, | |
118 | pub Subsystem: IMAGE_SUBSYSTEM, | |
119 | pub DllCharacteristics: IMAGE_DLL_CHARACTERISTICS, | |
120 | pub SizeOfStackReserve: u64, | |
121 | pub SizeOfStackCommit: u64, | |
122 | pub SizeOfHeapReserve: u64, | |
123 | pub SizeOfHeapCommit: u64, | |
124 | pub LoaderFlags: u32, | |
125 | pub NumberOfRvaAndSizes: u32, | |
126 | pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16], | |
127 | } | |
128 | ||
129 | #[repr(C)] | |
130 | pub struct IMAGE_SECTION_HEADER { | |
131 | pub Name: [u8; 8], | |
132 | pub Misc: IMAGE_SECTION_HEADER_0, | |
133 | pub VirtualAddress: u32, | |
134 | pub SizeOfRawData: u32, | |
135 | pub PointerToRawData: u32, | |
136 | pub PointerToRelocations: u32, | |
137 | pub PointerToLinenumbers: u32, | |
138 | pub NumberOfRelocations: u16, | |
139 | pub NumberOfLinenumbers: u16, | |
140 | pub Characteristics: IMAGE_SECTION_CHARACTERISTICS, | |
141 | } | |
142 | ||
143 | #[repr(C)] | |
144 | pub union IMAGE_SECTION_HEADER_0 { | |
145 | pub PhysicalAddress: u32, | |
146 | pub VirtualSize: u32, | |
147 | } | |
148 | ||
149 | #[repr(C)] | |
150 | pub struct IMAGE_DATA_DIRECTORY { | |
151 | pub VirtualAddress: u32, | |
152 | pub Size: u32, | |
153 | } | |
154 | ||
155 | #[repr(C)] | |
156 | pub struct IMAGE_COR20_HEADER { | |
157 | pub cb: u32, | |
158 | pub MajorRuntimeVersion: u16, | |
159 | pub MinorRuntimeVersion: u16, | |
160 | pub MetaData: IMAGE_DATA_DIRECTORY, | |
161 | pub Flags: u32, | |
162 | pub Anonymous: IMAGE_COR20_HEADER_0, | |
163 | pub Resources: IMAGE_DATA_DIRECTORY, | |
164 | pub StrongNameSignature: IMAGE_DATA_DIRECTORY, | |
165 | pub CodeManagerTable: IMAGE_DATA_DIRECTORY, | |
166 | pub VTableFixups: IMAGE_DATA_DIRECTORY, | |
167 | pub ExportAddressTableJumps: IMAGE_DATA_DIRECTORY, | |
168 | pub ManagedNativeHeader: IMAGE_DATA_DIRECTORY, | |
169 | } | |
170 | ||
171 | #[repr(C)] | |
172 | pub union IMAGE_COR20_HEADER_0 { | |
173 | pub EntryPointToken: u32, | |
174 | pub EntryPointRVA: u32, | |
175 | } |