PE(portable executable)ヘッダー フラグ(Delphi)

提供: RAD Studio
移動先: 案内検索

Delphi コンパイラ指令のリスト:インデックス への移動


種類

フラグ

構文

{$SetPEFlags <整数式>} {$SetPEOptFlags <整数式>}

スコープ

ローカル


Microsoft の仕様では、PE(ポータブル実行可能ファイル)ヘッダー フラグに基づいて、アプリケーションで OS サービスと互換性があることを示したり OS の拡張サービスを要求できるようになっています。これらの指令では、アプリケーションをハイエンドの NT システムで調整するための強力なオプションが用意されています。

警告: これらの指令で指定されたビット値のチェックやマスクを行ってもエラーにはなりません。反面、設定したビット値の組み合わせが間違っている場合は、実行可能ファイルが破損するおそれがあります。

これらの指令では、PE ファイル ヘッダーの Characteristics フィールドと PE ファイル オプション ヘッダーの DLLCharacteristics フィールドにそれぞれフラグ ビットを設定できます。$SetPEFlags を使って設定される Characteristics フラグのほとんどは、特にオブジェクト ファイルやライブラリ向けに用意されています。$SetPEOptFlags を使って設定される DLLCharacteristics は、DLL のエントリ ポイントをいつ呼び出すかを記述するフラグです。

これらの指令の <整数式> には Delphi 定数識別子(Windows.pas で定義された IMAGE_FILE_xxxx の各定数など)を指定できます。複数の定数を OR を使用して同時に指定できます。

SetPEFlagsSetPEOptFlags を使って設定できるヘッダー フラグの一部を次の表に示します。

名前 説明

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 コンパイラ|リンクページから利用できます。

関連項目