PE (Portable Executable) Header-Flags (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Liste der Delphi-Compiler-Direktiven - Index


Typ

Flag

Syntax

{$SetPEFlags <Integer-Ausdruck>} {$SetPEOptFlags <Integer-Ausdruck>}

Bereich

Lokal


Microsoft verwendet PE (Portable Executable) Header-Flags, um einer Anwendung zu ermöglichen, die Kompatibilität mit BS-Services anzuzeigen oder erweiterte BS-Services anzufordern. Diese Direktiven bieten leistungsstarke Optionen für die Feinabstimmung Ihrer Anwendungen auf High-End-NT-Systemen.


Warnung:  Das Überprüfen oder Maskieren von Bit-Werten, die von diesen Direktiven festgelegt werden, ist kein Fehler. Wenn Sie aber eine falsche Bit-Kombination setzen, können Sie Ihre ausführbare Datei beschädigen.

Diese Direktiven ermöglichen das Setzen von Flag-Bits im Characteristics-Feld des PE-Datei-Headers bzw. im DLLCharacteristics-Feld des optionalen PE-Datei-Headers. Die meisten mit $SetPEFlags gesetzten Characteristics-Flags sind für Objektdateien und Bibliotheken spezifisch. Mit $SetPEOptFlags gesetzte DLLCharacteristics sind Flags, die beschreiben, wann ein DLL-Eintrittspunkt aufgerufen werden muss.

Der <Integer-Ausdruck> in diesen Direktiven kann Delphi-Konstantenbezeichner enthalten, wie z.B. die in Windows.pas definierten IMAGE_FILE_xxxx-Konstanten. Mehrere Konstanten sollten mit OR aneinandergereiht werden.

Die folgende Tabelle enthält einige Header-Flags, die Sie mit SetPEFlags oder SetPEOptFlags setzen können.

Name Beschreibung

IMAGE_FILE_RELOCS_STRIPPED

Verschiebungsinformationen werden aus der Datei entfernt.

IMAGE_FILE_EXECUTABLE_IMAGE

Die Datei ist eine ausführbare Datei (d.h. keine unaufgelösten externen Referenzen).

IMAGE_FILE_LINE_NUMS_STRIPPED

Zeilennummern werden aus der Datei entfernt.

IMAGE_FILE_LOCAL_SYMS_STRIPPED

Lokale Symbole werden aus der Datei entfernt.

IMAGE_FILE_AGGRESIVE_WS_TRIM

Aggressive Anpassung der Arbeitsumgebung.

IMAGE_FILE_LARGE_ADDRESS_AWARE

Die Anwendung kann Adressen verarbeiten, die größer als 2 GB sind.

IMAGE_FILE_BYTES_REVERSED_LO

Die Bytes des Maschinenworts sind reserviert.

IMAGE_FILE_32BIT_MACHINE

32-Bit-Wort-Maschine.

IMAGE_FILE_DEBUG_STRIPPED

Debug-Infos werden aus der Datei entfernt und in die .DBG-Datei aufgenommen.

IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP

Wenn sich das Image auf einem entfernbaren Datenträger befindet, in die Auslagerungsdatei kopieren und von dort ausführen.

IMAGE_FILE_NET_RUN_FROM_SWAP

Wenn sich das Image im Netz befindet, in die Auslagerungsdatei kopieren und von dort ausführen.

IMAGE_FILE_SYSTEM

Systemdatei.

IMAGE_FILE_DLL

Die Datei ist eine DLL.

IMAGE_FILE_UP_SYSTEM_ONLY

Die Datei sollte nur auf einer UP-Maschine ausgeführt werden.

IMAGE_FILE_BYTES_REVERSED_HI

Die Bytes des Maschinenworts sind reserviert.

IMAGE_FILE_MACHINE_UNKNOWN

Unbekannter Maschine.

IMAGE_FILE_MACHINE_I386

Intel 386.

IMAGE_FILE_MACHINE_R3000

MIPS Little-Endian, 0x160 big-endian.

IMAGE_FILE_MACHINE_R4000

MIPS Little-Endian.

IMAGE_FILE_MACHINE_R10000

MIPS Little-Endian.

IMAGE_FILE_MACHINE_ALPHA

Alpha_AXP.

IMAGE_FILE_MACHINE_POWERPC

IBM PowerPC Little-Endian.


Sie können diese Direktiven mehrmals in den Quelltext aufnehmen. Die von mehreren Direktiven festgelegten Flag-Werte sind streng kumulativ. Wenn das erste Vorkommen der Direktive $03 und das zweite $10 setzt, beträgt der beim Linken in die ausführbare Datei geschriebene Wert $13 (plus der Bits, die der Linker normalerweise in den PE-Flag-Feldern setzt).


Diese Direktiven wirken sich nur auf die Ausgabedatei aus, wenn sie vor dem Linken in den Quellcode aufgenommen wurden. Das bedeutet, dass Sie diese Direktiven in eine .dpr- oder .dpk-Datei einfügen sollten und nicht in eine reguläre Unit. Wie bei der EXE-Beschreibungs-Direktive ist es kein Fehler diese Direktiven in einen Unit-Quelltext zu platzieren, aber dann haben sie nur Auswirkungen auf die Ausgabedatei (exe oder dll), wenn der Unit-Quellcode beim Linken der Ausgabedatei neu compiliert wird.


In der IDE stehen auf der Seite Projekt > Optionen > Delphi-Compiler > Linken fünf PE-Header-bezogene Optionen zur Verfügung.


Siehe auch