IMAGE_OPTIONAL_HEADER32 結構 (winnt.h)
表示選擇性標頭格式。
語法
typedef struct _IMAGE_OPTIONAL_HEADER {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;
DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
DWORD SizeOfStackReserve;
DWORD SizeOfStackCommit;
DWORD SizeOfHeapReserve;
DWORD SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
成員
Magic
圖像檔的狀態。 這個成員可以是下列其中一個值。
MajorLinkerVersion
連結器的主要版本號碼。
MinorLinkerVersion
連結器的次要版本號碼。
SizeOfCode
如果有多個程式代碼區段,則程式代碼區段的大小、以位元組為單位,或所有這類區段的總和。
SizeOfInitializedData
如果有多個初始化的數據區段,則初始化數據區段的大小,以位元組為單位,或這類區段的總和。
SizeOfUninitializedData
如果有多個未初始化的數據區段,則為位元組或所有這類區段的總和。
AddressOfEntryPoint
相對於映像基地址的進入點函式指標。 對於可執行檔,這是起始位址。 對於設備驅動器,這是初始化函式的位址。 DLL 的進入點函式是選擇性的。 當沒有任何進入點存在時,這個成員為零。
BaseOfCode
相對於映像基底的程式代碼區段開頭指標。
BaseOfData
相對於影像基底的數據區段開頭指標。
ImageBase
在記憶體中載入影像時,影像第一個字節的慣用位址。 這個值是64K位元組的倍數。 DLL 的預設值為 0x10000000。 應用程式的預設值為 0x00400000,但 Windows CE 0x00010000。
SectionAlignment
記憶體中載入之區段的對齊方式,以位元組為單位。 此值必須大於或等於 FileAlignment 成員。 預設值為系統的頁面大小。
FileAlignment
圖像檔案中區段的原始數據對齊方式,以位元組為單位。 此值應該是介於 512 到 64K (內含) 之間的 2 冪。 預設值為 512。 如果 SectionAlignment 成員小於系統頁面大小,此成員必須與 SectionAlignment 相同。
MajorOperatingSystemVersion
所需作業系統的主要版本號碼。
MinorOperatingSystemVersion
所需作業系統的次要版本號碼。
MajorImageVersion
映像的主要版本號碼。
MinorImageVersion
映像的次要版本號碼。
MajorSubsystemVersion
子系統的主要版本號碼。
MinorSubsystemVersion
子系統的次要版本號碼。
Win32VersionValue
這個成員是保留的,而且必須是 0。
SizeOfImage
影像的大小,以位元組為單位,包括所有標頭。 必須是 SectionAlignment 的倍數。
SizeOfHeaders
下列項目的合併大小,四捨五入為 FileAlignment 成員中指定的值倍數。
- IMAGE_DOS_HEADER的e_lfanew成員
- 4 位元組簽章
- IMAGE_FILE_HEADER的大小
- 選擇性標頭的大小
- 所有區段標頭的大小
CheckSum
圖像檔總和檢查碼。 下列檔案會在載入時驗證:所有驅動程式、在開機時載入的任何 DLL,以及載入至重要系統進程的任何 DLL。
Subsystem
執行此映像所需的子系統。 定義下列值。
DllCharacteristics
映射的 DLL 特性。 定義下列值。
值 | 意義 |
---|---|
|
保留的。 |
|
保留的。 |
|
保留的。 |
|
保留的。 |
|
具有 64 位地址空間的 ASLR。 |
|
DLL 可以在載入時重新放置。 |
|
強制進行程式代碼完整性檢查。 如果您設定此旗標且區段只包含未初始化的數據,請將該區段的 PointerToRawData 成員設定為零 IMAGE_SECTION_HEADER ;否則,映像將無法載入,因為無法驗證數字簽名。 |
|
映像與 DEP () 的數據執行防護相容。 |
|
映射會感知隔離,但不應該隔離。 |
|
映像不會使用結構化例外狀況處理 (SEH) 。 此映像中無法呼叫任何處理程式。 |
|
請勿系結映像。 |
|
映射應在AppContainer中執行。 |
|
WDM 驅動程式。 |
|
映像支援控制流程防護。 |
|
映像是終端機伺服器感知。 |
SizeOfStackReserve
要為堆疊保留的位元元組數目。 只有在載入時才會認可 SizeOfStackCommit 成員指定的記憶體;其餘部分會一次提供一個頁面,直到達到此保留大小為止。
SizeOfStackCommit
要認可堆疊的位元元組數目。
SizeOfHeapReserve
要保留給本機堆積的位元元組數目。 只有在載入時才會認可 SizeOfHeapCommit 成員指定的記憶體;其餘部分會一次提供一個頁面,直到達到此保留大小為止。
SizeOfHeapCommit
要針對本機堆積認可的位元組數目。
LoaderFlags
這個成員已過時。
NumberOfRvaAndSizes
選擇性標頭其餘部分的目錄項目數目。 每個項目都會描述位置和大小。
DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
數據目錄中第一 個IMAGE_DATA_DIRECTORY 結構的指標。
所需目錄專案的索引編號。 此參數可以是下列其中一個值。
備註
目錄數目不是固定的。 尋找特定目錄之前,請先檢查 NumberOfRvaAndSizes 成員。
WinNT.h 中的實際結構會命名 為 IMAGE_OPTIONAL_HEADER32 , 而 IMAGE_OPTIONAL_HEADER 會定義為 IMAGE_OPTIONAL_HEADER32。 不過,如果定義 _WIN64 , 則會將IMAGE_OPTIONAL_HEADER 定義為 IMAGE_OPTIONAL_HEADER64。
typedef struct _IMAGE_OPTIONAL_HEADER64 {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
ULONGLONG ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
ULONGLONG SizeOfStackReserve;
ULONGLONG SizeOfStackCommit;
ULONGLONG SizeOfHeapReserve;
ULONGLONG SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
標頭 | winnt.h (包含 Windows.h) |