Compartilhar via


estrutura IMAGE_OPTIONAL_HEADER64 (winnt.h)

Representa o formato de cabeçalho opcional.

Sintaxe

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;

Membros

Magic

O estado do arquivo de imagem. Esse membro pode ser um dos valores a seguir.

Valor Significado
IMAGE_NT_OPTIONAL_HDR_MAGIC
O arquivo é uma imagem executável. Esse valor é definido como IMAGE_NT_OPTIONAL_HDR32_MAGIC em um aplicativo de 32 bits e como IMAGE_NT_OPTIONAL_HDR64_MAGIC em um aplicativo de 64 bits.
IMAGE_NT_OPTIONAL_HDR32_MAGIC
0x10b
O arquivo é uma imagem executável.
IMAGE_NT_OPTIONAL_HDR64_MAGIC
0x20b
O arquivo é uma imagem executável.
IMAGE_ROM_OPTIONAL_HDR_MAGIC
0x107
O arquivo é uma imagem ROM.

MajorLinkerVersion

O número de versão principal do vinculador.

MinorLinkerVersion

O número de versão secundária do vinculador.

SizeOfCode

O tamanho da seção de código, em bytes ou a soma de todas essas seções se houver várias seções de código.

SizeOfInitializedData

O tamanho da seção de dados inicializados, em bytes ou a soma de todas essas seções se houver várias seções de dados inicializadas.

SizeOfUninitializedData

O tamanho da seção de dados não inicializados, em bytes ou a soma de todas essas seções se houver várias seções de dados não inicializados.

AddressOfEntryPoint

Um ponteiro para a função de ponto de entrada, em relação ao endereço base da imagem. Para arquivos executáveis, esse é o endereço inicial. Para drivers de dispositivo, esse é o endereço da função de inicialização. A função de ponto de entrada é opcional para DLLs. Quando nenhum ponto de entrada está presente, esse membro é zero.

BaseOfCode

Um ponteiro para o início da seção de código, em relação à base de imagem.

ImageBase

O endereço preferencial do primeiro byte da imagem quando ela é carregada na memória. Esse valor é um múltiplo de 64K bytes. O valor padrão para DLLs é 0x10000000. O valor padrão para aplicativos é 0x00400000, exceto em Windows CE em que ele está 0x00010000.

SectionAlignment

O alinhamento das seções carregadas na memória, em bytes. Esse valor deve ser maior ou igual ao membro FileAlignment . O valor padrão é o tamanho da página do sistema.

FileAlignment

O alinhamento dos dados brutos das seções no arquivo de imagem, em bytes. O valor deve ser uma potência de 2 entre 512 e 64K (inclusive). O padrão é 512. Se o membro SectionAlignment for menor que o tamanho da página do sistema, esse membro deverá ser o mesmo que SectionAlignment.

MajorOperatingSystemVersion

O número de versão principal do sistema operacional necessário.

MinorOperatingSystemVersion

O número de versão secundária do sistema operacional necessário.

MajorImageVersion

O número de versão principal da imagem.

MinorImageVersion

O número de versão secundária da imagem.

MajorSubsystemVersion

O número de versão principal do subsistema.

MinorSubsystemVersion

O número de secundária principal do subsistema.

Win32VersionValue

Esse membro é reservado e deve ser 0.

SizeOfImage

O tamanho da imagem, em bytes, incluindo todos os cabeçalhos. Deve ser um múltiplo de SectionAlignment.

SizeOfHeaders

O tamanho combinado dos itens a seguir, arredondado para um múltiplo do valor especificado no membro FileAlignment .

  • e_lfanew membro do IMAGE_DOS_HEADER
  • Assinatura de 4 bytes
  • tamanho de IMAGE_FILE_HEADER
  • tamanho do cabeçalho opcional
  • tamanho de todos os cabeçalhos de seção

CheckSum

A soma de verificação do arquivo de imagem. Os seguintes arquivos são validados no momento da carga: todos os drivers, qualquer DLL carregada no momento da inicialização e qualquer DLL carregada em um processo crítico do sistema.

Subsystem

O subsistema necessário para executar essa imagem. Os valores a seguir são definidos.

