IMAGE_OPTIONAL_HEADER64 構造体 (winnt.h)
省略可能なヘッダー形式を表します。
構文
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;
メンバー
Magic
イメージ ファイルの状態。 このメンバーには、次のいずれかの値を指定できます。
MajorLinkerVersion
リンカーのメジャー バージョン番号。
MinorLinkerVersion
リンカーのマイナー バージョン番号。
SizeOfCode
コード セクションのサイズ (バイト単位)、または複数のコード セクションがある場合は、そのようなすべてのセクションの合計。
SizeOfInitializedData
初期化されたデータ セクションのサイズ (バイト単位)、または初期化されたデータ セクションが複数ある場合は、そのようなすべてのセクションの合計。
SizeOfUninitializedData
初期化されていないデータ セクションのサイズ (バイト単位)、または初期化されていないデータ セクションが複数ある場合は、そのようなすべてのセクションの合計。
AddressOfEntryPoint
画像のベース アドレスを基準としたエントリ ポイント関数へのポインター。 実行可能ファイルの場合、これは開始アドレスです。 デバイス ドライバーの場合、これは初期化関数のアドレスです。 DLL のエントリ ポイント関数は省略可能です。 エントリ ポイントが存在しない場合、このメンバーは 0 になります。
BaseOfCode
イメージ ベースを基準としたコード セクションの先頭へのポインター。
ImageBase
メモリに読み込まれるときのイメージの最初のバイトの優先アドレス。 この値は 64K バイトの倍数です。 DLL の既定値は0x10000000です。 0x00010000されているWindows CEを除き、アプリケーションの既定値は0x00400000です。
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 特性。 次の値が定義されています。
値 | 意味 |
---|---|
|
予約済み。 |
|
予約済み。 |
|
予約済み。 |
|
予約済み。 |
|
DLL は読み込み時に再配置できます。 |
|
コードの整合性チェックが強制されます。 このフラグを設定し、セクションに初期化されていないデータのみが含まれている場合は、そのセクションの IMAGE_SECTION_HEADER の PointerToRawData メンバーを 0 に設定します。そうしないと、デジタル署名を検証できないため、イメージの読み込みに失敗します。 |
|
イメージは、データ実行防止 (DEP) と互換性があります。 |
|
イメージは分離に対応していますが、分離しないでください。 |
|
イメージでは、構造化例外処理 (SEH) は使用されません。 このイメージではハンドラーを呼び出できません。 |
|
このイメージはバインドしないでください。 |
|
予約済み。 |
|
WDM ドライバー。 |
|
予約済み。 |
|
イメージはターミナル サーバー対応です。 |
SizeOfStackReserve
スタック用に予約するバイト数。 SizeOfStackCommit メンバーによって指定されたメモリのみが読み込み時にコミットされます。残りは、この予約サイズに達するまで一度に 1 ページずつ使用できます。
SizeOfStackCommit
スタックのコミットするバイト数。
SizeOfHeapReserve
ローカル ヒープ用に予約するバイト数。 SizeOfHeapCommit メンバーによって指定されたメモリのみが読み込み時にコミットされます。残りは、この予約サイズに達するまで一度に 1 ページずつ使用できます。
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 (デスクトップ アプリのみ) |
Header | winnt.h (Windows.h を含む) |