ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntimage.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.