[DDK]
[reactos.git] / include / ddk / ntimage.h
1 #ifndef _NTIMAGE_
2 #define _NTIMAGE_
3
4 //
5 // Image Formats
6 //
7 #define IMAGE_DOS_SIGNATURE 0x5A4D
8 #define IMAGE_OS2_SIGNATURE 0x454E
9 #define IMAGE_OS2_SIGNATURE_LE 0x454C
10 #define IMAGE_VXD_SIGNATURE 0x454C
11 #define IMAGE_NT_SIGNATURE 0x00004550
12
13 //
14 // Image architectures
15 //
16 #define IMAGE_FILE_MACHINE_AM33 0x1d3
17 #define IMAGE_FILE_MACHINE_AMD64 0x8664
18 #define IMAGE_FILE_MACHINE_ARM 0x1c0
19 #define IMAGE_FILE_MACHINE_EBC 0xebc
20 #define IMAGE_FILE_MACHINE_I386 0x14c
21 #define IMAGE_FILE_MACHINE_IA64 0x200
22 #define IMAGE_FILE_MACHINE_M32R 0x9041
23 #define IMAGE_FILE_MACHINE_MIPS16 0x266
24 #define IMAGE_FILE_MACHINE_MIPSFPU 0x366
25 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x466
26 #define IMAGE_FILE_MACHINE_POWERPC 0x1f0
27 #define IMAGE_FILE_MACHINE_POWERPCFP 0x1f1
28 #define IMAGE_FILE_MACHINE_R4000 0x166
29 #define IMAGE_FILE_MACHINE_SH3 0x1a2
30 #define IMAGE_FILE_MACHINE_SH3E 0x01a4
31 #define IMAGE_FILE_MACHINE_SH3DSP 0x1a3
32 #define IMAGE_FILE_MACHINE_SH4 0x1a6
33 #define IMAGE_FILE_MACHINE_SH5 0x1a8
34 #define IMAGE_FILE_MACHINE_THUMB 0x1c2
35 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x169
36 #define IMAGE_FILE_MACHINE_R3000 0x162
37 #define IMAGE_FILE_MACHINE_R10000 0x168
38 #define IMAGE_FILE_MACHINE_ALPHA 0x184
39 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284
40 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
41 #define IMAGE_FILE_MACHINE_CEE 0xC0EE
42 #define IMAGE_FILE_MACHINE_TRICORE 0x0520
43 #define IMAGE_FILE_MACHINE_CEF 0x0CEF
44
45
46
47 //
48 // DOS Image Header Format
49 //
50 #include <pshpack2.h>
51 typedef struct _IMAGE_DOS_HEADER {
52 USHORT e_magic;
53 USHORT e_cblp;
54 USHORT e_cp;
55 USHORT e_crlc;
56 USHORT e_cparhdr;
57 USHORT e_minalloc;
58 USHORT e_maxalloc;
59 USHORT e_ss;
60 USHORT e_sp;
61 USHORT e_csum;
62 USHORT e_ip;
63 USHORT e_cs;
64 USHORT e_lfarlc;
65 USHORT e_ovno;
66 USHORT e_res[4];
67 USHORT e_oemid;
68 USHORT e_oeminfo;
69 USHORT e_res2[10];
70 LONG e_lfanew;
71 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
72 #include <poppack.h>
73
74
75
76 //
77 // Export/Import Format
78 //
79 #include <pshpack4.h>
80 typedef struct _IMAGE_EXPORT_DIRECTORY {
81 ULONG Characteristics;
82 ULONG TimeDateStamp;
83 USHORT MajorVersion;
84 USHORT MinorVersion;
85 ULONG Name;
86 ULONG Base;
87 ULONG NumberOfFunctions;
88 ULONG NumberOfNames;
89 ULONG AddressOfFunctions;
90 ULONG AddressOfNames;
91 ULONG AddressOfNameOrdinals;
92 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
93
94
95
96 //
97 // Resource Data Entry Format
98 //
99 typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
100 ULONG OffsetToData;
101 ULONG Size;
102 ULONG CodePage;
103 ULONG Reserved;
104 } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
105
106
107
108 //
109 // Load Configuration Directory Entry Format
110 //
111 typedef struct {
112 ULONG Size;
113 ULONG TimeDateStamp;
114 USHORT MajorVersion;
115 USHORT MinorVersion;
116 ULONG GlobalFlagsClear;
117 ULONG GlobalFlagsSet;
118 ULONG CriticalSectionDefaultTimeout;
119 ULONG DeCommitFreeBlockThreshold;
120 ULONG DeCommitTotalFreeThreshold;
121 ULONG LockPrefixTable;
122 ULONG MaximumAllocationSize;
123 ULONG VirtualMemoryThreshold;
124 ULONG ProcessHeapFlags;
125 ULONG ProcessAffinityMask;
126 USHORT CSDVersion;
127 USHORT Reserved1;
128 ULONG EditList;
129 ULONG SecurityCookie;
130 ULONG SEHandlerTable;
131 ULONG SEHandlerCount;
132 } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32;
133
134 typedef struct {
135 ULONG Size;
136 ULONG TimeDateStamp;
137 USHORT MajorVersion;
138 USHORT MinorVersion;
139 ULONG GlobalFlagsClear;
140 ULONG GlobalFlagsSet;
141 ULONG CriticalSectionDefaultTimeout;
142 ULONGLONG DeCommitFreeBlockThreshold;
143 ULONGLONG DeCommitTotalFreeThreshold;
144 ULONGLONG LockPrefixTable;
145 ULONGLONG MaximumAllocationSize;
146 ULONGLONG VirtualMemoryThreshold;
147 ULONGLONG ProcessAffinityMask;
148 ULONG ProcessHeapFlags;
149 USHORT CSDVersion;
150 USHORT Reserved1;
151 ULONGLONG EditList;
152 ULONGLONG SecurityCookie;
153 ULONGLONG SEHandlerTable;
154 ULONGLONG SEHandlerCount;
155 } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64;
156
157 #ifdef _WIN64
158 typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY;
159 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY;
160 #else
161 typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY;
162 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY;
163 #endif
164
165
166 //
167 // Base Relocation Format
168 //
169 typedef struct _IMAGE_BASE_RELOCATION {
170 ULONG VirtualAddress;
171 ULONG SizeOfBlock;
172 } IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
173
174
175
176 //
177 // Resource Format
178 //
179 typedef struct _IMAGE_RESOURCE_DIRECTORY {
180 ULONG Characteristics;
181 ULONG TimeDateStamp;
182 USHORT MajorVersion;
183 USHORT MinorVersion;
184 USHORT NumberOfNamedEntries;
185 USHORT NumberOfIdEntries;
186 } IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
187
188 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
189 USHORT Length;
190 CHAR NameString[ANYSIZE_ARRAY];
191 } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING;
192
193
194
195 //
196 // Section Header Format
197 //
198 #define IMAGE_SIZEOF_SHORT_NAME 8
199 #define IMAGE_SIZEOF_SECTION_HEADER 40
200
201 typedef struct _IMAGE_SECTION_HEADER {
202 UCHAR Name[IMAGE_SIZEOF_SHORT_NAME];
203 union
204 {
205 ULONG PhysicalAddress;
206 ULONG VirtualSize;
207 } Misc;
208 ULONG VirtualAddress;
209 ULONG SizeOfRawData;
210 ULONG PointerToRawData;
211 ULONG PointerToRelocations;
212 ULONG PointerToLinenumbers;
213 USHORT NumberOfRelocations;
214 USHORT NumberOfLinenumbers;
215 ULONG Characteristics;
216 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
217
218 //
219 // Section Characteristics
220 //
221 #define IMAGE_SCN_CNT_CODE 0x00000020
222 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
223 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
224
225 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
226 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
227 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
228 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
229 #define IMAGE_SCN_MEM_SHARED 0x10000000
230 #define IMAGE_SCN_MEM_EXECUTE 0x20000000
231 #define IMAGE_SCN_MEM_READ 0x40000000
232 #define IMAGE_SCN_MEM_WRITE 0x80000000
233
234
235
236 //
237 // File Header Format
238 //
239 #define IMAGE_SIZEOF_FILE_HEADER 20
240
241 typedef struct _IMAGE_FILE_HEADER {
242 USHORT Machine;
243 USHORT NumberOfSections;
244 ULONG TimeDateStamp;
245 ULONG PointerToSymbolTable;
246 ULONG NumberOfSymbols;
247 USHORT SizeOfOptionalHeader;
248 USHORT Characteristics;
249 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
250
251 //
252 // File Characteristics
253 //
254 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001
255 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
256 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
257 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
258 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010
259 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
260 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
261 #define IMAGE_FILE_32BIT_MACHINE 0x0100
262 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200
263 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
264 #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
265 #define IMAGE_FILE_SYSTEM 0x1000
266 #define IMAGE_FILE_DLL 0x2000
267 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
268 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
269
270
271
272 //
273 // Directory format.
274 //
275 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
276
277 typedef struct _IMAGE_DATA_DIRECTORY {
278 ULONG VirtualAddress;
279 ULONG Size;
280 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
281
282
283
284 //
285 // Optional Header Formats
286 //
287 typedef struct _IMAGE_OPTIONAL_HEADER {
288 USHORT Magic;
289 UCHAR MajorLinkerVersion;
290 UCHAR MinorLinkerVersion;
291 ULONG SizeOfCode;
292 ULONG SizeOfInitializedData;
293 ULONG SizeOfUninitializedData;
294 ULONG AddressOfEntryPoint;
295 ULONG BaseOfCode;
296 ULONG BaseOfData;
297 ULONG ImageBase;
298 ULONG SectionAlignment;
299 ULONG FileAlignment;
300 USHORT MajorOperatingSystemVersion;
301 USHORT MinorOperatingSystemVersion;
302 USHORT MajorImageVersion;
303 USHORT MinorImageVersion;
304 USHORT MajorSubsystemVersion;
305 USHORT MinorSubsystemVersion;
306 ULONG Win32VersionValue;
307 ULONG SizeOfImage;
308 ULONG SizeOfHeaders;
309 ULONG CheckSum;
310 USHORT Subsystem;
311 USHORT DllCharacteristics;
312 ULONG SizeOfStackReserve;
313 ULONG SizeOfStackCommit;
314 ULONG SizeOfHeapReserve;
315 ULONG SizeOfHeapCommit;
316 ULONG LoaderFlags;
317 ULONG NumberOfRvaAndSizes;
318 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
319 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
320
321 typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
322 USHORT Magic;
323 UCHAR MajorLinkerVersion;
324 UCHAR MinorLinkerVersion;
325 ULONG SizeOfCode;
326 ULONG SizeOfInitializedData;
327 ULONG SizeOfUninitializedData;
328 ULONG AddressOfEntryPoint;
329 ULONG BaseOfCode;
330 ULONG BaseOfData;
331 ULONG BaseOfBss;
332 ULONG GprMask;
333 ULONG CprMask[4];
334 ULONG GpValue;
335 } IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
336
337 typedef struct _IMAGE_OPTIONAL_HEADER64 {
338 USHORT Magic;
339 UCHAR MajorLinkerVersion;
340 UCHAR MinorLinkerVersion;
341 ULONG SizeOfCode;
342 ULONG SizeOfInitializedData;
343 ULONG SizeOfUninitializedData;
344 ULONG AddressOfEntryPoint;
345 ULONG BaseOfCode;
346 ULONGLONG ImageBase;
347 ULONG SectionAlignment;
348 ULONG FileAlignment;
349 USHORT MajorOperatingSystemVersion;
350 USHORT MinorOperatingSystemVersion;
351 USHORT MajorImageVersion;
352 USHORT MinorImageVersion;
353 USHORT MajorSubsystemVersion;
354 USHORT MinorSubsystemVersion;
355 ULONG Win32VersionValue;
356 ULONG SizeOfImage;
357 ULONG SizeOfHeaders;
358 ULONG CheckSum;
359 USHORT Subsystem;
360 USHORT DllCharacteristics;
361 ULONGLONG SizeOfStackReserve;
362 ULONGLONG SizeOfStackCommit;
363 ULONGLONG SizeOfHeapReserve;
364 ULONGLONG SizeOfHeapCommit;
365 ULONG LoaderFlags;
366 ULONG NumberOfRvaAndSizes;
367 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
368 } IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
369
370 //
371 // Format Identifier Magics
372 //
373 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
374 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
375 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
376
377
378 #ifdef _WIN64
379 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
380 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
381 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC
382 #else
383 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
384 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
385 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
386 #endif
387
388
389
390 //
391 // Nt Header Formats
392 //
393 typedef struct _IMAGE_NT_HEADERS64 {
394 ULONG Signature;
395 IMAGE_FILE_HEADER FileHeader;
396 IMAGE_OPTIONAL_HEADER64 OptionalHeader;
397 } IMAGE_NT_HEADERS64;
398
399 typedef struct _IMAGE_NT_HEADERS {
400 ULONG Signature;
401 IMAGE_FILE_HEADER FileHeader;
402 IMAGE_OPTIONAL_HEADER32 OptionalHeader;
403 } IMAGE_NT_HEADERS32;
404
405 #ifdef _WIN64
406 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS;
407 #else
408 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
409 #endif
410
411 #ifndef _NTDDK_
412
413 typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32;
414 typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64;
415
416 #ifdef _WIN64
417 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
418 #else
419 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
420 #endif
421
422 #endif /* _NTDDK_ */
423
424 //
425 // Retreives the first image section header from the Nt Header
426 //
427 #define IMAGE_FIRST_SECTION( NtHeader ) ((PIMAGE_SECTION_HEADER) \
428 ((ULONG_PTR)(NtHeader) + \
429 FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
430 ((NtHeader))->FileHeader.SizeOfOptionalHeader \
431 ))
432
433 //
434 // Dll Characteristics
435 //
436 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
437 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
438 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
439 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
440 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
441 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
442 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
443 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
444
445 //
446 // Directory Entry Specifiers
447 //
448 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
449 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
450 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
451 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
452 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4
453 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
454 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6
455 #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7
456 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
457 #define IMAGE_DIRECTORY_ENTRY_TLS 9
458 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
459 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
460 #define IMAGE_DIRECTORY_ENTRY_IAT 12
461 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
462 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
463
464
465
466 //
467 // Import Formats
468 //
469 typedef struct _IMAGE_IMPORT_BY_NAME {
470 USHORT Hint;
471 UCHAR Name[1];
472 } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
473
474 #include <pshpack8.h>
475 typedef struct _IMAGE_THUNK_DATA64 {
476 union {
477 ULONGLONG ForwarderString;
478 ULONGLONG Function;
479 ULONGLONG Ordinal;
480 ULONGLONG AddressOfData;
481 } u1;
482 } IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64;
483 #include <poppack.h>
484
485 typedef struct _IMAGE_THUNK_DATA32 {
486 union {
487 ULONG ForwarderString;
488 ULONG Function;
489 ULONG Ordinal;
490 ULONG AddressOfData;
491 } u1;
492 } IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;
493
494 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL
495 #define IMAGE_ORDINAL_FLAG32 0x80000000
496 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff)
497 #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff)
498 #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0)
499 #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0)
500
501
502
503 //
504 // Thread Local Storage (TLS)
505 //
506 typedef
507 VOID
508 (NTAPI *PIMAGE_TLS_CALLBACK) (
509 PVOID DllHandle,
510 ULONG Reason,
511 PVOID Reserved
512 );
513
514 typedef struct _IMAGE_TLS_DIRECTORY64 {
515 ULONGLONG StartAddressOfRawData;
516 ULONGLONG EndAddressOfRawData;
517 ULONGLONG AddressOfIndex;
518 ULONGLONG AddressOfCallBacks;
519 ULONG SizeOfZeroFill;
520 ULONG Characteristics;
521 } IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64;
522
523 typedef struct _IMAGE_TLS_DIRECTORY32 {
524 ULONG StartAddressOfRawData;
525 ULONG EndAddressOfRawData;
526 ULONG AddressOfIndex;
527 ULONG AddressOfCallBacks;
528 ULONG SizeOfZeroFill;
529 ULONG Characteristics;
530 } IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32;
531
532 #ifdef _WIN64
533 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64
534 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal)
535 typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA;
536 typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA;
537 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal)
538 typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY;
539 typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY;
540 #else
541 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32
542 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal)
543 typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA;
544 typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA;
545 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal)
546 typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY;
547 typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
548 #endif
549
550 typedef struct _IMAGE_IMPORT_DESCRIPTOR {
551 _ANONYMOUS_UNION union {
552 ULONG Characteristics;
553 ULONG OriginalFirstThunk;
554 } DUMMYUNIONNAME;
555 ULONG TimeDateStamp;
556 ULONG ForwarderChain;
557 ULONG Name;
558 ULONG FirstThunk;
559 } IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR;
560
561 #include <poppack.h>
562
563
564
565 #endif