ReactOS 0.4.16-dev-1946-g52006dd
pecoff.h
Go to the documentation of this file.
1#pragma once
2
3#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x010b
4#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x020b
5
6#define IMAGE_DOS_MAGIC 0x5a4d
7#define IMAGE_PE_MAGIC 0x00004550
8#define IMAGE_SIZEOF_SHORT_NAME 8
9
10#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
11#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
12#define IMAGE_FILE_DEBUG_STRIPPED 0x0200
13
14#define IMAGE_FILE_MACHINE_I386 0x14c
15#define IMAGE_FILE_MACHINE_AMD64 0x8664
16#define IMAGE_FILE_MACHINE_IA64 0x0200
17
18#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
19
20#define IMAGE_SCN_TYPE_NOLOAD 0x00000002
21#define IMAGE_SCN_TYPE_NO_PAD 0x00000008
22#define IMAGE_SCN_CNT_CODE 0x00000020
23#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
24#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
25#define IMAGE_SCN_LNK_OTHER 0x00000100
26#define IMAGE_SCN_LNK_INFO 0x00000200
27#define IMAGE_SCN_LNK_REMOVE 0x00000800
28#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
29#define IMAGE_SCN_GPREL 0x00008000
30#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
31#define IMAGE_SCN_MEM_LOCKED 0x00040000
32#define IMAGE_SCN_MEM_PRELOAD 0x00080000
33#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
34#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
35#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
36#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
37#define IMAGE_SCN_MEM_SHARED 0x10000000
38#define IMAGE_SCN_MEM_EXECUTE 0x20000000
39#define IMAGE_SCN_MEM_READ 0x40000000
40#define IMAGE_SCN_MEM_WRITE 0x80000000
41
42#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
43#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
44#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
45#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
46#define IMAGE_SCN_ALIGN_16BYTES 0x00500000
47#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
48#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
49#define IMAGE_SCN_ALIGN_128BYTES 0x00800000
50#define IMAGE_SCN_ALIGN_256BYTES 0x00900000
51#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
52#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
53#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
54#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
55#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
56#define IMAGE_SCN_ALIGN_MASK 0x00F00000
57
58#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
59
60#define IMAGE_REL_I386_ABSOLUTE 0x0001
61#define IMAGE_REL_I386_REL16 0x0002
62#define IMAGE_REL_I386_DIR32 0x0006
63
64/* Helper macro to enable gcc's extension. */
65#ifndef __GNU_EXTENSION
66 #ifdef __GNUC__
67 #define __GNU_EXTENSION __extension__
68 #else
69 #define __GNU_EXTENSION
70 #endif
71#endif /* __GNU_EXTENSION */
72
73
74#ifndef DUMMYUNIONNAME
75 #if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS)
76 #define _ANONYMOUS_UNION
77 #define _UNION_NAME(x) x
78 #define DUMMYUNIONNAME u
79 #define DUMMYUNIONNAME1 u1
80 #define DUMMYUNIONNAME2 u2
81 #define DUMMYUNIONNAME3 u3
82 #define DUMMYUNIONNAME4 u4
83 #define DUMMYUNIONNAME5 u5
84 #define DUMMYUNIONNAME6 u6
85 #define DUMMYUNIONNAME7 u7
86 #define DUMMYUNIONNAME8 u8
87 #define DUMMYUNIONNAME9 u9
88 #else
89 #define _ANONYMOUS_UNION __GNU_EXTENSION
90 #define _UNION_NAME(x)
91 #define DUMMYUNIONNAME
92 #define DUMMYUNIONNAME1
93 #define DUMMYUNIONNAME2
94 #define DUMMYUNIONNAME3
95 #define DUMMYUNIONNAME4
96 #define DUMMYUNIONNAME5
97 #define DUMMYUNIONNAME6
98 #define DUMMYUNIONNAME7
99 #define DUMMYUNIONNAME8
100 #define DUMMYUNIONNAME9
101 #endif /* NONAMELESSUNION */
102#endif /* !DUMMYUNIONNAME */
103
104#ifndef DUMMYSTRUCTNAME
105 #if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS)
106 #define _ANONYMOUS_STRUCT
107 #define _STRUCT_NAME(x) x
108 #define DUMMYSTRUCTNAME s
109 #define DUMMYSTRUCTNAME1 s1
110 #define DUMMYSTRUCTNAME2 s2
111 #define DUMMYSTRUCTNAME3 s3
112 #define DUMMYSTRUCTNAME4 s4
113 #define DUMMYSTRUCTNAME5 s5
114 #else
115 #define _ANONYMOUS_STRUCT __GNU_EXTENSION
116 #define _STRUCT_NAME(x)
117 #define DUMMYSTRUCTNAME
118 #define DUMMYSTRUCTNAME1
119 #define DUMMYSTRUCTNAME2
120 #define DUMMYSTRUCTNAME3
121 #define DUMMYSTRUCTNAME4
122 #define DUMMYSTRUCTNAME5
123 #endif /* NONAMELESSUNION */
124#endif /* DUMMYSTRUCTNAME */
125
126#pragma pack(push,2)
127typedef struct _IMAGE_DOS_HEADER {
129 WORD e_cblp;
130 WORD e_cp;
131 WORD e_crlc;
135 WORD e_ss;
136 WORD e_sp;
137 WORD e_csum;
138 WORD e_ip;
139 WORD e_cs;
141 WORD e_ovno;
142 WORD e_res[4];
145 WORD e_res2[10];
148#pragma pack(pop)
149
150#pragma pack(push,4)
151typedef struct _IMAGE_FILE_HEADER {
160#pragma pack(pop)
161
162typedef struct _IMAGE_DATA_DIRECTORY {
164 DWORD Size;
166
167#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
168#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
169#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
170#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
171#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
172#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
173#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
174#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
175#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
176#define IMAGE_DIRECTORY_ENTRY_TLS 9
177#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
178#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
179#define IMAGE_DIRECTORY_ENTRY_IAT 12
180#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
181#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
182
216
217typedef struct _IMAGE_OPTIONAL_HEADER64 {
249
250#ifdef _TARGET_PE64
253#else
256#endif
257
259{
264
265typedef struct _IMAGE_NT_HEADERS64
266{
271
272#ifdef _TARGET_PE64
275#else
278#endif
279
280typedef struct _IMAGE_SECTION_HEADER {
282 union {
295
296#pragma pack(push,4)
297typedef struct _IMAGE_BASE_RELOCATION {
300 // Followed by: WORD TypeOffset[ANYSIZE_ARRAY];
302#pragma pack(pop)
303
304typedef struct _IMAGE_RESOURCE_DIRECTORY {
312
313#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
314#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
315
316typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
317 _ANONYMOUS_UNION union {
318 _ANONYMOUS_STRUCT struct {
322 DWORD Name;
325 _ANONYMOUS_UNION union {
327 _ANONYMOUS_STRUCT struct {
333
338
339typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
341 ULONG Size;
345
346#ifndef UNALIGNED
347#define UNALIGNED
348#endif
349
350#pragma pack(push,2)
351typedef struct _IMAGE_RELOCATION {
352 union {
355 };
360#pragma pack(pop)
361
362#pragma pack(push,2)
363typedef struct _IMAGE_SYMBOL {
364 union {
366 struct {
371 } N;
379#pragma pack(pop)
380
381#define IMAGE_DOS_SIGNATURE 0x5A4D
382#define IMAGE_OS2_SIGNATURE 0x454E
383#define IMAGE_OS2_SIGNATURE_LE 0x454C
384#define IMAGE_VXD_SIGNATURE 0x454C
385#define IMAGE_NT_SIGNATURE 0x00004550
386
387#define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
struct _IMAGE_RESOURCE_DIRECTORY_STRING * PIMAGE_RESOURCE_DIRECTORY_STRING
struct _IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS32
struct _IMAGE_OPTIONAL_HEADER64 * PIMAGE_OPTIONAL_HEADER64
struct _IMAGE_RESOURCE_DIRECTORY * PIMAGE_RESOURCE_DIRECTORY
IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS
Definition: pecoff.h:276
struct _IMAGE_RELOCATION IMAGE_RELOCATION
struct _IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER64
struct _IMAGE_OPTIONAL_HEADER32 * PIMAGE_OPTIONAL_HEADER32
IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER
Definition: pecoff.h:254
struct _IMAGE_RESOURCE_DATA_ENTRY * PIMAGE_RESOURCE_DATA_ENTRY
struct _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY
struct _IMAGE_BASE_RELOCATION IMAGE_BASE_RELOCATION
struct _IMAGE_SECTION_HEADER * PIMAGE_SECTION_HEADER
struct _IMAGE_BASE_RELOCATION * PIMAGE_BASE_RELOCATION
struct _IMAGE_FILE_HEADER IMAGE_FILE_HEADER
PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS
Definition: pecoff.h:277
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY
struct _IMAGE_RELOCATION UNALIGNED * PIMAGE_RELOCATION
Definition: pecoff.h:359
struct _IMAGE_NT_HEADERS64 * PIMAGE_NT_HEADERS64
struct _IMAGE_DOS_HEADER IMAGE_DOS_HEADER
struct _IMAGE_RESOURCE_DIRECTORY_STRING IMAGE_RESOURCE_DIRECTORY_STRING
struct _IMAGE_SYMBOL IMAGE_SYMBOL
struct _IMAGE_DATA_DIRECTORY * PIMAGE_DATA_DIRECTORY
struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
#define UNALIGNED
Definition: pecoff.h:347
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER
Definition: pecoff.h:255
struct _IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS64
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY * PIMAGE_RESOURCE_DIRECTORY_ENTRY
struct _IMAGE_SYMBOL UNALIGNED * PIMAGE_SYMBOL
Definition: pecoff.h:378
struct _IMAGE_RESOURCE_DATA_ENTRY IMAGE_RESOURCE_DATA_ENTRY
#define _ANONYMOUS_UNION
Definition: pecoff.h:89
struct _IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER32
#define _ANONYMOUS_STRUCT
Definition: pecoff.h:115
struct _IMAGE_FILE_HEADER * PIMAGE_FILE_HEADER
struct _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER
struct _IMAGE_NT_HEADERS32 * PIMAGE_NT_HEADERS32
short SHORT
Definition: pedump.c:59
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
WORD e_res2[10]
Definition: ntddk_ex.h:117
DWORD NumberOfSymbols
Definition: ntddk_ex.h:126
DWORD PointerToSymbolTable
Definition: ntddk_ex.h:125
WORD SizeOfOptionalHeader
Definition: ntddk_ex.h:127
IMAGE_OPTIONAL_HEADER32 OptionalHeader
Definition: pecoff.h:262
IMAGE_FILE_HEADER FileHeader
Definition: pecoff.h:261
IMAGE_OPTIONAL_HEADER64 OptionalHeader
Definition: ntimage.h:396
IMAGE_FILE_HEADER FileHeader
Definition: ntimage.h:395
WORD MajorOperatingSystemVersion
Definition: pecoff.h:196
WORD MinorOperatingSystemVersion
Definition: pecoff.h:197
DWORD SizeOfUninitializedData
Definition: pecoff.h:189
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Definition: pecoff.h:214
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Definition: ntimage.h:370
ULONGLONG SizeOfStackReserve
Definition: ntimage.h:364
ULONGLONG SizeOfHeapCommit
Definition: ntimage.h:367
ULONGLONG SizeOfStackCommit
Definition: ntimage.h:365
DWORD SizeOfUninitializedData
Definition: pecoff.h:223
WORD MajorOperatingSystemVersion
Definition: pecoff.h:229
ULONGLONG SizeOfHeapReserve
Definition: ntimage.h:366
WORD MinorOperatingSystemVersion
Definition: pecoff.h:230
DWORD RelocCount
Definition: pecoff.h:354
DWORD VirtualAddress
Definition: pecoff.h:353
DWORD SymbolTableIndex
Definition: pecoff.h:356
Definition: pedump.c:458
DWORD Reserved
Definition: pedump.c:462
DWORD CodePage
Definition: pedump.c:461
DWORD OffsetToData
Definition: pedump.c:459
DWORD Size
Definition: pedump.c:460
Definition: pedump.c:414
_ANONYMOUS_UNION union _IMAGE_RESOURCE_DIRECTORY_ENTRY::@2308 DUMMYUNIONNAME
DWORD NameOffset
Definition: pecoff.h:319
DWORD OffsetToData
Definition: pedump.c:416
DWORD OffsetToDirectory
Definition: pecoff.h:328
DWORD DataIsDirectory
Definition: pecoff.h:329
WORD Id
Definition: pecoff.h:323
_ANONYMOUS_STRUCT struct _IMAGE_RESOURCE_DIRECTORY_ENTRY::@2308::@2310 DUMMYSTRUCTNAME
DWORD NameIsString
Definition: pecoff.h:320
_ANONYMOUS_STRUCT struct _IMAGE_RESOURCE_DIRECTORY_ENTRY::@2309::@2311 DUMMYSTRUCTNAME2
DWORD Name
Definition: pedump.c:415
_ANONYMOUS_UNION union _IMAGE_RESOURCE_DIRECTORY_ENTRY::@2309 DUMMYUNIONNAME2
DWORD PointerToLinenumbers
Definition: pedump.c:292
union _IMAGE_SECTION_HEADER::@1686 Misc
DWORD PointerToRelocations
Definition: pedump.c:291
DWORD PointerToRawData
Definition: pedump.c:290
BYTE Name[IMAGE_SIZEOF_SHORT_NAME]
Definition: pedump.c:281
WORD NumberOfLinenumbers
Definition: pedump.c:294
WORD NumberOfRelocations
Definition: pedump.c:293
DWORD LongName[2]
Definition: pecoff.h:370
WORD Type
Definition: pecoff.h:374
BYTE NumberOfAuxSymbols
Definition: pecoff.h:376
union _IMAGE_SYMBOL::@2475 N
DWORD Value
Definition: pecoff.h:372
struct _IMAGE_SYMBOL::@2475::@2476 Name
BYTE StorageClass
Definition: pecoff.h:375
DWORD Long
Definition: pecoff.h:368
DWORD Short
Definition: pecoff.h:367
BYTE ShortName[8]
Definition: pecoff.h:365
SHORT SectionNumber
Definition: pecoff.h:373
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES
Definition: winnt_old.h:686
#define IMAGE_SIZEOF_SHORT_NAME
Definition: winnt_old.h:690
char CHAR
Definition: xmlstorage.h:175
unsigned char BYTE
Definition: xxhash.c:193