次の方法で共有


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

イメージ ファイルの状態。 このメンバーには、次のいずれかの値を指定できます。

意味
IMAGE_NT_OPTIONAL_HDR_MAGIC
ファイルは実行可能イメージです。 この値は、32 ビット アプリケーションでは IMAGE_NT_OPTIONAL_HDR32_MAGIC として定義され、64 ビット アプリケーション ではIMAGE_NT_OPTIONAL_HDR64_MAGIC として定義されます。
IMAGE_NT_OPTIONAL_HDR32_MAGIC
0x10b
ファイルは実行可能イメージです。
IMAGE_NT_OPTIONAL_HDR64_MAGIC
0x20b
ファイルは実行可能イメージです。
IMAGE_ROM_OPTIONAL_HDR_MAGIC
0x107
ファイルは ROM イメージです。

MajorLinkerVersion

リンカーのメジャー バージョン番号。

MinorLinkerVersion

リンカーのマイナー バージョン番号。

SizeOfCode

コード セクションのサイズ (バイト単位)、または複数のコード セクションがある場合は、そのようなすべてのセクションの合計。

SizeOfInitializedData

初期化されたデータ セクションのサイズ (バイト単位)、または初期化されたデータ セクションが複数ある場合は、そのようなすべてのセクションの合計。

SizeOfUninitializedData

初期化されていないデータ セクションのサイズ (バイト単位)、または初期化されていないデータ セクションが複数ある場合は、そのようなすべてのセクションの合計。

AddressOfEntryPoint

イメージのベース アドレスを基準としたエントリ ポイント関数へのポインター。 実行可能ファイルの場合、これは開始アドレスです。 デバイス ドライバーの場合、これは初期化関数のアドレスです。 DLL のエントリ ポイント関数は省略可能です。 エントリ ポイントが存在しない場合、このメンバーは 0 になります。

BaseOfCode

イメージ ベースを基準とした、コード セクションの先頭へのポインター。

BaseOfData

イメージ ベースを基準としたデータ セクションの先頭へのポインター。

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

このイメージを実行するために必要なサブシステム。 次の値が定義されています。

意味
IMAGE_SUBSYSTEM_UNKNOWN
0
不明なサブシステム。
IMAGE_SUBSYSTEM_NATIVE
1
サブシステムは必要ありません (デバイス ドライバーとネイティブ システム プロセス)。
IMAGE_SUBSYSTEM_WINDOWS_GUI
2
Windows グラフィカル ユーザー インターフェイス (GUI) サブシステム。
IMAGE_SUBSYSTEM_WINDOWS_CUI
3
Windows 文字モード ユーザー インターフェイス (CUI) サブシステム。
IMAGE_SUBSYSTEM_OS2_CUI
5
OS/2 CUI サブシステム。
IMAGE_SUBSYSTEM_POSIX_CUI
7
POSIX CUI サブシステム。
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
9
Windows CEシステム。
IMAGE_SUBSYSTEM_EFI_APPLICATION
10
拡張ファームウェア インターフェイス (EFI) アプリケーション。
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
11
ブート サービスを備えた EFI ドライバー。
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
12
ランタイム サービスを備えた EFI ドライバー。
IMAGE_SUBSYSTEM_EFI_ROM
13
EFI ROM イメージ。
IMAGE_SUBSYSTEM_XBOX
14
Xbox システム。
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
16
このブート アプリケーション。

DllCharacteristics

イメージの DLL 特性。 次の値が定義されています。

