PE (Portable Executable) Header-Flags (Delphi)
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.
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.