Partager via


structure IMAGE_OPTIONAL_HEADER64 (winnt.h)

Représente le format d’en-tête facultatif.

Syntaxe

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;

Membres

Magic

État du fichier image. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
IMAGE_NT_OPTIONAL_HDR_MAGIC
Le fichier est une image exécutable. Cette valeur est définie comme IMAGE_NT_OPTIONAL_HDR32_MAGIC dans une application 32 bits et comme IMAGE_NT_OPTIONAL_HDR64_MAGIC dans une application 64 bits.
IMAGE_NT_OPTIONAL_HDR32_MAGIC
0x10B
Le fichier est une image exécutable.
IMAGE_NT_OPTIONAL_HDR64_MAGIC
0x20b
Le fichier est une image exécutable.
IMAGE_ROM_OPTIONAL_HDR_MAGIC
0x107
Le fichier est une image ROM.

MajorLinkerVersion

Numéro de version principal de l’éditeur de liens.

MinorLinkerVersion

Numéro de version secondaire de l’éditeur de liens.

SizeOfCode

Taille de la section de code, en octets, ou la somme de toutes ces sections s’il existe plusieurs sections de code.

SizeOfInitializedData

Taille de la section de données initialisées, en octets, ou la somme de toutes ces sections s’il existe plusieurs sections de données initialisées.

SizeOfUninitializedData

Taille de la section de données non initialisées, en octets, ou la somme de toutes ces sections s’il existe plusieurs sections de données non initialisées.

AddressOfEntryPoint

Pointeur vers la fonction de point d’entrée, par rapport à l’adresse de base de l’image. Pour les fichiers exécutables, il s’agit de l’adresse de départ. Pour les pilotes de périphérique, il s’agit de l’adresse de la fonction d’initialisation. La fonction de point d’entrée est facultative pour les DLL. Lorsqu’aucun point d’entrée n’est présent, ce membre est égal à zéro.

BaseOfCode

Pointeur vers le début de la section de code, par rapport à la base de l’image.

ImageBase

Adresse préférée du premier octet de l’image lorsqu’elle est chargée en mémoire. Cette valeur est un multiple de 64 000 octets. La valeur par défaut des DLL est 0x10000000. La valeur par défaut pour les applications est 0x00400000, sauf sur Windows CE où elle est 0x00010000.

SectionAlignment

Alignement des sections chargées en mémoire, en octets. Cette valeur doit être supérieure ou égale au membre FileAlignment . La valeur par défaut est la taille de page du système.

FileAlignment

Alignement des données brutes des sections du fichier image, en octets. La valeur doit être une puissance de 2 comprise entre 512 et 64 000 (inclus). La valeur par défaut est 512. Si le membre SectionAlignment est inférieur à la taille de la page système, ce membre doit être identique à SectionAlignment.

MajorOperatingSystemVersion

Numéro de version principale du système d’exploitation nécessaire.

MinorOperatingSystemVersion

Numéro de version mineure du système d’exploitation nécessaire.

MajorImageVersion

Numéro de version principale de l’image.

MinorImageVersion

Numéro de version mineure de l’image.

MajorSubsystemVersion

Numéro de version principale du sous-système.

MinorSubsystemVersion

Numéro de version mineure du sous-système.

Win32VersionValue

Ce membre est réservé et doit être 0.

SizeOfImage

Taille de l’image, en octets, y compris tous les en-têtes. Doit être un multiple de SectionAlignment.

SizeOfHeaders

Taille combinée des éléments suivants, arrondie à un multiple de la valeur spécifiée dans le membre FileAlignment .

  • e_lfanew membre de IMAGE_DOS_HEADER
  • Signature de 4 octets
  • taille de IMAGE_FILE_HEADER
  • taille de l’en-tête facultatif
  • taille de tous les en-têtes de section

CheckSum

La somme de contrôle du fichier image. Les fichiers suivants sont validés au moment du chargement : tous les pilotes, toutes les DLL chargées au démarrage et toutes les DLL chargées dans un processus système critique.

Subsystem

Sous-système requis pour exécuter cette image. Les valeurs suivantes sont définies.

