PE フォーマットのイメージファイルで使用される COFF ファイルヘッダの情報を定義します。
typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
マシンタイプを識別する値が格納されます。例として以下のようなものがあります。ただし、ここにあげたものは一例で、実際にはもっと多くのマシンタイプが存在します。
値 | 意味 |
---|---|
0x0000 (IMAGE_FILE_MACHINE_UNKNOWN) | 任意のマシンタイプで有効と仮定される |
0x014C (IMAGE_FILE_MACHINE_I386) | Intel 80386 以降(またはその互換)のプロセッサ |
0x014D | Intel 80486 以降(またはその互換)のプロセッサ |
0x014E | Intel Pentium 以降(またはその互換)のプロセッサ |
0x0160 | R3000 (MIPS) プロセッサ(ビッグエンディアン) |
0x0162 (IMAGE_FILE_MACHINE_R3000) | R3000 (MIPS) プロセッサ(リトルエンディアン) |
0x0166 (IMAGE_FILE_MACHINE_R4000) | R4000 (MIPS) プロセッサ(リトルエンディアン) |
0x01F0 (IMAGE_FILE_MACHINE_POWERPC) | IBM Power PC (リトルエンディアン) |
実行イメージに含まれるセクションの数が格納されます。
ファイルが作成された日時が格納されます。この値の形式を記述したドキュメントは見つけられませんが、 C/C++ コンパイラ・リンカの多くは、 time_t 形式(世界標準時での、1970年1月1日の午前0時0分0秒からの秒数)を格納するようです。
ファイル先頭からのシンボルテーブルのオフセットが格納されます。シンボルテーブルが含まれない場合は 0 になります。
シンボルテーブルに含まれるエントリの数が格納されます。
COFF ファイルヘッダに続いて配置されているオプションヘッダ(IMAGE_OPTIONAL_HEADER 構造体)のサイズが格納されます。一般的なオプションヘッダのサイズは 224 (IMAGE_SIZEOF_NT_OPTIONAL_HEADER) です。
イメージの特性を示す値が格納されます。以下のビットフラグの組み合わせによって、イメージの属性が決定されます。
値 | 意味 |
---|---|
0x0001 (IMAGE_FILE_RELOCS_STRIPPED) | イメージが再配置情報を持たないことを示します。 |
0x0002 (IMAGE_FILE_EXECUTABLE_IMAGE) | 実行可能イメージであることを示します。 |
0x0004 (IMAGE_FILE_LINE_NUMS_STRIPPED) | シンボル行番号が削除されていることを示します。 |
0x0008 (IMAGE_FILE_LOCAL_SYMS_STRIPPED) | ローカルシンボルのためのCOFFシンボルが削除されていることを示します。 |
0x0010 (IMAGE_FILE_AGGRESSIVE_WS_TRIM) | |
0x0020 (IMAGE_FILE_LARGE_ADDRESS_AWARE) | 2GB より大きいアドレスを扱うことができるアプリケーションであることを示します。 |
0x0040 (IMAGE_FILE_16BIT_MACHINE) | このフラグは予約されています。 |
0x0080 (IMAGE_FILE_BYTES_REVERSED_LO) | 数値がリトルエンディアンで表現されていることを表します。 |
0x0100 (IMAGE_FILE_32BIT_MACHINE) | 32ビットのマシンで実行されます。 |
0x0200 (IMAGE_FILE_DEBUG_STRIPPED) | デバッグ情報が削除されていることを示します。 |
0x0400 (IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP) | イメージがリムーバブルメディア上にある場合には、イメージをスワップファイルにコピーしてそこから実行します。 |
0x0800 (IMAGE_FILE_NET_RUN_FROM_SWAP) | イメージがネットワーク上にある場合には、イメージをスワップファイルにコピーしてそこから実行します。 |
0x1000 (IMAGE_FILE_SYSTEM) | イメージファイルがシステムファイルであることを示します。 |
0x2000 (IMAGE_FILE_DLL) | イメージファイルが DLL であることを示します。 |
0x4000 (IMAGE_FILE_UP_SYSTEM_ONLY) | イメージファイルがマルチプロセッサマシンで実行されるように設計されていないことを示します。 |
0x8000 (IMAGE_FILE_BYTES_REVERSED_HI) | 数値がビッグエンディアンで表現されていることを表します。 |
Windows 95 以降 / Windows NT 3.1 以降
HSP 変数 | メンバ | |||
---|---|---|---|---|
メンバ名 | オフセット | サイズ | ||
flhdr.0 | 下位ワード | Machine | 0 | 2 |
上位ワード | NumberOfSections | 2 | 2 | |
flhdr.1 | TimeDateStamp | 4 | 4 | |
flhdr.2 | PointerToSymbolTable | 8 | 4 | |
flhdr.3 | NumberOfSymbols | 12 | 4 | |
flhdr.4 | 下位ワード | SizeOfOptionalHeader | 16 | 2 |
上位ワード | Characteristics | 18 | 2 |