estructura IMAGE_OPTIONAL_HEADER32 (winnt.h)
Representa el formato de encabezado opcional.
Sintaxis
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;
Miembros
Magic
Estado del archivo de imagen. Este miembro puede ser uno de los siguientes valores.
MajorLinkerVersion
Número de versión principal del enlazador.
MinorLinkerVersion
Número de versión secundaria del enlazador.
SizeOfCode
Tamaño de la sección de código, en bytes, o la suma de todas estas secciones si hay varias secciones de código.
SizeOfInitializedData
Tamaño de la sección de datos inicializado, en bytes, o la suma de todas estas secciones si hay varias secciones de datos inicializadas.
SizeOfUninitializedData
Tamaño de la sección de datos sin inicializar, en bytes, o la suma de todas estas secciones si hay varias secciones de datos sin inicializar.
AddressOfEntryPoint
Puntero a la función de punto de entrada, en relación con la dirección base de la imagen. En el caso de los archivos ejecutables, esta es la dirección inicial. En el caso de los controladores de dispositivos, esta es la dirección de la función de inicialización. La función de punto de entrada es opcional para los archivos DLL. Cuando no hay ningún punto de entrada presente, este miembro es cero.
BaseOfCode
Puntero al principio de la sección de código, en relación con la base de imágenes.
BaseOfData
Puntero al principio de la sección de datos, en relación con la base de imágenes.
ImageBase
Dirección preferida del primer byte de la imagen cuando se carga en memoria. Este valor es un múltiplo de 64 000 bytes. El valor predeterminado de los archivos DLL es 0x10000000. El valor predeterminado de las aplicaciones es 0x00400000, excepto en Windows CE donde se 0x00010000.
SectionAlignment
Alineación de secciones cargadas en memoria, en bytes. Este valor debe ser mayor o igual que el miembro FileAlignment . El valor predeterminado es el tamaño de página del sistema.
FileAlignment
Alineación de los datos sin procesar de las secciones del archivo de imagen, en bytes. El valor debe ser una potencia de 2 entre 512 y 64K (inclusive). El valor predeterminado es 512. Si el miembro SectionAlignment es menor que el tamaño de página del sistema, este miembro debe ser el mismo que SectionAlignment.
MajorOperatingSystemVersion
El número de versión principal del sistema operativo obligatorio.
MinorOperatingSystemVersion
El número de versión secundaria del sistema operativo obligatorio.
MajorImageVersion
El número de versión principal de la imagen.
MinorImageVersion
El número de versión secundaria de la imagen.
MajorSubsystemVersion
El número de versión principal del subsistema.
MinorSubsystemVersion
El número de versión secundaria del subsistema.
Win32VersionValue
Este miembro está reservado y debe ser 0.
SizeOfImage
Tamaño de la imagen, en bytes, incluidos todos los encabezados. Debe ser un múltiplo de SectionAlignment.
SizeOfHeaders
Tamaño combinado de los siguientes elementos, redondeado a un múltiplo del valor especificado en el miembro FileAlignment .
- e_lfanew miembro de IMAGE_DOS_HEADER
- Firma de 4 bytes
- tamaño de IMAGE_FILE_HEADER
- tamaño del encabezado opcional
- tamaño de todos los encabezados de sección
CheckSum
Suma de comprobación del archivo de imagen. Los archivos siguientes se validan en tiempo de carga: todos los controladores, cualquier DLL cargado en tiempo de arranque y cualquier ARCHIVO DLL cargado en un proceso crítico del sistema.
Subsystem
Subsistema necesario para ejecutar esta imagen. Se definen los valores siguientes.
DllCharacteristics
Características dll de la imagen. Se definen los valores siguientes.
Valor | Significado |
---|---|
|
Reservado. |
|
Reservado. |
|
Reservado. |
|
Reservado. |
|
ASLR con espacio de direcciones de 64 bits. |
|
El archivo DLL se puede reubicar en tiempo de carga. |
|
Se fuerzan las comprobaciones de integridad del código. Si establece esta marca y una sección solo contiene datos sin inicializar, establezca el miembro PointerToRawData de IMAGE_SECTION_HEADER para esa sección en cero; de lo contrario, la imagen no se cargará porque no se puede comprobar la firma digital. |
|
La imagen es compatible con la prevención de ejecución de datos (DEP). |
|
La imagen es consciente del aislamiento, pero no debe aislarse. |
|
La imagen no usa el control estructurado de excepciones (SEH). No se puede llamar a ningún controlador en esta imagen. |
|
No enlaza la imagen. |
|
La imagen debe ejecutarse en un AppContainer. |
|
Un controlador WDM. |
|
La imagen admite Protección de flujo de control. |
|
La imagen es compatible con terminal Server. |
SizeOfStackReserve
Número de bytes que se van a reservar para la pila. Solo se confirma la memoria especificada por el miembro SizeOfStackCommit en tiempo de carga; el resto está disponible una página a la vez hasta que se alcance este tamaño de reserva.
SizeOfStackCommit
Número de bytes que se van a confirmar para la pila.
SizeOfHeapReserve
Número de bytes que se van a reservar para el montón local. Solo se confirma la memoria especificada por el miembro SizeOfHeapCommit en tiempo de carga; el resto está disponible una página a la vez hasta que se alcance este tamaño de reserva.
SizeOfHeapCommit
Número de bytes que se van a confirmar para el montón local.
LoaderFlags
Este miembro está obsoleto.
NumberOfRvaAndSizes
Número de entradas de directorio en el resto del encabezado opcional. Cada entrada describe una ubicación y un tamaño.
DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Puntero a la primera estructura IMAGE_DATA_DIRECTORY del directorio de datos.
Número de índice de la entrada de directorio deseada. Este parámetro puede ser uno de los valores siguientes.
Comentarios
El número de directorios no es fijo. Compruebe el miembro NumberOfRvaAndSizes antes de buscar un directorio específico.
La estructura real de WinNT.h se denomina IMAGE_OPTIONAL_HEADER32 y IMAGE_OPTIONAL_HEADER se define como IMAGE_OPTIONAL_HEADER32. Sin embargo, si se define _WIN64 , IMAGE_OPTIONAL_HEADER se define como 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;
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Encabezado | winnt.h (incluya Windows.h) |