Condividi tramite


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.

Valore Significato
IMAGE_NT_OPTIONAL_HDR_MAGIC
Il file è un'immagine eseguibile. Questo valore viene definito come IMAGE_NT_OPTIONAL_HDR32_MAGIC in un'applicazione a 32 bit e come IMAGE_NT_OPTIONAL_HDR64_MAGIC in un'applicazione a 64 bit.
IMAGE_NT_OPTIONAL_HDR32_MAGIC
0x10b
Il file è un'immagine eseguibile.
IMAGE_NT_OPTIONAL_HDR64_MAGIC
0x20b
Il file è un'immagine eseguibile.
IMAGE_ROM_OPTIONAL_HDR_MAGIC
0x107
Il file è un'immagine ROM.

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.

Valore Significato
IMAGE_SUBSYSTEM_UNKNOWN
0
Sottosistema sconosciuto.
IMAGE_SUBSYSTEM_NATIVE
1
Nessun sottosistema obbligatorio (driver di dispositivo e processi di sistema nativi).
IMAGE_SUBSYSTEM_WINDOWS_GUI
2
Sottosistema dell'interfaccia utente grafica windows (GUI).
IMAGE_SUBSYSTEM_WINDOWS_CUI
3
Sottosistema dell'interfaccia utente in modalità carattere windows (CUI).
IMAGE_SUBSYSTEM_OS2_CUI
5
Sottosistema DI CUI/2.
IMAGE_SUBSYSTEM_POSIX_CUI
7
Sottosistema POSIX CUI.
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
9
Windows CE sistema.
IMAGE_SUBSYSTEM_EFI_APPLICATION
10
Applicazione EFI (Extensible Firmware Interface).
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
11
Driver EFI con servizi di avvio.
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
12
Driver EFI con servizi di runtime.
IMAGE_SUBSYSTEM_EFI_ROM
13
Immagine ROM di EFI.
IMAGE_SUBSYSTEM_XBOX
14
Sistema Xbox.
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
16
Applicazione di avvio.

DllCharacteristics

Caratteristiche dll dell'immagine. Vengono definiti i valori seguenti.

Valore Significato
0x0001
Riservato.
0x0002
Riservato.
0x0004
Riservato.
0x0008
Riservato.
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
La DLL può essere rilocata in fase di caricamento.
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
0x0080
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.
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
L'immagine è compatibile con la prevenzione dell'esecuzione dei dati (DEP).
IMAGE_DLLCHARACTERISTICS_NO_ISOLATION
0x0200
L'immagine è compatibile con l'isolamento, ma non deve essere isolata.
IMAGE_DLLCHARACTERISTICS_NO_SEH
0x0400
L'immagine non usa la gestione delle eccezioni strutturata (SEH). Nessun gestore può essere chiamato in questa immagine.
IMAGE_DLLCHARACTERISTICS_NO_BIND
0x0800
Non associare l'immagine.
0x1000
Riservato.
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
Driver WDM.
0x4000
Riservato.
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
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)

Vedi anche

IMAGE_DATA_DIRECTORY

Strutture ImageHlp