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.
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.
DllCharacteristics
As características de DLL da imagem. Os valores a seguir são definidos.
Valor | Significado |
---|---|
|
Reservado. |
|
Reservado. |
|
Reservado. |
|
Reservado. |
|
A DLL pode ser realocada no momento da carga. |
|
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. |
|
A imagem é compatível com a DEP (prevenção de execução de dados). |
|
A imagem tem reconhecimento de isolamento, mas não deve ser isolada. |
|
A imagem não usa SEH (tratamento de exceção estruturada). Nenhum manipulador pode ser chamado nesta imagem. |
|
Não associa essa imagem. |
|
Reservado. |
|
Um driver WDM. |
|
Reservado. |
|
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) |