Valeur Signification
IMAGE_SUBSYSTEM_UNKNOWN
0
Sous-système inconnu.
IMAGE_SUBSYSTEM_NATIVE
1
Aucun sous-système requis (pilotes de périphérique et processus système natifs).
IMAGE_SUBSYSTEM_WINDOWS_GUI
2
Sous-système d’interface utilisateur graphique (GUI) Windows.
IMAGE_SUBSYSTEM_WINDOWS_CUI
3
Sous-système D’interface utilisateur en mode caractère (CUI) Windows.
IMAGE_SUBSYSTEM_OS2_CUI
5
Sous-système CUI OS/2.
IMAGE_SUBSYSTEM_POSIX_CUI
7
Sous-système POSIX CUI.
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
9
Windows CE système.
IMAGE_SUBSYSTEM_EFI_APPLICATION
10
Application EFI (Extensible Firmware Interface).
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
11
Pilote EFI avec services de démarrage.
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
12
Pilote EFI avec services de runtime.
IMAGE_SUBSYSTEM_EFI_ROM
13
Image ROM EFI.
IMAGE_SUBSYSTEM_XBOX
14
Système Xbox.
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
16
Application de démarrage.

DllCharacteristics

Caractéristiques DLL de l’image. Les valeurs suivantes sont définies.

Valeur Signification
0x0001
Réservé.
0x0002
Réservé.
0x0004
Réservé.
0x0008
Réservé.
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
La DLL peut être déplacée au moment du chargement.
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
0x0080
Les vérifications d’intégrité du code sont forcées. Si vous définissez cet indicateur et qu’une section contient uniquement des données non initialisées, définissez le membre PointerToRawData de IMAGE_SECTION_HEADER pour cette section sur zéro ; sinon, le chargement de l’image échoue, car la signature numérique ne peut pas être vérifiée.
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
L’image est compatible avec la prévention de l’exécution des données (DEP).
IMAGE_DLLCHARACTERISTICS_NO_ISOLATION
0x0200
L’image prend en compte l’isolation, mais ne doit pas être isolée.
IMAGE_DLLCHARACTERISTICS_NO_SEH
0x0400
L’image n’utilise pas la gestion structurée des exceptions (SEH). Aucun gestionnaire ne peut être appelé dans cette image.
IMAGE_DLLCHARACTERISTICS_NO_BIND
0x0800
Ne liez pas l’image.
0x1000
Réservé.
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
Un pilote WDM.
0x4000
Réservé.
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
L’image prend en compte le serveur Terminal Server.

SizeOfStackReserve

Nombre d’octets à réserver pour la pile. Seule la mémoire spécifiée par le membre SizeOfStackCommit est validée au moment du chargement ; le reste est mis à disposition une page à la fois jusqu’à ce que cette taille de réserve soit atteinte.

SizeOfStackCommit

Nombre d’octets à valider pour la pile.

SizeOfHeapReserve

Nombre d’octets à réserver pour le tas local. Seule la mémoire spécifiée par le membre SizeOfHeapCommit est validée au moment du chargement ; le reste est mis à disposition une page à la fois jusqu’à ce que cette taille de réserve soit atteinte.

SizeOfHeapCommit

Nombre d’octets à valider pour le tas local.

LoaderFlags

Ce membre est obsolète.

NumberOfRvaAndSizes

Nombre d’entrées de répertoire dans le reste de l’en-tête facultatif. Chaque entrée décrit un emplacement et une taille.

DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]

Pointeur vers la première structure IMAGE_DATA_DIRECTORY dans le répertoire de données.

Remarques

Le nombre de répertoires n’est pas fixe. Vérifiez le membre NumberOfRvaAndSizes avant de rechercher un répertoire spécifique.

La structure réelle dans WinNT.h est nommée IMAGE_OPTIONAL_HEADER32 et IMAGE_OPTIONAL_HEADER est définie comme IMAGE_OPTIONAL_HEADER32. Toutefois, si _WIN64 est défini, IMAGE_OPTIONAL_HEADER est défini comme 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;

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winnt.h (inclure Windows.h)

Voir aussi

IMAGE_DATA_DIRECTORY

Structures ImageHlp