PE(portable executable)ヘッダー フラグ(Delphi)
Delphi コンパイラ指令のリスト:インデックス への移動
種類 |
フラグ |
構文 |
{$SetPEFlags <整数式>} {$SetPEOptFlags <整数式>} |
スコープ |
ローカル |
Microsoft の仕様では、PE(ポータブル実行可能ファイル)ヘッダー フラグに基づいて、アプリケーションで OS サービスと互換性があることを示したり OS の拡張サービスを要求できるようになっています。これらの指令では、アプリケーションをハイエンドの NT システムで調整するための強力なオプションが用意されています。
これらの指令では、PE ファイル ヘッダーの Characteristics フィールドと PE ファイル オプション ヘッダーの DLLCharacteristics フィールドにそれぞれフラグ ビットを設定できます。$SetPEFlags を使って設定される Characteristics フラグのほとんどは、特にオブジェクト ファイルやライブラリ向けに用意されています。$SetPEOptFlags を使って設定される DLLCharacteristics は、DLL のエントリ ポイントをいつ呼び出すかを記述するフラグです。
これらの指令の <整数式> には Delphi 定数識別子(Windows.pas で定義された IMAGE_FILE_xxxx の各定数など)を指定できます。複数の定数を OR を使用して同時に指定できます。
SetPEFlags や SetPEOptFlags を使って設定できるヘッダー フラグの一部を次の表に示します。
名前 | 説明 |
---|---|
IMAGE_FILE_RELOCS_STRIPPED |
ファイルから再配置情報が削除されます。 |
IMAGE_FILE_EXECUTABLE_IMAGE |
ファイルは実行可能です(つまり、未解決の外部参照がありません)。 |
IMAGE_FILE_LINE_NUMS_STRIPPED |
ファイルから行番号が削除されます。 |
IMAGE_FILE_LOCAL_SYMS_STRIPPED |
ファイルからローカル シンボルが削除されます。 |
IMAGE_FILE_AGGRESIVE_WS_TRIM |
作業セットを積極的に削除します。 |
IMAGE_FILE_LARGE_ADDRESS_AWARE |
2 GB を超えるアドレスをアプリケーションで処理できます。 |
IMAGE_FILE_BYTES_REVERSED_LO |
マシン ワードのバイトが反転されます。 |
IMAGE_FILE_32BIT_MACHINE |
32 ビット ワード マシンです。 |
IMAGE_FILE_DEBUG_STRIPPED |
.DBG ファイル内のファイルからデバッグ情報が削除されます。 |
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP |
イメージがリムーバブル メディア上にある場合、それをスワップ ファイルにコピーし、そこから実行します。 |
IMAGE_FILE_NET_RUN_FROM_SWAP |
イメージがネットワーク上にある場合、それをスワップ ファイルにコピーし、そこから実行します。 |
IMAGE_FILE_SYSTEM |
システム ファイルです。 |
IMAGE_FILE_DLL |
ファイルは DLL です。 |
IMAGE_FILE_UP_SYSTEM_ONLY |
ファイルは UP(単一プロセッサ)マシンでのみ実行しなければなりません。 |
IMAGE_FILE_BYTES_REVERSED_HI |
マシン ワードのバイトが反転されます。 |
IMAGE_FILE_MACHINE_UNKNOWN |
マシンが不明です。 |
IMAGE_FILE_MACHINE_I386 |
Intel 386 です。 |
IMAGE_FILE_MACHINE_R3000 |
MIPS リトルエンディアン、0x160 ビッグエンディアンです。 |
IMAGE_FILE_MACHINE_R4000 |
MIPS リトルエンディアンです。 |
IMAGE_FILE_MACHINE_R10000 |
MIPS リトルエンディアンです。 |
IMAGE_FILE_MACHINE_ALPHA |
Alpha_AXP です。 |
IMAGE_FILE_MACHINE_POWERPC |
IBM PowerPC リトルエンディアンです。 |
これらの指令は、ソース コードで何回でも使用できます。複数の指令で指定されたフラグ値は、厳密に累積的に処理されます。つまり、最初の指令で $03 を設定し、2 番目で $10 を設定した場合は、リンク時に実行可能ファイルに書き込まれる値は $13 です(さらにリンカによって PE フラグの各フィールドに通常設定されるビット値が追加される)。
これらの指令は、ソース コードにおいてリンクの前に記載されている場合にのみ、出力ファイルに効果があります。これはつまり、これらの指令を、通常のユニット内ではなく、.dpr または .dpk ファイル内で指定しなければならないことを意味します。exe 記述指令のように、ユニットのソース コード内にこれらの指令を配置すると、エラーが発生します。ただし、ユニと ソース コード内のこれらの指令は、出力ファイルがリンク付けされる時点で、このユニット ソースが再コンパイルされない限り、出力ファイル(exe や dll)に影響はありません。
PE ヘッダーに関連する 5 つのオプションは、IDE の [プロジェクト|オプション...|Delphi コンパイラ|リンク]ページから利用できます。