Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
616 | bw | 1 | unit EXETypes; |
2 | |||
3 | interface |
||
4 | |||
5 | const |
||
6 | IMAGE_DOS_SIGNATURE = $5A4D; { MZ } |
||
7 | IMAGE_OS2_SIGNATURE = $454E; { NE } |
||
8 | IMAGE_OS2_SIGNATURE_LE = $454C; { LE } |
||
9 | IMAGE_VXD_SIGNATURE = $454C; { LE } |
||
10 | IMAGE_NT_SIGNATURE = $00004550; { PE00 } |
||
11 | |||
12 | IMAGE_SIZEOF_SHORT_NAME = 8; |
||
13 | IMAGE_SIZEOF_SECTION_HEADER = 40; |
||
14 | IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16; |
||
15 | IMAGE_RESOURCE_NAME_IS_STRING = $80000000; |
||
16 | IMAGE_RESOURCE_DATA_IS_DIRECTORY = $80000000; |
||
17 | IMAGE_OFFSET_STRIP_HIGH = $7FFFFFFF; |
||
18 | |||
19 | type |
||
20 | PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER; |
||
21 | IMAGE_DOS_HEADER = packed record { DOS .EXE header } |
||
22 | e_magic : WORD; { Magic number } |
||
23 | e_cblp : WORD; { Bytes on last page of file } |
||
24 | e_cp : WORD; { Pages in file } |
||
25 | e_crlc : WORD; { Relocations } |
||
26 | e_cparhdr : WORD; { Size of header in paragraphs } |
||
27 | e_minalloc : WORD; { Minimum extra paragraphs needed } |
||
28 | e_maxalloc : WORD; { Maximum extra paragraphs needed } |
||
29 | e_ss : WORD; { Initial (relative) SS value } |
||
30 | e_sp : WORD; { Initial SP value } |
||
31 | e_csum : WORD; { Checksum } |
||
32 | e_ip : WORD; { Initial IP value } |
||
33 | e_cs : WORD; { Initial (relative) CS value } |
||
34 | e_lfarlc : WORD; { File address of relocation table } |
||
35 | e_ovno : WORD; { Overlay number } |
||
36 | e_res : packed array [0..3] of WORD; { Reserved words } |
||
37 | e_oemid : WORD; { OEM identifier (for e_oeminfo) } |
||
38 | e_oeminfo : WORD; { OEM information; e_oemid specific } |
||
39 | e_res2 : packed array [0..9] of WORD; { Reserved words } |
||
40 | e_lfanew : Longint; { File address of new exe header } |
||
41 | end; |
||
42 | |||
43 | PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER; |
||
44 | IMAGE_FILE_HEADER = packed record |
||
45 | Machine : WORD; |
||
46 | NumberOfSections : WORD; |
||
47 | TimeDateStamp : DWORD; |
||
48 | PointerToSymbolTable : DWORD; |
||
49 | NumberOfSymbols : DWORD; |
||
50 | SizeOfOptionalHeader : WORD; |
||
51 | Characteristics : WORD; |
||
52 | end; |
||
53 | |||
54 | PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY; |
||
55 | IMAGE_DATA_DIRECTORY = packed record |
||
56 | VirtualAddress : DWORD; |
||
57 | Size : DWORD; |
||
58 | end; |
||
59 | |||
60 | PIMAGE_OPTIONAL_HEADER = ^IMAGE_OPTIONAL_HEADER; |
||
61 | IMAGE_OPTIONAL_HEADER = packed record |
||
62 | { Standard fields. } |
||
63 | Magic : WORD; |
||
64 | MajorLinkerVersion : Byte; |
||
65 | MinorLinkerVersion : Byte; |
||
66 | SizeOfCode : DWORD; |
||
67 | SizeOfInitializedData : DWORD; |
||
68 | SizeOfUninitializedData : DWORD; |
||
69 | AddressOfEntryPoint : DWORD; |
||
70 | BaseOfCode : DWORD; |
||
71 | BaseOfData : DWORD; |
||
72 | { NT additional fields. } |
||
73 | ImageBase : DWORD; |
||
74 | SectionAlignment : DWORD; |
||
75 | FileAlignment : DWORD; |
||
76 | MajorOperatingSystemVersion : WORD; |
||
77 | MinorOperatingSystemVersion : WORD; |
||
78 | MajorImageVersion : WORD; |
||
79 | MinorImageVersion : WORD; |
||
80 | MajorSubsystemVersion : WORD; |
||
81 | MinorSubsystemVersion : WORD; |
||
82 | Reserved1 : DWORD; |
||
83 | SizeOfImage : DWORD; |
||
84 | SizeOfHeaders : DWORD; |
||
85 | CheckSum : DWORD; |
||
86 | Subsystem : WORD; |
||
87 | DllCharacteristics : WORD; |
||
88 | SizeOfStackReserve : DWORD; |
||
89 | SizeOfStackCommit : DWORD; |
||
90 | SizeOfHeapReserve : DWORD; |
||
91 | SizeOfHeapCommit : DWORD; |
||
92 | LoaderFlags : DWORD; |
||
93 | NumberOfRvaAndSizes : DWORD; |
||
94 | DataDirectory : packed array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES-1] of IMAGE_DATA_DIRECTORY; |
||
95 | end; |
||
96 | |||
97 | PIMAGE_SECTION_HEADER = ^IMAGE_SECTION_HEADER; |
||
98 | IMAGE_SECTION_HEADER = packed record |
||
99 | Name : packed array [0..IMAGE_SIZEOF_SHORT_NAME-1] of Char; |
||
100 | PhysicalAddress : DWORD; // or VirtualSize (union); |
||
101 | VirtualAddress : DWORD; |
||
102 | SizeOfRawData : DWORD; |
||
103 | PointerToRawData : DWORD; |
||
104 | PointerToRelocations : DWORD; |
||
105 | PointerToLinenumbers : DWORD; |
||
106 | NumberOfRelocations : WORD; |
||
107 | NumberOfLinenumbers : WORD; |
||
108 | Characteristics : DWORD; |
||
109 | end; |
||
110 | |||
111 | PIMAGE_NT_HEADERS = ^IMAGE_NT_HEADERS; |
||
112 | IMAGE_NT_HEADERS = packed record |
||
113 | Signature : DWORD; |
||
114 | FileHeader : IMAGE_FILE_HEADER; |
||
115 | OptionalHeader : IMAGE_OPTIONAL_HEADER; |
||
116 | end; |
||
117 | |||
118 | { Resources } |
||
119 | |||
120 | PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY; |
||
121 | IMAGE_RESOURCE_DIRECTORY = packed record |
||
122 | Characteristics : DWORD; |
||
123 | TimeDateStamp : DWORD; |
||
124 | MajorVersion : WORD; |
||
125 | MinorVersion : WORD; |
||
126 | NumberOfNamedEntries : WORD; |
||
127 | NumberOfIdEntries : WORD; |
||
128 | end; |
||
129 | |||
130 | PIMAGE_RESOURCE_DIRECTORY_ENTRY = ^IMAGE_RESOURCE_DIRECTORY_ENTRY; |
||
131 | IMAGE_RESOURCE_DIRECTORY_ENTRY = packed record |
||
132 | Name: DWORD; // Or ID: Word (Union) |
||
133 | OffsetToData: DWORD; |
||
134 | end; |
||
135 | |||
136 | PIMAGE_RESOURCE_DATA_ENTRY = ^IMAGE_RESOURCE_DATA_ENTRY; |
||
137 | IMAGE_RESOURCE_DATA_ENTRY = packed record |
||
138 | OffsetToData : DWORD; |
||
139 | Size : DWORD; |
||
140 | CodePage : DWORD; |
||
141 | Reserved : DWORD; |
||
142 | end; |
||
143 | |||
144 | PIMAGE_RESOURCE_DIR_STRING_U = ^IMAGE_RESOURCE_DIR_STRING_U; |
||
145 | IMAGE_RESOURCE_DIR_STRING_U = packed record |
||
146 | Length : WORD; |
||
147 | NameString : array [0..0] of WCHAR; |
||
148 | end; |
||
149 | |||
150 | { |
||
151 | /* Predefined resource types */ |
||
152 | #define RT_NEWRESOURCE 0x2000 |
||
153 | #define RT_ERROR 0x7fff |
||
154 | #define RT_CURSOR 1 |
||
155 | #define RT_BITMAP 2 |
||
156 | #define RT_ICON 3 |
||
157 | #define RT_MENU 4 |
||
158 | #define RT_DIALOG 5 |
||
159 | #define RT_STRING 6 |
||
160 | #define RT_FONTDIR 7 |
||
161 | #define RT_FONT 8 |
||
162 | #define RT_ACCELERATORS 9 |
||
163 | #define RT_RCDATA 10 |
||
164 | #define RT_MESSAGETABLE 11 |
||
165 | #define RT_GROUP_CURSOR 12 |
||
166 | #define RT_GROUP_ICON 14 |
||
167 | #define RT_VERSION 16 |
||
168 | #define RT_NEWBITMAP (RT_BITMAP|RT_NEWRESOURCE) |
||
169 | #define RT_NEWMENU (RT_MENU|RT_NEWRESOURCE) |
||
170 | #define RT_NEWDIALOG (RT_DIALOG|RT_NEWRESOURCE) |
||
171 | |||
172 | } |
||
173 | |||
174 | type |
||
175 | TResourceType = ( |
||
176 | rtUnknown0, |
||
177 | rtCursorEntry, |
||
178 | rtBitmap, |
||
179 | rtIconEntry, |
||
180 | rtMenu, |
||
181 | rtDialog, |
||
182 | rtString, |
||
183 | rtFontDir, |
||
184 | rtFont, |
||
185 | rtAccelerators, |
||
186 | rtRCData, |
||
187 | rtMessageTable, |
||
188 | rtCursor, |
||
189 | rtUnknown13, |
||
190 | rtIcon, |
||
191 | rtUnknown15, |
||
192 | rtVersion); |
||
193 | |||
194 | { Resource Type Constants } |
||
195 | |||
196 | const |
||
197 | StringsPerBlock = 16; |
||
198 | |||
199 | { Resource Related Structures from RESFMT.TXT in WIN32 SDK } |
||
200 | |||
201 | type |
||
202 | |||
203 | PIconHeader = ^TIconHeader; |
||
204 | TIconHeader = packed record |
||
205 | wReserved: Word; { Currently zero } |
||
206 | wType: Word; { 1 for icons } |
||
207 | wCount: Word; { Number of components } |
||
208 | end; |
||
209 | |||
210 | PIconResInfo = ^TIconResInfo; |
||
211 | TIconResInfo = packed record |
||
212 | bWidth: Byte; |
||
213 | bHeight: Byte; |
||
214 | bColorCount: Byte; |
||
215 | bReserved: Byte; |
||
216 | wPlanes: Word; |
||
217 | wBitCount: Word; |
||
218 | lBytesInRes: DWORD; |
||
219 | wNameOrdinal: Word; { Points to component } |
||
220 | end; |
||
221 | |||
222 | PCursorResInfo = ^TCursorResInfo; |
||
223 | TCursorResInfo = packed record |
||
224 | wWidth: Word; |
||
225 | wHeight: Word; |
||
226 | wPlanes: Word; |
||
227 | wBitCount: Word; |
||
228 | lBytesInRes: DWORD; |
||
229 | wNameOrdinal: Word; { Points to component } |
||
230 | end; |
||
231 | |||
232 | |||
233 | implementation |
||
234 | |||
235 | end. |