windows-nt/Source/XPSP1/NT/base/boot/inc/ximagdef.h
2020-09-26 16:20:57 +08:00

88 lines
2.4 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
ximagdef.h
Abstract:
This file contains image definitions and for both 32-bit and 64-bit
images.
Author:
Forrest C. Foltz (forrestf) 23-May-2000
Revision History:
--*/
#if defined(_X86AMD64_)
#undef IMAGE_ORDINAL_FLAG
#undef IMAGE_ORDINAL
#undef IMAGE_THUNK_DATA
#undef PIMAGE_THUNK_DATA
#undef IMAGE_SNAP_BY_ORDINAL
#undef IMAGE_TLS_DIRECTORY
#undef PIMAGE_TLS_DIRECTORY
#undef IMAGE_NT_HEADERS
#undef PIMAGE_NT_HEADERS
#if IMAGE_DEFINITIONS == 32
#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32
#define IMAGE_ORDINAL(x) IMAGE_ORDINAL32(x)
#define IMAGE_THUNK_DATA IMAGE_THUNK_DATA32
#define PIMAGE_THUNK_DATA PIMAGE_THUNK_DATA32
#define IMAGE_SNAP_BY_ORDINAL(x) IMAGE_SNAP_BY_ORDINAL32(x)
#define IMAGE_TLS_DIRECTORY IMAGE_TLS_DIRECTORY32
#define PIMAGE_TLS_DIRECTORY PIMAGE_TLS_DIRECTORY32
#define IMAGE_NT_HEADERS IMAGE_NT_HEADERS32
#define PIMAGE_NT_HEADERS PIMAGE_NT_HEADERS32
#elif IMAGE_DEFINITIONS == 64
#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64
#define IMAGE_ORDINAL(x) IMAGE_ORDINAL64(x)
#define IMAGE_THUNK_DATA IMAGE_THUNK_DATA64
#define PIMAGE_THUNK_DATA PIMAGE_THUNK_DATA64
#define IMAGE_SNAP_BY_ORDINAL(x) IMAGE_SNAP_BY_ORDINAL64(x)
#define IMAGE_TLS_DIRECTORY IMAGE_TLS_DIRECTORY64
#define PIMAGE_TLS_DIRECTORY PIMAGE_TLS_DIRECTORY64
#define IMAGE_NT_HEADERS IMAGE_NT_HEADERS64
#define PIMAGE_NT_HEADERS PIMAGE_NT_HEADERS64
#endif
#define IMAGE_NT_HEADER(x) ((PIMAGE_NT_HEADERS)RtlImageNtHeader(x))
#ifndef _XIMAGDEF_H_
#define _XIMAGDEF_H_
//
// Macros used to determine whether an image is 32-bit or 64-bit, and an
// assert to make sure the Magic field has the same offset in both.
//
#define IMAGE_64BIT( ntheader ) \
(((PIMAGE_NT_HEADERS32)(ntheader))->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
#define IMAGE_32BIT( ntheader ) \
(((PIMAGE_NT_HEADERS32)(ntheader))->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
C_ASSERT( FIELD_OFFSET(IMAGE_NT_HEADERS32, OptionalHeader.Magic) ==
FIELD_OFFSET(IMAGE_NT_HEADERS64, OptionalHeader.Magic) );
#endif // _XIMAGDEF_H_
#endif // _X86AMD64_