IMAGE_OPTIONAL_HEADER64 struttura (winnt.h)
Rappresenta il formato di intestazione facoltativo.
Sintassi
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;
Members
Magic
Stato del file di immagine. Questo membro può essere uno dei valori seguenti.
MajorLinkerVersion
Numero di versione principale del linker.
MinorLinkerVersion
Numero di versione secondaria del linker.
SizeOfCode
Dimensioni della sezione codice, in byte o somma di tutte queste sezioni se sono presenti più sezioni di codice.
SizeOfInitializedData
Dimensioni della sezione dati inizializzata, in byte o somma di tutte queste sezioni se sono presenti più sezioni di dati inizializzate.
SizeOfUninitializedData
Dimensioni della sezione dati non inizializzata, in byte o la somma di tutte queste sezioni se sono presenti più sezioni di dati non inizializzate.
AddressOfEntryPoint
Puntatore alla funzione del punto di ingresso, rispetto all'indirizzo di base dell'immagine. Per i file eseguibili, si tratta dell'indirizzo iniziale. Per i driver di dispositivo, si tratta dell'indirizzo della funzione di inizializzazione. La funzione del punto di ingresso è facoltativa per le DLL. Quando non è presente alcun punto di ingresso, questo membro è zero.
BaseOfCode
Puntatore all'inizio della sezione del codice, rispetto alla base dell'immagine.
ImageBase
Indirizzo preferito del primo byte dell'immagine quando viene caricato in memoria. Questo valore è un numero multiplo di byte 64K. Il valore predefinito per le DLL è 0x10000000. Il valore predefinito per le applicazioni è 0x00400000, ad eccezione di Windows CE in cui è 0x00010000.
SectionAlignment
Allineamento delle sezioni caricate in memoria, in byte. Questo valore deve essere maggiore o uguale al membro FileAlignment . Il valore predefinito è la dimensione della pagina per il sistema.
FileAlignment
Allineamento dei dati non elaborati delle sezioni nel file di immagine, in byte. Il valore deve essere una potenza pari a 2 tra 512 e 64K (inclusiva). Il valore predefinito è 512. Se il membro SectionAlignment è minore delle dimensioni della pagina di sistema, questo membro deve essere uguale a SectionAlignment.
MajorOperatingSystemVersion
Numero di versione principale del sistema operativo richiesto.
MinorOperatingSystemVersion
Numero di versione secondaria del sistema operativo richiesto.
MajorImageVersion
Numero di versione principale dell'immagine.
MinorImageVersion
Numero di versione secondaria dell'immagine.
MajorSubsystemVersion
Numero di versione principale del sottosistema.
MinorSubsystemVersion
Numero di versione secondaria del sottosistema.
Win32VersionValue
Questo membro è riservato e deve essere 0.
SizeOfImage
Dimensioni dell'immagine, in byte, incluse tutte le intestazioni. Deve essere un multiplo di SectionAlignment.
SizeOfHeaders
Dimensioni combinate degli elementi seguenti, arrotondate a un multiplo del valore specificato nel membro FileAlignment .
- e_lfanew membro di IMAGE_DOS_HEADER
- 4 firma di byte
- dimensioni di IMAGE_FILE_HEADER
- dimensioni dell'intestazione facoltativa
- dimensioni di tutte le intestazioni di sezione
CheckSum
Checksum del file di immagine. I file seguenti vengono convalidati in fase di caricamento: tutti i driver, qualsiasi DLL caricata al momento dell'avvio e qualsiasi DLL caricata in un processo di sistema critico.
Subsystem
Sottosistema necessario per eseguire questa immagine. I valori seguenti sono definiti.
DllCharacteristics
Caratteristiche dll dell'immagine. Vengono definiti i valori seguenti.
Valore | Significato |
---|---|
|
Riservato. |
|
Riservato. |
|
Riservato. |
|
Riservato. |
|
La DLL può essere rilocata in fase di caricamento. |
|
I controlli di integrità del codice sono forzati. Se si imposta questo flag e una sezione contiene solo dati non inizializzati, impostare il membro PointerToRawData di IMAGE_SECTION_HEADER per tale sezione su zero; in caso contrario, l'immagine non verrà caricata perché non è possibile verificare la firma digitale. |
|
L'immagine è compatibile con la prevenzione dell'esecuzione dei dati (DEP). |
|
L'immagine è compatibile con l'isolamento, ma non deve essere isolata. |
|
L'immagine non usa la gestione delle eccezioni strutturata (SEH). Nessun gestore può essere chiamato in questa immagine. |
|
Non associare l'immagine. |
|
Riservato. |
|
Driver WDM. |
|
Riservato. |
|
L'immagine è compatibile con il server terminal. |
SizeOfStackReserve
Numero di byte da riservare per lo stack. Solo la memoria specificata dal membro SizeOfStackCommit viene sottoposta a commit in fase di caricamento; il resto viene reso disponibile una pagina alla volta fino a raggiungere questa dimensione di riserva.
SizeOfStackCommit
Numero di byte di cui eseguire il commit per lo stack.
SizeOfHeapReserve
Numero di byte da riservare per l'heap locale. Solo la memoria specificata dal membro SizeOfHeapCommit viene sottoposta a commit in fase di caricamento; il resto viene reso disponibile una pagina alla volta fino a raggiungere questa dimensione di riserva.
SizeOfHeapCommit
Numero di byte di cui eseguire il commit per l'heap locale.
LoaderFlags
Questo membro è obsoleto.
NumberOfRvaAndSizes
Numero di voci di directory nella parte restante dell'intestazione facoltativa. Ogni voce descrive una posizione e una dimensione.
DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Puntatore alla prima struttura IMAGE_DATA_DIRECTORY nella directory dei dati.
Commenti
Il numero di directory non è fisso. Controllare il membro NumberOfRvaAndSizes prima di cercare una directory specifica.
La struttura effettiva in WinNT.h è denominata IMAGE_OPTIONAL_HEADER32 e IMAGE_OPTIONAL_HEADER viene definita come IMAGE_OPTIONAL_HEADER32. Tuttavia, se _WIN64 è definito, IMAGE_OPTIONAL_HEADER viene definito come IMAGE_OPTIONAL_HEADER64.
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;
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | winnt.h (include Windows.h) |