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 ファイルに挿入する必要があります。実行可能ファイルの DESCRIPTION 指令と同様に、これらの指令をユニット ソース コードに挿入してもエラーにはなりません。ただし、出力ファイルのリンク時にユニット ソースが再コンパイルされない限り、ユニット ソースに含まれているこれらの指令は出力ファイル(EXE や DLL)には影響しません。
PE ヘッダーに関連する 5 つのオプションは、IDE の [プロジェクト|オプション...|Delphi コンパイラ|リンク]ページから利用できます。
関連項目
- [プロジェクト|オプション...|Delphi コンパイラ|リンク]ページ