IMAGE_OPTIONAL_HEADER32 structure (winnt.h)
Représente le format d’en-tête facultatif.
Syntaxe
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;
Membres
Magic
État du fichier image. Ce membre peut être l’une des valeurs suivantes.
MajorLinkerVersion
Numéro de version principale 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 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, relatif à la base de l’image.
BaseOfData
Pointeur vers le début de la section de données, relatif à la base d’images.
ImageBase
Adresse par défaut du premier octet de l’image lorsqu’elle est chargée en mémoire. Cette valeur est un multiple de 64 Ko 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 Ko (inclus). La valeur par défaut est 512. Si le membre SectionAlignment est inférieur à la taille de 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, toute DLL chargée au démarrage et toute DLL chargée dans un processus système critique.
Subsystem
Sous-système requis pour exécuter cette image. Les valeurs suivantes sont définies.
DllCharacteristics
Caractéristiques DLL de l’image. Les valeurs suivantes sont définies.
Valeur | Signification |
---|---|
|
Réservé. |
|
Réservé. |
|
Réservé. |
|
Réservé. |
|
ASLR avec espace d’adressage 64 bits. |
|
La DLL peut être déplacée au moment du chargement. |
|
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. |
|
L’image est compatible avec la prévention de l’exécution des données (DEP). |
|
L’image prend en compte l’isolation, mais ne doit pas être isolée. |
|
L’image n’utilise pas la gestion structurée des exceptions (SEH). Aucun gestionnaire ne peut être appelé dans cette image. |
|
Ne liez pas l’image. |
|
L’image doit s’exécuter dans un AppContainer. |
|
Un pilote WDM. |
|
L’image prend en charge Protection du flux de contrôle. |
|
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.
Numéro d’index de l’entrée de répertoire souhaitée. Ce paramètre peut prendre les valeurs suivantes.
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) |