意味
0x0001
予約済み。
0x0002
予約済み。
0x0004
予約済み。
0x0008
予約済み。
IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
0x0020
64 ビット・アドレス・スペースを持つ ASLR。
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
DLL は読み込み時に再配置できます。
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
0x0080
コードの整合性チェックが強制されます。 このフラグを設定し、セクションに初期化されていないデータのみが含まれている場合は、そのセクションの IMAGE_SECTION_HEADERPointerToRawData メンバーを 0 に設定します。それ以外の場合、デジタル署名を検証できないため、イメージの読み込みに失敗します。
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
イメージは、データ実行防止 (DEP) と互換性があります。
IMAGE_DLLCHARACTERISTICS_NO_ISOLATION
0x0200
イメージは分離に対応していますが、分離しないでください。
IMAGE_DLLCHARACTERISTICS_NO_SEH
0x0400
このイメージでは、構造化例外処理 (SEH) は使用されません。 このイメージではハンドラーを呼び出できません。
IMAGE_DLLCHARACTERISTICS_NO_BIND
0x0800
このイメージはバインドしないでください。
IMAGE_DLL_CHARACTERISTICS_APPCONTAINER
0x1000
イメージは AppContainer で実行する必要があります。
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
WDM ドライバー。
IMAGE_DLL_CHARACTERISTICS_GUARD_CF
0x4000
イメージでは、制御フロー ガードがサポートされています。
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
イメージはターミナル サーバーに対応しています。

SizeOfStackReserve

スタックに予約するバイト数。 SizeOfStackCommit メンバーによって指定されたメモリのみが読み込み時にコミットされます。残りは、この予約サイズに達するまで、一度に 1 ページずつ使用可能になります。

SizeOfStackCommit

スタックのコミットするバイト数。

SizeOfHeapReserve

ローカル ヒープ用に予約するバイト数。 SizeOfHeapCommit メンバーによって指定されたメモリのみが読み込み時にコミットされます。残りは、この予約サイズに達するまで、一度に 1 ページずつ使用可能になります。

SizeOfHeapCommit

ローカル ヒープのコミットするバイト数。

LoaderFlags

このメンバーは使用されなくなりました。

NumberOfRvaAndSizes

省略可能なヘッダーの残りのディレクトリ エントリの数。 各エントリには、場所とサイズが記述されています。

DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]

データ ディレクトリ内の最初の IMAGE_DATA_DIRECTORY 構造体へのポインター。

目的のディレクトリ エントリのインデックス番号。 このパラメーターには、次の値のいずれかを指定できます。

意味
IMAGE_DIRECTORY_ENTRY_ARCHITECTURE
7
アーキテクチャ固有のデータ
IMAGE_DIRECTORY_ENTRY_BASERELOC
5
ベース再配置テーブル
IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
11
バインドされたインポート ディレクトリ
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR
14
COM 記述子テーブル
IMAGE_DIRECTORY_ENTRY_DEBUG
6
ディレクトリのデバッグ
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT
13
遅延インポート テーブル
IMAGE_DIRECTORY_ENTRY_EXCEPTION
3
例外ディレクトリ
IMAGE_DIRECTORY_ENTRY_EXPORT
0
ディレクトリのエクスポート
IMAGE_DIRECTORY_ENTRY_GLOBALPTR
8
グローバル ポインターの相対仮想アドレス
IMAGE_DIRECTORY_ENTRY_IAT
12
アドレス テーブルのインポート
IMAGE_DIRECTORY_ENTRY_IMPORT
1
インポート ディレクトリ
IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG
10
構成ディレクトリを読み込む
IMAGE_DIRECTORY_ENTRY_RESOURCE
2
リソース ディレクトリ
IMAGE_DIRECTORY_ENTRY_SECURITY
4
セキュリティ ディレクトリ
IMAGE_DIRECTORY_ENTRY_TLS
9
スレッド ローカル ストレージ ディレクトリ

注釈

ディレクトリの数は固定されていません。 特定のディレクトリを探す前に、 NumberOfRvaAndSizes メンバーを確認してください。

WinNT.h の実際の構造体は IMAGE_OPTIONAL_HEADER32 という名前で、 IMAGE_OPTIONAL_HEADERIMAGE_OPTIONAL_HEADER32 として定義されます。 ただし、 _WIN64 が定義されている場合、 IMAGE_OPTIONAL_HEADERIMAGE_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 を含む)

こちらもご覧ください

IMAGE_DATA_DIRECTORY

ImageHlp 構造体