Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenntimage.h
Go to the documentation of this file.
00001 #ifndef _NTIMAGE_ 00002 #define _NTIMAGE_ 00003 00004 // 00005 // Image Formats 00006 // 00007 #define IMAGE_DOS_SIGNATURE 0x5A4D 00008 #define IMAGE_OS2_SIGNATURE 0x454E 00009 #define IMAGE_OS2_SIGNATURE_LE 0x454C 00010 #define IMAGE_VXD_SIGNATURE 0x454C 00011 #define IMAGE_NT_SIGNATURE 0x00004550 00012 00013 // 00014 // Image architectures 00015 // 00016 #define IMAGE_FILE_MACHINE_AM33 0x1d3 00017 #define IMAGE_FILE_MACHINE_AMD64 0x8664 00018 #define IMAGE_FILE_MACHINE_ARM 0x1c0 00019 #define IMAGE_FILE_MACHINE_ARMV7 0x1c4 00020 #define IMAGE_FILE_MACHINE_EBC 0xebc 00021 #define IMAGE_FILE_MACHINE_I386 0x14c 00022 #define IMAGE_FILE_MACHINE_IA64 0x200 00023 #define IMAGE_FILE_MACHINE_M32R 0x9041 00024 #define IMAGE_FILE_MACHINE_MIPS16 0x266 00025 #define IMAGE_FILE_MACHINE_MIPSFPU 0x366 00026 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x466 00027 #define IMAGE_FILE_MACHINE_POWERPC 0x1f0 00028 #define IMAGE_FILE_MACHINE_POWERPCFP 0x1f1 00029 #define IMAGE_FILE_MACHINE_R4000 0x166 00030 #define IMAGE_FILE_MACHINE_SH3 0x1a2 00031 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 00032 #define IMAGE_FILE_MACHINE_SH3DSP 0x1a3 00033 #define IMAGE_FILE_MACHINE_SH4 0x1a6 00034 #define IMAGE_FILE_MACHINE_SH5 0x1a8 00035 #define IMAGE_FILE_MACHINE_THUMB 0x1c2 00036 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x169 00037 #define IMAGE_FILE_MACHINE_R3000 0x162 00038 #define IMAGE_FILE_MACHINE_R10000 0x168 00039 #define IMAGE_FILE_MACHINE_ALPHA 0x184 00040 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 00041 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 00042 #define IMAGE_FILE_MACHINE_CEE 0xC0EE 00043 #define IMAGE_FILE_MACHINE_TRICORE 0x0520 00044 #define IMAGE_FILE_MACHINE_CEF 0x0CEF 00045 00046 00047 // 00048 // DOS Image Header Format 00049 // 00050 #include <pshpack2.h> 00051 typedef struct _IMAGE_DOS_HEADER { 00052 USHORT e_magic; 00053 USHORT e_cblp; 00054 USHORT e_cp; 00055 USHORT e_crlc; 00056 USHORT e_cparhdr; 00057 USHORT e_minalloc; 00058 USHORT e_maxalloc; 00059 USHORT e_ss; 00060 USHORT e_sp; 00061 USHORT e_csum; 00062 USHORT e_ip; 00063 USHORT e_cs; 00064 USHORT e_lfarlc; 00065 USHORT e_ovno; 00066 USHORT e_res[4]; 00067 USHORT e_oemid; 00068 USHORT e_oeminfo; 00069 USHORT e_res2[10]; 00070 LONG e_lfanew; 00071 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; 00072 #include <poppack.h> 00073 00074 // 00075 // Export/Import Format 00076 // 00077 #include <pshpack4.h> 00078 typedef struct _IMAGE_EXPORT_DIRECTORY { 00079 ULONG Characteristics; 00080 ULONG TimeDateStamp; 00081 USHORT MajorVersion; 00082 USHORT MinorVersion; 00083 ULONG Name; 00084 ULONG Base; 00085 ULONG NumberOfFunctions; 00086 ULONG NumberOfNames; 00087 ULONG AddressOfFunctions; 00088 ULONG AddressOfNames; 00089 ULONG AddressOfNameOrdinals; 00090 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; 00091 00092 // 00093 // Resource Data Entry Format 00094 // 00095 typedef struct _IMAGE_RESOURCE_DATA_ENTRY { 00096 ULONG OffsetToData; 00097 ULONG Size; 00098 ULONG CodePage; 00099 ULONG Reserved; 00100 } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; 00101 00102 // 00103 // Load Configuration Directory Entry Format 00104 // 00105 typedef struct { 00106 ULONG Size; 00107 ULONG TimeDateStamp; 00108 USHORT MajorVersion; 00109 USHORT MinorVersion; 00110 ULONG GlobalFlagsClear; 00111 ULONG GlobalFlagsSet; 00112 ULONG CriticalSectionDefaultTimeout; 00113 ULONG DeCommitFreeBlockThreshold; 00114 ULONG DeCommitTotalFreeThreshold; 00115 ULONG LockPrefixTable; 00116 ULONG MaximumAllocationSize; 00117 ULONG VirtualMemoryThreshold; 00118 ULONG ProcessHeapFlags; 00119 ULONG ProcessAffinityMask; 00120 USHORT CSDVersion; 00121 USHORT Reserved1; 00122 ULONG EditList; 00123 ULONG SecurityCookie; 00124 ULONG SEHandlerTable; 00125 ULONG SEHandlerCount; 00126 } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; 00127 00128 typedef struct { 00129 ULONG Size; 00130 ULONG TimeDateStamp; 00131 USHORT MajorVersion; 00132 USHORT MinorVersion; 00133 ULONG GlobalFlagsClear; 00134 ULONG GlobalFlagsSet; 00135 ULONG CriticalSectionDefaultTimeout; 00136 ULONGLONG DeCommitFreeBlockThreshold; 00137 ULONGLONG DeCommitTotalFreeThreshold; 00138 ULONGLONG LockPrefixTable; 00139 ULONGLONG MaximumAllocationSize; 00140 ULONGLONG VirtualMemoryThreshold; 00141 ULONGLONG ProcessAffinityMask; 00142 ULONG ProcessHeapFlags; 00143 USHORT CSDVersion; 00144 USHORT Reserved1; 00145 ULONGLONG EditList; 00146 ULONGLONG SecurityCookie; 00147 ULONGLONG SEHandlerTable; 00148 ULONGLONG SEHandlerCount; 00149 } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; 00150 00151 #ifdef _WIN64 00152 typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; 00153 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; 00154 #else 00155 typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; 00156 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; 00157 #endif 00158 00159 // 00160 // Base Relocation Format 00161 // 00162 typedef struct _IMAGE_BASE_RELOCATION { 00163 ULONG VirtualAddress; 00164 ULONG SizeOfBlock; 00165 } IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION; 00166 00167 // 00168 // Resource Format 00169 // 00170 typedef struct _IMAGE_RESOURCE_DIRECTORY { 00171 ULONG Characteristics; 00172 ULONG TimeDateStamp; 00173 USHORT MajorVersion; 00174 USHORT MinorVersion; 00175 USHORT NumberOfNamedEntries; 00176 USHORT NumberOfIdEntries; 00177 } IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; 00178 00179 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { 00180 USHORT Length; 00181 CHAR NameString[ANYSIZE_ARRAY]; 00182 } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; 00183 00184 // 00185 // Section Header Format 00186 // 00187 #define IMAGE_SIZEOF_SHORT_NAME 8 00188 #define IMAGE_SIZEOF_SECTION_HEADER 40 00189 00190 typedef struct _IMAGE_SECTION_HEADER { 00191 UCHAR Name[IMAGE_SIZEOF_SHORT_NAME]; 00192 union { 00193 ULONG PhysicalAddress; 00194 ULONG VirtualSize; 00195 } Misc; 00196 ULONG VirtualAddress; 00197 ULONG SizeOfRawData; 00198 ULONG PointerToRawData; 00199 ULONG PointerToRelocations; 00200 ULONG PointerToLinenumbers; 00201 USHORT NumberOfRelocations; 00202 USHORT NumberOfLinenumbers; 00203 ULONG Characteristics; 00204 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; 00205 00206 // 00207 // Section Characteristics 00208 // 00209 #define IMAGE_SCN_CNT_CODE 0x00000020 00210 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 00211 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 00212 00213 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 00214 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 00215 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 00216 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 00217 #define IMAGE_SCN_MEM_SHARED 0x10000000 00218 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 00219 #define IMAGE_SCN_MEM_READ 0x40000000 00220 #define IMAGE_SCN_MEM_WRITE 0x80000000 00221 00222 // 00223 // File Header Format 00224 // 00225 #define IMAGE_SIZEOF_FILE_HEADER 20 00226 00227 typedef struct _IMAGE_FILE_HEADER { 00228 USHORT Machine; 00229 USHORT NumberOfSections; 00230 ULONG TimeDateStamp; 00231 ULONG PointerToSymbolTable; 00232 ULONG NumberOfSymbols; 00233 USHORT SizeOfOptionalHeader; 00234 USHORT Characteristics; 00235 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 00236 00237 // 00238 // File Characteristics 00239 // 00240 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 00241 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 00242 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 00243 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 00244 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 00245 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 00246 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 00247 #define IMAGE_FILE_32BIT_MACHINE 0x0100 00248 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 00249 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 00250 #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 00251 #define IMAGE_FILE_SYSTEM 0x1000 00252 #define IMAGE_FILE_DLL 0x2000 00253 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 00254 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 00255 00256 // 00257 // Directory format. 00258 // 00259 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 00260 00261 typedef struct _IMAGE_DATA_DIRECTORY { 00262 ULONG VirtualAddress; 00263 ULONG Size; 00264 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 00265 00266 // 00267 // Optional Header Formats 00268 // 00269 typedef struct _IMAGE_OPTIONAL_HEADER { 00270 USHORT Magic; 00271 UCHAR MajorLinkerVersion; 00272 UCHAR MinorLinkerVersion; 00273 ULONG SizeOfCode; 00274 ULONG SizeOfInitializedData; 00275 ULONG SizeOfUninitializedData; 00276 ULONG AddressOfEntryPoint; 00277 ULONG BaseOfCode; 00278 ULONG BaseOfData; 00279 ULONG ImageBase; 00280 ULONG SectionAlignment; 00281 ULONG FileAlignment; 00282 USHORT MajorOperatingSystemVersion; 00283 USHORT MinorOperatingSystemVersion; 00284 USHORT MajorImageVersion; 00285 USHORT MinorImageVersion; 00286 USHORT MajorSubsystemVersion; 00287 USHORT MinorSubsystemVersion; 00288 ULONG Win32VersionValue; 00289 ULONG SizeOfImage; 00290 ULONG SizeOfHeaders; 00291 ULONG CheckSum; 00292 USHORT Subsystem; 00293 USHORT DllCharacteristics; 00294 ULONG SizeOfStackReserve; 00295 ULONG SizeOfStackCommit; 00296 ULONG SizeOfHeapReserve; 00297 ULONG SizeOfHeapCommit; 00298 ULONG LoaderFlags; 00299 ULONG NumberOfRvaAndSizes; 00300 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 00301 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; 00302 00303 typedef struct _IMAGE_ROM_OPTIONAL_HEADER { 00304 USHORT Magic; 00305 UCHAR MajorLinkerVersion; 00306 UCHAR MinorLinkerVersion; 00307 ULONG SizeOfCode; 00308 ULONG SizeOfInitializedData; 00309 ULONG SizeOfUninitializedData; 00310 ULONG AddressOfEntryPoint; 00311 ULONG BaseOfCode; 00312 ULONG BaseOfData; 00313 ULONG BaseOfBss; 00314 ULONG GprMask; 00315 ULONG CprMask[4]; 00316 ULONG GpValue; 00317 } IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; 00318 00319 typedef struct _IMAGE_OPTIONAL_HEADER64 { 00320 USHORT Magic; 00321 UCHAR MajorLinkerVersion; 00322 UCHAR MinorLinkerVersion; 00323 ULONG SizeOfCode; 00324 ULONG SizeOfInitializedData; 00325 ULONG SizeOfUninitializedData; 00326 ULONG AddressOfEntryPoint; 00327 ULONG BaseOfCode; 00328 ULONGLONG ImageBase; 00329 ULONG SectionAlignment; 00330 ULONG FileAlignment; 00331 USHORT MajorOperatingSystemVersion; 00332 USHORT MinorOperatingSystemVersion; 00333 USHORT MajorImageVersion; 00334 USHORT MinorImageVersion; 00335 USHORT MajorSubsystemVersion; 00336 USHORT MinorSubsystemVersion; 00337 ULONG Win32VersionValue; 00338 ULONG SizeOfImage; 00339 ULONG SizeOfHeaders; 00340 ULONG CheckSum; 00341 USHORT Subsystem; 00342 USHORT DllCharacteristics; 00343 ULONGLONG SizeOfStackReserve; 00344 ULONGLONG SizeOfStackCommit; 00345 ULONGLONG SizeOfHeapReserve; 00346 ULONGLONG SizeOfHeapCommit; 00347 ULONG LoaderFlags; 00348 ULONG NumberOfRvaAndSizes; 00349 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 00350 } IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; 00351 00352 // 00353 // Format Identifier Magics 00354 // 00355 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b 00356 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b 00357 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 00358 00359 #ifdef _WIN64 00360 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; 00361 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; 00362 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC 00363 #else 00364 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; 00365 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; 00366 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC 00367 #endif 00368 00369 // 00370 // Nt Header Formats 00371 // 00372 typedef struct _IMAGE_NT_HEADERS64 { 00373 ULONG Signature; 00374 IMAGE_FILE_HEADER FileHeader; 00375 IMAGE_OPTIONAL_HEADER64 OptionalHeader; 00376 } IMAGE_NT_HEADERS64; 00377 00378 typedef struct _IMAGE_NT_HEADERS { 00379 ULONG Signature; 00380 IMAGE_FILE_HEADER FileHeader; 00381 IMAGE_OPTIONAL_HEADER32 OptionalHeader; 00382 } IMAGE_NT_HEADERS32; 00383 00384 #ifdef _WIN64 00385 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; 00386 #else 00387 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; 00388 #endif 00389 00390 #ifndef _NTDDK_ 00391 00392 typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32; 00393 typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64; 00394 00395 #ifdef _WIN64 00396 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; 00397 #else 00398 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; 00399 #endif 00400 00401 #endif /* _NTDDK_ */ 00402 00403 // 00404 // Retreives the first image section header from the Nt Header 00405 // 00406 #define IMAGE_FIRST_SECTION( NtHeader ) \ 00407 ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)(NtHeader) + \ 00408 FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ 00409 ((NtHeader))->FileHeader.SizeOfOptionalHeader)) 00410 00411 // 00412 // Dll Characteristics 00413 // 00414 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 00415 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 00416 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 00417 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 00418 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 00419 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 00420 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 00421 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 00422 00423 // 00424 // Loader Flags 00425 // 00426 #define IMAGE_LOADER_FLAGS_COMPLUS 0x00000001 00427 #define IMAGE_LOADER_FLAGS_SYSTEM_GLOBAL 0x01000000 00428 00429 // 00430 // Directory Entry Specifiers 00431 // 00432 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 00433 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 00434 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 00435 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 00436 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 00437 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 00438 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 00439 #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 00440 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 00441 #define IMAGE_DIRECTORY_ENTRY_TLS 9 00442 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 00443 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 00444 #define IMAGE_DIRECTORY_ENTRY_IAT 12 00445 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 00446 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 00447 00448 // 00449 // Import Formats 00450 // 00451 typedef struct _IMAGE_IMPORT_BY_NAME { 00452 USHORT Hint; 00453 UCHAR Name[1]; 00454 } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; 00455 00456 #include <pshpack8.h> 00457 typedef struct _IMAGE_THUNK_DATA64 { 00458 union { 00459 ULONGLONG ForwarderString; 00460 ULONGLONG Function; 00461 ULONGLONG Ordinal; 00462 ULONGLONG AddressOfData; 00463 } u1; 00464 } IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64; 00465 #include <poppack.h> 00466 00467 typedef struct _IMAGE_THUNK_DATA32 { 00468 union { 00469 ULONG ForwarderString; 00470 ULONG Function; 00471 ULONG Ordinal; 00472 ULONG AddressOfData; 00473 } u1; 00474 } IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32; 00475 00476 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL 00477 #define IMAGE_ORDINAL_FLAG32 0x80000000 00478 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff) 00479 #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) 00480 #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0) 00481 #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0) 00482 00483 // 00484 // Thread Local Storage (TLS) 00485 // 00486 typedef 00487 VOID 00488 (NTAPI *PIMAGE_TLS_CALLBACK) ( 00489 PVOID DllHandle, 00490 ULONG Reason, 00491 PVOID Reserved); 00492 00493 typedef struct _IMAGE_TLS_DIRECTORY64 { 00494 ULONGLONG StartAddressOfRawData; 00495 ULONGLONG EndAddressOfRawData; 00496 ULONGLONG AddressOfIndex; 00497 ULONGLONG AddressOfCallBacks; 00498 ULONG SizeOfZeroFill; 00499 ULONG Characteristics; 00500 } IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64; 00501 00502 typedef struct _IMAGE_TLS_DIRECTORY32 { 00503 ULONG StartAddressOfRawData; 00504 ULONG EndAddressOfRawData; 00505 ULONG AddressOfIndex; 00506 ULONG AddressOfCallBacks; 00507 ULONG SizeOfZeroFill; 00508 ULONG Characteristics; 00509 } IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32; 00510 00511 #ifdef _WIN64 00512 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 00513 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) 00514 typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; 00515 typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; 00516 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) 00517 typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; 00518 typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; 00519 #else 00520 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 00521 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) 00522 typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; 00523 typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; 00524 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) 00525 typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; 00526 typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; 00527 #endif 00528 00529 typedef struct _IMAGE_IMPORT_DESCRIPTOR { 00530 _ANONYMOUS_UNION union { 00531 ULONG Characteristics; 00532 ULONG OriginalFirstThunk; 00533 } DUMMYUNIONNAME; 00534 ULONG TimeDateStamp; 00535 ULONG ForwarderChain; 00536 ULONG Name; 00537 ULONG FirstThunk; 00538 } IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR; 00539 00540 #include <poppack.h> 00541 00542 #endif /* _NTIMAGE_ */ Generated on Sat May 26 2012 04:28:54 for ReactOS by
1.7.6.1
|