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

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

意味
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

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

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_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
このイメージはバインドしないでください。
0x1000
予約済み。
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
WDM ドライバー。
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 構造体へのポインター。

注釈

ディレクトリの数は固定されていません。 特定のディレクトリを探す前に、 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 構造体