VirtualBox

source: vbox/trunk/src/VBox/Runtime/include/internal/ldrPE.h@ 46131

Last change on this file since 46131 was 46131, checked in by vboxsync, 12 years ago

ldrPE.cpp: Added fallback pfnEnumSymbols implementation that works when we cannot load the whole image into memory. This makes windows symbols from exports work a little bit on non-windows hosts.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 19.3 KB
Line 
1/* $Id: ldrPE.h 46131 2013-05-16 17:07:57Z vboxsync $ */
2/** @file
3 * IPRT - Windows NT PE Structures and Constants.
4 */
5
6/*
7 * Copyright (C) 2006-2013 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * The contents of this file may alternatively be used under the terms
18 * of the Common Development and Distribution License Version 1.0
19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20 * VirtualBox OSE distribution, in which case the provisions of the
21 * CDDL are applicable instead of those of the GPL.
22 *
23 * You may elect to license modified versions of this file under the
24 * terms and conditions of either the GPL or the CDDL or both.
25 */
26
27#ifndef ___internal_ldrPE_h
28#define ___internal_ldrPE_h
29
30#include <iprt/types.h>
31#include <iprt/assert.h>
32
33#pragma pack(4) /** @todo Necessary? */
34
35
36/*******************************************************************************
37* Defined Constants And Macros *
38*******************************************************************************/
39#define IMAGE_NT_SIGNATURE 0x00004550
40
41/* file header */
42#define IMAGE_FILE_MACHINE_I386 0x014c
43#define IMAGE_FILE_MACHINE_AMD64 0x8664
44
45#define IMAGE_FILE_RELOCS_STRIPPED 0x0001
46#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
47#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
48#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
49#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010
50#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
51#define IMAGE_FILE_16BIT_MACHINE 0x0040
52#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
53#define IMAGE_FILE_32BIT_MACHINE 0x0100
54#define IMAGE_FILE_DEBUG_STRIPPED 0x0200
55#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
56#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
57#define IMAGE_FILE_SYSTEM 0x1000
58#define IMAGE_FILE_DLL 0x2000
59#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
60#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
61
62
63/* optional header */
64#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10B
65#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20B
66
67#define IMAGE_SUBSYSTEM_UNKNOWN 0x0
68#define IMAGE_SUBSYSTEM_NATIVE 0x1
69#define IMAGE_SUBSYSTEM_WINDOWS_GUI 0x2
70#define IMAGE_SUBSYSTEM_WINDOWS_CUI 0x3
71#define IMAGE_SUBSYSTEM_OS2_GUI 0x4
72#define IMAGE_SUBSYSTEM_OS2_CUI 0x5
73#define IMAGE_SUBSYSTEM_POSIX_CUI 0x7
74
75#define IMAGE_LIBRARY_PROCESS_INIT 0x0001
76#define IMAGE_LIBRARY_PROCESS_TERM 0x0002
77#define IMAGE_LIBRARY_THREAD_INIT 0x0004
78#define IMAGE_LIBRARY_THREAD_TERM 0x0008
79#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
80#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
81#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
82#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
83#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
84
85#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 0x10
86
87#define IMAGE_DIRECTORY_ENTRY_EXPORT 0x0
88#define IMAGE_DIRECTORY_ENTRY_IMPORT 0x1
89#define IMAGE_DIRECTORY_ENTRY_RESOURCE 0x2
90#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 0x3
91#define IMAGE_DIRECTORY_ENTRY_SECURITY 0x4
92#define IMAGE_DIRECTORY_ENTRY_BASERELOC 0x5
93#define IMAGE_DIRECTORY_ENTRY_DEBUG 0x6
94#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 0x7
95#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT IMAGE_DIRECTORY_ENTRY_ARCHITECTURE
96#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 0x8
97#define IMAGE_DIRECTORY_ENTRY_TLS 0x9
98#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 0xa
99#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 0xb
100#define IMAGE_DIRECTORY_ENTRY_IAT 0xc
101#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 0xd
102#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 0xe
103
104
105/* section header */
106#define IMAGE_SIZEOF_SHORT_NAME 0x8
107
108#define IMAGE_SCN_TYPE_REG 0x00000000
109#define IMAGE_SCN_TYPE_DSECT 0x00000001
110#define IMAGE_SCN_TYPE_NOLOAD 0x00000002
111#define IMAGE_SCN_TYPE_GROUP 0x00000004
112#define IMAGE_SCN_TYPE_NO_PAD 0x00000008
113#define IMAGE_SCN_TYPE_COPY 0x00000010
114
115#define IMAGE_SCN_CNT_CODE 0x00000020
116#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
117#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
118
119#define IMAGE_SCN_LNK_OTHER 0x00000100
120#define IMAGE_SCN_LNK_INFO 0x00000200
121#define IMAGE_SCN_TYPE_OVER 0x00000400
122#define IMAGE_SCN_LNK_REMOVE 0x00000800
123#define IMAGE_SCN_LNK_COMDAT 0x00001000
124#define IMAGE_SCN_MEM_PROTECTED 0x00004000
125#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
126#define IMAGE_SCN_GPREL 0x00008000
127#define IMAGE_SCN_MEM_FARDATA 0x00008000
128#define IMAGE_SCN_MEM_SYSHEAP 0x00010000
129#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
130#define IMAGE_SCN_MEM_16BIT 0x00020000
131#define IMAGE_SCN_MEM_LOCKED 0x00040000
132#define IMAGE_SCN_MEM_PRELOAD 0x00080000
133
134#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
135#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
136#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
137#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
138#define IMAGE_SCN_ALIGN_16BYTES 0x00500000
139#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
140#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
141#define IMAGE_SCN_ALIGN_128BYTES 0x00800000
142#define IMAGE_SCN_ALIGN_256BYTES 0x00900000
143#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
144#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
145#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
146#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
147#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
148#define IMAGE_SCN_ALIGN_MASK 0x00F00000
149#define IMAGE_SCN_ALIGN_SHIFT 20
150
151#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
152#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
153#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
154#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
155#define IMAGE_SCN_MEM_SHARED 0x10000000
156#define IMAGE_SCN_MEM_EXECUTE 0x20000000
157#define IMAGE_SCN_MEM_READ 0x40000000
158#define IMAGE_SCN_MEM_WRITE 0x80000000
159
160
161/* relocations */
162#define IMAGE_REL_BASED_ABSOLUTE 0x0
163#define IMAGE_REL_BASED_HIGH 0x1
164#define IMAGE_REL_BASED_LOW 0x2
165#define IMAGE_REL_BASED_HIGHLOW 0x3
166#define IMAGE_REL_BASED_HIGHADJ 0x4
167#define IMAGE_REL_BASED_MIPS_JMPADDR 0x5
168#define IMAGE_REL_BASED_MIPS_JMPADDR16 0x9
169#define IMAGE_REL_BASED_IA64_IMM64 0x9
170#define IMAGE_REL_BASED_DIR64 0xa
171#define IMAGE_REL_BASED_HIGH3ADJ 0xb
172
173
174/* imports */
175#define IMAGE_ORDINAL_FLAG32 0x80000000
176#define IMAGE_ORDINAL32(ord) ((ord) & 0xffff)
177#define IMAGE_SNAP_BY_ORDINAL32(ord) (!!((ord) & IMAGE_ORDINAL_FLAG32))
178
179#define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL
180#define IMAGE_ORDINAL64(ord) ((ord) & 0xffff)
181#define IMAGE_SNAP_BY_ORDINAL64(ord) (!!((ord) & IMAGE_ORDINAL_FLAG64))
182
183
184/* debug dir */
185#define IMAGE_DEBUG_TYPE_UNKNOWN UINT32_C(0x0)
186#define IMAGE_DEBUG_TYPE_COFF UINT32_C(0x1)
187#define IMAGE_DEBUG_TYPE_CODEVIEW UINT32_C(0x2)
188#define IMAGE_DEBUG_TYPE_FPO UINT32_C(0x3)
189#define IMAGE_DEBUG_TYPE_MISC UINT32_C(0x4)
190#define IMAGE_DEBUG_TYPE_EXCEPTION UINT32_C(0x5)
191#define IMAGE_DEBUG_TYPE_FIXUP UINT32_C(0x6)
192#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC UINT32_C(0x7)
193#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC UINT32_C(0x8)
194#define IMAGE_DEBUG_TYPE_BORLAND UINT32_C(0x9)
195#define IMAGE_DEBUG_TYPE_RESERVED10 UINT32_C(0x10)
196
197#define IMAGE_DEBUG_MISC_EXENAME UINT32_C(1)
198
199/* security directory */
200#define WIN_CERT_REVISION_1_0 UINT16_C(0x0100)
201#define WIN_CERT_REVISION_2_0 UINT16_C(0x0200)
202
203#define WIN_CERT_TYPE_X509 UINT16_C(1)
204#define WIN_CERT_TYPE_PKCS_SIGNED_DATA UINT16_C(2)
205#define WIN_CERT_TYPE_RESERVED_1 UINT16_C(3)
206#define WIN_CERT_TYPE_TS_STACK_SIGNED UINT16_C(4)
207#define WIN_CERT_TYPE_EFI_PKCS115 UINT16_C(0x0ef0)
208#define WIN_CERT_TYPE_EFI_GUID UINT16_C(0x0ef1)
209
210
211
212/*******************************************************************************
213* Structures and Typedefs *
214*******************************************************************************/
215typedef struct _IMAGE_FILE_HEADER
216{
217 uint16_t Machine; /**< 0x00 */
218 uint16_t NumberOfSections; /**< 0x02 */
219 uint32_t TimeDateStamp; /**< 0x04 */
220 uint32_t PointerToSymbolTable; /**< 0x08 */
221 uint32_t NumberOfSymbols; /**< 0x0c */
222 uint16_t SizeOfOptionalHeader; /**< 0x10 */
223 uint16_t Characteristics; /**< 0x12 */
224} IMAGE_FILE_HEADER; /* size: 0x14 */
225AssertCompileSize(IMAGE_FILE_HEADER, 0x14);
226typedef IMAGE_FILE_HEADER *PIMAGE_FILE_HEADER;
227typedef IMAGE_FILE_HEADER const *PCIMAGE_FILE_HEADER;
228
229
230typedef struct _IMAGE_DATA_DIRECTORY
231{
232 uint32_t VirtualAddress;
233 uint32_t Size;
234} IMAGE_DATA_DIRECTORY;
235typedef IMAGE_DATA_DIRECTORY *PIMAGE_DATA_DIRECTORY;
236typedef IMAGE_DATA_DIRECTORY const *PCIMAGE_DATA_DIRECTORY;
237
238
239typedef struct _IMAGE_OPTIONAL_HEADER32
240{
241 uint16_t Magic; /**< 0x00 */
242 uint8_t MajorLinkerVersion; /**< 0x02 */
243 uint8_t MinorLinkerVersion; /**< 0x03 */
244 uint32_t SizeOfCode; /**< 0x04 */
245 uint32_t SizeOfInitializedData; /**< 0x08 */
246 uint32_t SizeOfUninitializedData; /**< 0x0c */
247 uint32_t AddressOfEntryPoint; /**< 0x10 */
248 uint32_t BaseOfCode; /**< 0x14 */
249 uint32_t BaseOfData; /**< 0x18 */
250 uint32_t ImageBase; /**< 0x1c */
251 uint32_t SectionAlignment; /**< 0x20 */
252 uint32_t FileAlignment; /**< 0x24 */
253 uint16_t MajorOperatingSystemVersion; /**< 0x28 */
254 uint16_t MinorOperatingSystemVersion; /**< 0x2a */
255 uint16_t MajorImageVersion; /**< 0x2c */
256 uint16_t MinorImageVersion; /**< 0x2e */
257 uint16_t MajorSubsystemVersion; /**< 0x30 */
258 uint16_t MinorSubsystemVersion; /**< 0x32 */
259 uint32_t Win32VersionValue; /**< 0x34 */
260 uint32_t SizeOfImage; /**< 0x38 */
261 uint32_t SizeOfHeaders; /**< 0x3c */
262 uint32_t CheckSum; /**< 0x40 */
263 uint16_t Subsystem; /**< 0x44 */
264 uint16_t DllCharacteristics; /**< 0x46 */
265 uint32_t SizeOfStackReserve; /**< 0x48 */
266 uint32_t SizeOfStackCommit; /**< 0x4c */
267 uint32_t SizeOfHeapReserve; /**< 0x50 */
268 uint32_t SizeOfHeapCommit; /**< 0x54 */
269 uint32_t LoaderFlags; /**< 0x58 */
270 uint32_t NumberOfRvaAndSizes; /**< 0x5c */
271 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; /**< 0x60; 0x10*8 = 0x80 */
272} IMAGE_OPTIONAL_HEADER32; /* size: 0xe0 */
273AssertCompileSize(IMAGE_OPTIONAL_HEADER32, 0xe0);
274typedef IMAGE_OPTIONAL_HEADER32 *PIMAGE_OPTIONAL_HEADER32;
275typedef IMAGE_OPTIONAL_HEADER32 const *PCIMAGE_OPTIONAL_HEADER32;
276
277typedef struct _IMAGE_OPTIONAL_HEADER64
278{
279 uint16_t Magic; /**< 0x00 */
280 uint8_t MajorLinkerVersion; /**< 0x02 */
281 uint8_t MinorLinkerVersion; /**< 0x03 */
282 uint32_t SizeOfCode; /**< 0x04 */
283 uint32_t SizeOfInitializedData; /**< 0x08 */
284 uint32_t SizeOfUninitializedData; /**< 0x0c */
285 uint32_t AddressOfEntryPoint; /**< 0x10 */
286 uint32_t BaseOfCode; /**< 0x14 */
287 uint64_t ImageBase; /**< 0x18 */
288 uint32_t SectionAlignment; /**< 0x20 */
289 uint32_t FileAlignment; /**< 0x24 */
290 uint16_t MajorOperatingSystemVersion; /**< 0x28 */
291 uint16_t MinorOperatingSystemVersion; /**< 0x2a */
292 uint16_t MajorImageVersion; /**< 0x2c */
293 uint16_t MinorImageVersion; /**< 0x2e */
294 uint16_t MajorSubsystemVersion; /**< 0x30 */
295 uint16_t MinorSubsystemVersion; /**< 0x32 */
296 uint32_t Win32VersionValue; /**< 0x34 */
297 uint32_t SizeOfImage; /**< 0x38 */
298 uint32_t SizeOfHeaders; /**< 0x3c */
299 uint32_t CheckSum; /**< 0x40 */
300 uint16_t Subsystem; /**< 0x44 */
301 uint16_t DllCharacteristics; /**< 0x46 */
302 uint64_t SizeOfStackReserve; /**< 0x48 */
303 uint64_t SizeOfStackCommit; /**< 0x50 */
304 uint64_t SizeOfHeapReserve; /**< 0x58 */
305 uint64_t SizeOfHeapCommit; /**< 0x60 */
306 uint32_t LoaderFlags; /**< 0x68 */
307 uint32_t NumberOfRvaAndSizes; /**< 0x6c */
308 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; /**< 0x70; 0x10*8 = 0x80 */
309} IMAGE_OPTIONAL_HEADER64; /* size: 0xf0 */
310typedef IMAGE_OPTIONAL_HEADER64 *PIMAGE_OPTIONAL_HEADER64;
311typedef IMAGE_OPTIONAL_HEADER64 const *PCIMAGE_OPTIONAL_HEADER64;
312
313
314typedef struct _IMAGE_NT_HEADERS
315{
316 uint32_t Signature; /**< 0x00 */
317 IMAGE_FILE_HEADER FileHeader; /**< 0x04 */
318 IMAGE_OPTIONAL_HEADER32 OptionalHeader; /**< 0x18 */
319} IMAGE_NT_HEADERS32; /* size: 0xf8 */
320AssertCompileSize(IMAGE_NT_HEADERS32, 0xf8);
321AssertCompileMemberOffset(IMAGE_NT_HEADERS32, FileHeader, 4);
322AssertCompileMemberOffset(IMAGE_NT_HEADERS32, OptionalHeader, 24);
323typedef IMAGE_NT_HEADERS32 *PIMAGE_NT_HEADERS32;
324typedef IMAGE_NT_HEADERS32 const *PCIMAGE_NT_HEADERS32;
325
326typedef struct _IMAGE_NT_HEADERS64
327{
328 uint32_t Signature; /**< 0x00 */
329 IMAGE_FILE_HEADER FileHeader; /**< 0x04 */
330 IMAGE_OPTIONAL_HEADER64 OptionalHeader; /**< 0x18 */
331} IMAGE_NT_HEADERS64; /**< 0x108 */
332AssertCompileSize(IMAGE_NT_HEADERS64, 0x108);
333AssertCompileMemberOffset(IMAGE_NT_HEADERS64, FileHeader, 4);
334AssertCompileMemberOffset(IMAGE_NT_HEADERS64, OptionalHeader, 24);
335typedef IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64;
336typedef IMAGE_NT_HEADERS64 const *PCIMAGE_NT_HEADERS64;
337
338
339typedef struct _IMAGE_SECTION_HEADER
340{
341 uint8_t Name[IMAGE_SIZEOF_SHORT_NAME];
342 union
343 {
344 uint32_t PhysicalAddress;
345 uint32_t VirtualSize;
346 } Misc;
347 uint32_t VirtualAddress;
348 uint32_t SizeOfRawData;
349 uint32_t PointerToRawData;
350 uint32_t PointerToRelocations;
351 uint32_t PointerToLinenumbers;
352 uint16_t NumberOfRelocations;
353 uint16_t NumberOfLinenumbers;
354 uint32_t Characteristics;
355} IMAGE_SECTION_HEADER;
356typedef IMAGE_SECTION_HEADER *PIMAGE_SECTION_HEADER;
357typedef IMAGE_SECTION_HEADER const *PCIMAGE_SECTION_HEADER;
358
359
360typedef struct _IMAGE_BASE_RELOCATION
361{
362 uint32_t VirtualAddress;
363 uint32_t SizeOfBlock;
364} IMAGE_BASE_RELOCATION;
365typedef IMAGE_BASE_RELOCATION *PIMAGE_BASE_RELOCATION;
366typedef IMAGE_BASE_RELOCATION const *PCIMAGE_BASE_RELOCATION;
367
368
369typedef struct _IMAGE_EXPORT_DIRECTORY
370{
371 uint32_t Characteristics;
372 uint32_t TimeDateStamp;
373 uint16_t MajorVersion;
374 uint16_t MinorVersion;
375 uint32_t Name;
376 uint32_t Base;
377 uint32_t NumberOfFunctions;
378 uint32_t NumberOfNames;
379 uint32_t AddressOfFunctions;
380 uint32_t AddressOfNames;
381 uint32_t AddressOfNameOrdinals;
382} IMAGE_EXPORT_DIRECTORY;
383typedef IMAGE_EXPORT_DIRECTORY *PIMAGE_EXPORT_DIRECTORY;
384typedef IMAGE_EXPORT_DIRECTORY const *PCIMAGE_EXPORT_DIRECTORY;
385
386
387typedef struct _IMAGE_IMPORT_DESCRIPTOR
388{
389 union
390 {
391 uint32_t Characteristics;
392 uint32_t OriginalFirstThunk;
393 } u;
394 uint32_t TimeDateStamp;
395 uint32_t ForwarderChain;
396 uint32_t Name;
397 uint32_t FirstThunk;
398} IMAGE_IMPORT_DESCRIPTOR;
399typedef IMAGE_IMPORT_DESCRIPTOR *PIMAGE_IMPORT_DESCRIPTOR;
400typedef IMAGE_IMPORT_DESCRIPTOR const *PCIMAGE_IMPORT_DESCRIPTOR;
401
402
403typedef struct _IMAGE_IMPORT_BY_NAME
404{
405 uint16_t Hint;
406 uint8_t Name[1];
407} IMAGE_IMPORT_BY_NAME;
408typedef IMAGE_IMPORT_BY_NAME *PIMAGE_IMPORT_BY_NAME;
409typedef IMAGE_IMPORT_BY_NAME const *PCIMAGE_IMPORT_BY_NAME;
410
411
412/* The image_thunk_data32/64 structures are not very helpful except for getting RSI. keep them around till all the code has been converted. */
413typedef struct _IMAGE_THUNK_DATA64
414{
415 union
416 {
417 uint64_t ForwarderString;
418 uint64_t Function;
419 uint64_t Ordinal;
420 uint64_t AddressOfData;
421 } u1;
422} IMAGE_THUNK_DATA64;
423typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64;
424typedef IMAGE_THUNK_DATA64 const *PCIMAGE_THUNK_DATA64;
425
426typedef struct _IMAGE_THUNK_DATA32
427{
428 union
429 {
430 uint32_t ForwarderString;
431 uint32_t Function;
432 uint32_t Ordinal;
433 uint32_t AddressOfData;
434 } u1;
435} IMAGE_THUNK_DATA32;
436typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32;
437typedef IMAGE_THUNK_DATA32 const *PCIMAGE_THUNK_DATA32;
438
439
440typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32
441{
442 uint32_t Size;
443 uint32_t TimeDateStamp;
444 uint16_t MajorVersion;
445 uint16_t MinorVersion;
446 uint32_t GlobalFlagsClear;
447 uint32_t GlobalFlagsSet;
448 uint32_t CriticalSectionDefaultTimeout;
449 uint32_t DeCommitFreeBlockThreshold;
450 uint32_t DeCommitTotalFreeThreshold;
451 uint32_t LockPrefixTable;
452 uint32_t MaximumAllocationSize;
453 uint32_t VirtualMemoryThreshold;
454 uint32_t ProcessHeapFlags;
455 uint32_t ProcessAffinityMask;
456 uint16_t CSDVersion;
457 uint16_t Reserved1;
458 uint32_t EditList;
459 uint32_t SecurityCookie;
460 uint32_t SEHandlerTable;
461 uint32_t SEHandlerCount;
462} IMAGE_LOAD_CONFIG_DIRECTORY32;
463typedef IMAGE_LOAD_CONFIG_DIRECTORY32 *PIMAGE_LOAD_CONFIG_DIRECTORY32;
464typedef IMAGE_LOAD_CONFIG_DIRECTORY32 const *PCIMAGE_LOAD_CONFIG_DIRECTORY32;
465
466typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64
467{
468 uint32_t Size;
469 uint32_t TimeDateStamp;
470 uint16_t MajorVersion;
471 uint16_t MinorVersion;
472 uint32_t GlobalFlagsClear;
473 uint32_t GlobalFlagsSet;
474 uint32_t CriticalSectionDefaultTimeout;
475 uint64_t DeCommitFreeBlockThreshold;
476 uint64_t DeCommitTotalFreeThreshold;
477 uint64_t LockPrefixTable;
478 uint64_t MaximumAllocationSize;
479 uint64_t VirtualMemoryThreshold;
480 uint64_t ProcessAffinityMask;
481 uint32_t ProcessHeapFlags;
482 uint16_t CSDVersion;
483 uint16_t Reserved1;
484 uint64_t EditList;
485 uint64_t SecurityCookie;
486 uint64_t SEHandlerTable;
487 uint64_t SEHandlerCount;
488} IMAGE_LOAD_CONFIG_DIRECTORY64;
489typedef IMAGE_LOAD_CONFIG_DIRECTORY64 *PIMAGE_LOAD_CONFIG_DIRECTORY64;
490typedef IMAGE_LOAD_CONFIG_DIRECTORY64 const *PCIMAGE_LOAD_CONFIG_DIRECTORY64;
491
492
493typedef struct _IMAGE_DEBUG_DIRECTORY
494{
495 uint32_t Characteristics;
496 uint32_t TimeDateStamp;
497 uint16_t MajorVersion;
498 uint16_t MinorVersion;
499 uint32_t Type;
500 uint32_t SizeOfData;
501 uint32_t AddressOfRawData;
502 uint32_t PointerToRawData;
503} IMAGE_DEBUG_DIRECTORY;
504typedef IMAGE_DEBUG_DIRECTORY *PIMAGE_DEBUG_DIRECTORY;
505typedef IMAGE_DEBUG_DIRECTORY const *PCIMAGE_DEBUG_DIRECTORY;
506
507typedef struct _IMAGE_DEBUG_MISC
508{
509 uint32_t DataType;
510 uint32_t Length;
511 uint8_t Unicode;
512 uint8_t Reserved[3];
513 uint8_t Data[1];
514} IMAGE_DEBUG_MISC;
515typedef IMAGE_DEBUG_MISC *PIMAGE_DEBUG_MISC;
516typedef IMAGE_DEBUG_MISC const *PCIMAGE_DEBUG_MISC;
517
518
519typedef struct WIN_CERTIFICATE
520{
521 uint32_t dwLength;
522 uint16_t wRevision;
523 uint16_t wCertificateType;
524 uint8_t bCertificate[8];
525} WIN_CERTIFICATE;
526typedef WIN_CERTIFICATE *PWIN_CERTIFICATE;
527typedef WIN_CERTIFICATE const *PCWIN_CERTIFICATE;
528
529#pragma pack()
530
531#endif
532
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette