ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/ntimage.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 16889 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

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