Valor Significado
IMAGE_SUBSYSTEM_UNKNOWN
0
Subsistema desconhecido.
IMAGE_SUBSYSTEM_NATIVE
1
Nenhum subsistema é necessário (drivers de dispositivo e processos de sistema nativos).
IMAGE_SUBSYSTEM_WINDOWS_GUI
2
Subsistema de GUI (interface gráfica do usuário) do Windows.
IMAGE_SUBSYSTEM_WINDOWS_CUI
3
Subsistema CUI (interface do usuário) do modo de caractere do Windows.
IMAGE_SUBSYSTEM_OS2_CUI
5
Subsistema CUI do SO/2.
IMAGE_SUBSYSTEM_POSIX_CUI
7
Subsistema POSIX CUI.
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
9
Windows CE sistema.
IMAGE_SUBSYSTEM_EFI_APPLICATION
10
Aplicativo de EFI (Interface de Firmware Extensível).
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
11
Driver EFI com serviços de inicialização.
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
12
Driver EFI com serviços de runtime.
IMAGE_SUBSYSTEM_EFI_ROM
13
Imagem ROM da EFI.
IMAGE_SUBSYSTEM_XBOX
14
Sistema Xbox.
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
16
Aplicativo de inicialização.

DllCharacteristics

As características de DLL da imagem. Os valores a seguir são definidos.

Valor Significado
0x0001
Reservado.
0x0002
Reservado.
0x0004
Reservado.
0x0008
Reservado.
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
A DLL pode ser realocada no momento da carga.
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
0x0080
As verificações de integridade de código são forçadas. Se você definir esse sinalizador e uma seção contiver apenas dados não inicializados, defina o membro PointerToRawData de IMAGE_SECTION_HEADER dessa seção como zero; caso contrário, a imagem não será carregada porque a assinatura digital não pode ser verificada.
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
A imagem é compatível com a DEP (prevenção de execução de dados).
IMAGE_DLLCHARACTERISTICS_NO_ISOLATION
0x0200
A imagem tem reconhecimento de isolamento, mas não deve ser isolada.
IMAGE_DLLCHARACTERISTICS_NO_SEH
0x0400
A imagem não usa SEH (tratamento de exceção estruturada). Nenhum manipulador pode ser chamado nesta imagem.
IMAGE_DLLCHARACTERISTICS_NO_BIND
0x0800
Não associa essa imagem.
0x1000
Reservado.
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
Um driver WDM.
0x4000
Reservado.
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
A imagem tem reconhecimento de servidor de terminal.

SizeOfStackReserve

O número de bytes a serem reservados para a pilha. Somente a memória especificada pelo membro SizeOfStackCommit é confirmada no momento da carga; o restante é disponibilizado uma página por vez até que esse tamanho de reserva seja atingido.

SizeOfStackCommit

O número de bytes a serem confirmados para a pilha.

SizeOfHeapReserve

O número de bytes a serem reservados para o heap local. Somente a memória especificada pelo membro SizeOfHeapCommit é confirmada no momento da carga; o restante é disponibilizado uma página por vez até que esse tamanho de reserva seja atingido.

SizeOfHeapCommit

O número de bytes a serem confirmados para o heap local.

LoaderFlags

Este membro está obsoleto.

NumberOfRvaAndSizes

O número de entradas de diretório no restante do cabeçalho opcional. Cada entrada descreve um local e um tamanho.

DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]

Um ponteiro para a primeira estrutura IMAGE_DATA_DIRECTORY no diretório de dados.

Comentários

O número de diretórios não foi corrigido. Verifique o membro NumberOfRvaAndSizes antes de procurar um diretório específico.

A estrutura real no WinNT.h é nomeada IMAGE_OPTIONAL_HEADER32 e IMAGE_OPTIONAL_HEADER é definida como IMAGE_OPTIONAL_HEADER32. No entanto, se _WIN64 for definido, IMAGE_OPTIONAL_HEADER será definido 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 Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho winnt.h (inclua Windows.h)

Confira também

IMAGE_DATA_DIRECTORY

Estruturas ImageHlp