IMAGE_OPTIONAL_HEADER32-Struktur (winnt.h)
Stellt das optionale Headerformat dar.
Syntax
typedef struct _IMAGE_OPTIONAL_HEADER {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;
DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
DWORD SizeOfStackReserve;
DWORD SizeOfStackCommit;
DWORD SizeOfHeapReserve;
DWORD SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
Member
Magic
Der Status der Imagedatei. Dieser Member kann einer der folgenden Werte sein.
MajorLinkerVersion
Die Hauptversionsnummer des Linkers.
MinorLinkerVersion
Die Nebenversionsnummer des Linkers.
SizeOfCode
Die Größe des Codeabschnitts in Bytes oder die Summe aller abschnitte, wenn mehrere Codeabschnitte vorhanden sind.
SizeOfInitializedData
Die Größe des initialisierten Datenabschnitts in Bytes oder die Summe aller dieser Abschnitte, wenn mehrere initialisierte Datenabschnitte vorhanden sind.
SizeOfUninitializedData
Die Größe des nicht initialisierten Datenabschnitts in Bytes oder die Summe aller abschnitte, wenn mehrere nicht initialisierte Datenabschnitte vorhanden sind.
AddressOfEntryPoint
Ein Zeiger auf die Einstiegspunktfunktion relativ zur Bildbasisadresse. Bei ausführbaren Dateien ist dies die Startadresse. Bei Gerätetreibern ist dies die Adresse der Initialisierungsfunktion. Die Einstiegspunktfunktion ist für DLLs optional. Wenn kein Einstiegspunkt vorhanden ist, ist dieser Member 0.
BaseOfCode
Ein Zeiger auf den Anfang des Codeabschnitts relativ zur Bildbasis.
BaseOfData
Ein Zeiger auf den Anfang des Datenabschnitts relativ zur Bildbasis.
ImageBase
Die bevorzugte Adresse des ersten Byte des Images, wenn es in den Arbeitsspeicher geladen wird. Dieser Wert ist ein Vielfaches von 64.000 Bytes. Der Standardwert für DLLs ist 0x10000000. Der Standardwert für Anwendungen ist 0x00400000, mit Ausnahme von Windows CE, in denen er 0x00010000 ist.
SectionAlignment
Die Ausrichtung von Abschnitten, die in den Arbeitsspeicher geladen werden, in Bytes. Dieser Wert muss größer oder gleich dem FileAlignment-Member sein. Der Standardwert ist die Seitengröße für das System.
FileAlignment
Die Ausrichtung der Rohdaten von Abschnitten in der Bilddatei in Bytes. Der Wert sollte eine Leistung von 2 zwischen 512 und 64 K (einschließlich) aufweisen. Der Standardwert liegt bei 512. Wenn der SectionAlignment-Member kleiner als die Systemseitengröße ist, muss dieser Member mit SectionAlignment identisch sein.
MajorOperatingSystemVersion
Die Hauptversionsnummer des erforderlichen Betriebssystems.
MinorOperatingSystemVersion
Die Nebenversionsnummer des erforderlichen Betriebssystems.
MajorImageVersion
Die Hauptversionsnummer des Images.
MinorImageVersion
Die Nebenversionsnummer des Images.
MajorSubsystemVersion
Die Hauptversionsnummer des Subsystems.
MinorSubsystemVersion
Die Nebenversionsnummer des Subsystems.
Win32VersionValue
Dieser Member ist reserviert und muss 0 sein.
SizeOfImage
Die Größe des Bilds in Bytes, einschließlich aller Header. Muss ein Vielfaches von SectionAlignment sein.
SizeOfHeaders
Die kombinierte Größe der folgenden Elemente, gerundet auf ein Vielfaches des im FileAlignment-Member angegebenen Werts .
- e_lfanew Mitglied der IMAGE_DOS_HEADER
- 4-Byte-Signatur
- Größe der IMAGE_FILE_HEADER
- Größe des optionalen Headers
- Größe aller Abschnittsheader
CheckSum
Die Prüfsumme der Imagedatei. Die folgenden Dateien werden zur Ladezeit überprüft: alle Treiber, jede DLL, die zur Startzeit geladen wurde, und jede DLL, die in einen kritischen Systemprozess geladen wurde.
Subsystem
Das Subsystem, das zum Ausführen dieses Images erforderlich ist. Die folgenden Werte werden definiert.
DllCharacteristics
Die DLL-Merkmale des Bilds. Die folgenden Werte werden definiert.
Wert | Bedeutung |
---|---|
|
Reserviert. |
|
Reserviert. |
|
Reserviert. |
|
Reserviert. |
|
ASLR mit 64-Bit-Adressraum. |
|
Die DLL kann zur Ladezeit verschoben werden. |
|
Codeintegritätsprüfungen werden erzwungen. Wenn Sie dieses Flag festlegen und ein Abschnitt nur nicht initialisierte Daten enthält, legen Sie den PointerToRawData-Member von IMAGE_SECTION_HEADER für diesen Abschnitt auf Null fest. Andernfalls kann das Image nicht geladen werden, da die digitale Signatur nicht überprüft werden kann. |
|
Das Image ist mit der Datenausführungsprävention (Data Execution Prevention, DEP) kompatibel. |
|
Das Image ist isolationsbewusst, sollte aber nicht isoliert werden. |
|
Das Bild verwendet keine strukturierte Ausnahmebehandlung (STRUCTURED EXCEPTION HANDLING, SEH). In diesem Image können keine Handler aufgerufen werden. |
|
Binden Sie das Image nicht. |
|
Das Image sollte in einem AppContainer ausgeführt werden. |
|
Ein WDM-Treiber. |
|
Das Image unterstützt den Ablaufsteuerungsschutz (Control Flow Guard, CFG). |
|
Das Image ist terminalserverfähig. |
SizeOfStackReserve
Die Anzahl der Bytes, die für den Stapel reserviert werden sollen. Nur der vom SizeOfStackCommit-Member angegebene Arbeitsspeicher wird zur Ladezeit committet. der Rest wird eine Seite nach dem anderen zur Verfügung gestellt, bis diese Reservegröße erreicht ist.
SizeOfStackCommit
Die Anzahl der Bytes, die für den Stapel committ werden sollen.
SizeOfHeapReserve
Die Anzahl der Bytes, die für den lokalen Heap reserviert werden sollen. Nur der vom SizeOfHeapCommit-Member angegebene Arbeitsspeicher wird zur Ladezeit committet. der Rest wird eine Seite nach dem anderen zur Verfügung gestellt, bis diese Reservegröße erreicht ist.
SizeOfHeapCommit
Die Anzahl der Bytes, die für den lokalen Heap committ werden sollen.
LoaderFlags
Dieser Member ist veraltet.
NumberOfRvaAndSizes
Die Anzahl der Verzeichniseinträge im rest des optionalen Headers. Jeder Eintrag beschreibt einen Standort und eine Größe.
DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Ein Zeiger auf die erste IMAGE_DATA_DIRECTORY Struktur im Datenverzeichnis.
Die Indexnummer des gewünschten Verzeichniseintrags. Dieser Parameter kann einen der folgenden Werte annehmen.
Hinweise
Die Anzahl der Verzeichnisse ist nicht festgelegt. Überprüfen Sie das NumberOfRvaAndSizes-Element , bevor Sie nach einem bestimmten Verzeichnis suchen.
Die tatsächliche Struktur in WinNT.h heißt IMAGE_OPTIONAL_HEADER32 und IMAGE_OPTIONAL_HEADER wird als IMAGE_OPTIONAL_HEADER32 definiert. Wenn jedoch _WIN64 definiert ist, wird IMAGE_OPTIONAL_HEADER als IMAGE_OPTIONAL_HEADER64 definiert.
typedef struct _IMAGE_OPTIONAL_HEADER64 {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
ULONGLONG ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
ULONGLONG SizeOfStackReserve;
ULONGLONG SizeOfStackCommit;
ULONGLONG SizeOfHeapReserve;
ULONGLONG SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | winnt.h (Einschließen von Windows.h) |