다음을 통해 공유


IMAGE_OPTIONAL_HEADER64 구조체(winnt.h)

선택적 헤더 형식을 나타냅니다.

구문

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;

멤버

Magic

이미지 파일의 상태입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

의미
IMAGE_NT_OPTIONAL_HDR_MAGIC
파일은 실행 파일 이미지입니다. 이 값은 32비트 애플리케이션에서 IMAGE_NT_OPTIONAL_HDR32_MAGIC 64비트 애플리케이션에서 IMAGE_NT_OPTIONAL_HDR64_MAGIC 정의됩니다.
IMAGE_NT_OPTIONAL_HDR32_MAGIC
0x10b
파일은 실행 파일 이미지입니다.
IMAGE_NT_OPTIONAL_HDR64_MAGIC
0x20b
파일은 실행 파일 이미지입니다.
IMAGE_ROM_OPTIONAL_HDR_MAGIC
0x107
파일은 ROM 이미지입니다.

MajorLinkerVersion

링커의 주 버전 번호입니다.

MinorLinkerVersion

링커의 부 버전 번호입니다.

SizeOfCode

코드 섹션이 여러 개 있는 경우 코드 섹션의 크기(바이트) 또는 이러한 모든 섹션의 합계입니다.

SizeOfInitializedData

초기화된 데이터 섹션의 크기(바이트)이거나, 초기화된 데이터 섹션이 여러 개 있는 경우 이러한 모든 섹션의 합계입니다.

SizeOfUninitializedData

초기화되지 않은 데이터 섹션의 크기(바이트) 또는 초기화되지 않은 데이터 섹션이 여러 개 있는 경우 이러한 모든 섹션의 합계입니다.

AddressOfEntryPoint

이미지 기본 주소를 기준으로 하는 진입점 함수에 대한 포인터입니다. 실행 파일의 경우 시작 주소입니다. 디바이스 드라이버의 경우 초기화 함수의 주소입니다. 진입점 함수는 DLL에 대해 선택 사항입니다. 진입점이 없으면 이 멤버는 0입니다.

BaseOfCode

이미지 베이스를 기준으로 하는 코드 섹션의 시작 부분에 대한 포인터입니다.

ImageBase

메모리에 로드될 때 이미지의 첫 번째 바이트의 기본 주소입니다. 이 값은 64K 바이트의 배수입니다. DLL의 기본값은 0x10000000. 애플리케이션의 기본값은 0x00010000 Windows CE 제외하면 0x00400000.

SectionAlignment

메모리에 로드된 섹션의 맞춤(바이트)입니다. 이 값은 FileAlignment 멤버보다 크거나 같아야 합니다. 기본값은 시스템의 페이지 크기입니다.

FileAlignment

이미지 파일에서 섹션의 원시 데이터 정렬(바이트)입니다. 값은 512에서 64K(포함) 사이의 2의 힘이어야 합니다. 기본값은 512입니다. SectionAlignment 멤버가 시스템 페이지 크기보다 작은 경우 이 멤버는 SectionAlignment와 동일해야 합니다.

MajorOperatingSystemVersion

필수 운영 체제의 주 버전 번호입니다.

MinorOperatingSystemVersion

필수 운영 체제의 부 버전 번호입니다.

MajorImageVersion

브라우저의 주 버전 번호입니다.

MinorImageVersion

브라우저의 부 버전 번호입니다.

MajorSubsystemVersion

하위 시스템의 주 버전 번호입니다.

MinorSubsystemVersion

하위 시스템의 부 버전 번호입니다.

Win32VersionValue

이 멤버는 예약되어 있으며 0이어야 합니다.

SizeOfImage

모든 헤더를 포함하여 이미지의 크기(바이트)입니다. SectionAlignment의 배수여야 합니다.

SizeOfHeaders

FileAlignment 멤버에 지정된 값의 배수로 반올림된 다음 항목의 결합된 크기입니다.

  • IMAGE_DOS_HEADER e_lfanew 멤버
  • 4 바이트 서명
  • IMAGE_FILE_HEADER 크기
  • 선택적 헤더의 크기
  • 모든 섹션 헤더의 크기

CheckSum

이미지 파일 체크섬입니다. 로드 시 유효성이 검사되는 파일은 모든 드라이버, 부팅 시 로드된 DLL 및 중요한 시스템 프로세스에 로드된 DLL입니다.

Subsystem

이 이미지를 실행하는 데 필요한 하위 시스템입니다. 다음 값이 정의됩니다.

의미
IMAGE_SUBSYSTEM_UNKNOWN
0
알 수 없는 하위 시스템.
IMAGE_SUBSYSTEM_NATIVE
1
하위 시스템이 필요하지 않습니다(디바이스 드라이버 및 네이티브 시스템 프로세스).
IMAGE_SUBSYSTEM_WINDOWS_GUI
2
Windows GUI(그래픽 사용자 인터페이스) 하위 시스템.
IMAGE_SUBSYSTEM_WINDOWS_CUI
3
Windows CUI(문자 모드 사용자 인터페이스) 하위 시스템.
IMAGE_SUBSYSTEM_OS2_CUI
5
OS/2 CUI 하위 시스템.
IMAGE_SUBSYSTEM_POSIX_CUI
7
POSIX CUI 하위 시스템.
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
9
Windows CE 시스템.
IMAGE_SUBSYSTEM_EFI_APPLICATION
10
EFI(Extensible Firmware Interface) 애플리케이션.
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
11
부팅 서비스가 포함된 EFI 드라이버.
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
12
런타임 서비스가 포함된 EFI 드라이버.
IMAGE_SUBSYSTEM_EFI_ROM
13
EFI ROM 이미지.
IMAGE_SUBSYSTEM_XBOX
14
Xbox 시스템.
IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION
16
부팅 애플리케이션.

DllCharacteristics

이미지의 DLL 특성입니다. 다음 값이 정의됩니다.

의미
0x0001
예약되어 있습니다.
0x0002
예약되어 있습니다.
0x0004
예약되어 있습니다.
0x0008
예약되어 있습니다.
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
DLL은 로드 시 재배치할 수 있습니다.
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY
0x0080
코드 무결성 검사는 강제로 수행됩니다. 이 플래그를 설정하고 섹션에 초기화되지 않은 데이터만 포함된 경우 해당 섹션에 대한 IMAGE_SECTION_HEADERPointerToRawData 멤버를 0으로 설정합니다. 그렇지 않으면 디지털 서명을 확인할 수 없으므로 이미지를 로드하지 못합니다.
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
이미지는 DEP(데이터 실행 방지)와 호환됩니다.
IMAGE_DLLCHARACTERISTICS_NO_ISOLATION
0x0200
이미지는 격리를 인식하지만 격리해서는 안 됩니다.
IMAGE_DLLCHARACTERISTICS_NO_SEH
0x0400
이미지는 SEH(구조적 예외 처리)를 사용하지 않습니다. 이 이미지에서는 처리기를 호출할 수 없습니다.
IMAGE_DLLCHARACTERISTICS_NO_BIND
0x0800
이미지를 바인딩하지 않습니다.
0x1000
예약되어 있습니다.
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
0x2000
WDM 드라이버입니다.
0x4000
예약되어 있습니다.
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
이미지는 터미널 서버 인식입니다.

SizeOfStackReserve

스택에 대해 예약할 바이트 수입니다. SizeOfStackCommit 멤버가 지정한 메모리만 로드 시 커밋됩니다. 나머지는 이 예약 크기에 도달할 때까지 한 번에 한 페이지씩 사용할 수 있습니다.

SizeOfStackCommit

스택에 커밋할 바이트 수입니다.

SizeOfHeapReserve

로컬 힙에 대해 예약할 바이트 수입니다. SizeOfHeapCommit 멤버가 지정한 메모리만 로드 시 커밋됩니다. 나머지는 이 예약 크기에 도달할 때까지 한 번에 한 페이지씩 사용할 수 있습니다.

SizeOfHeapCommit

로컬 힙에 대해 커밋할 바이트 수입니다.

LoaderFlags

이 멤버는 사용되지 않습니다.

NumberOfRvaAndSizes

선택적 헤더의 나머지 부분에 있는 디렉터리 항목 수입니다. 각 항목은 위치 및 크기를 설명합니다.

DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]

데이터 디렉터리의 첫 번째 IMAGE_DATA_DIRECTORY 구조체에 대한 포인터입니다.

설명

디렉터리 수가 수정되지 않았습니다. 특정 디렉터리를 찾기 전에 NumberOfRvaAndSizes 멤버를 확인합니다.

WinNT.h의 실제 구조는 IMAGE_OPTIONAL_HEADER32 이름이 지정되고 IMAGE_OPTIONAL_HEADERIMAGE_OPTIONAL_HEADER32 정의됩니다. 그러나 _WIN64 정의된 경우 IMAGE_OPTIONAL_HEADERIMAGE_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;

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 winnt.h(Windows.h 포함)

추가 정보

IMAGE_DATA_DIRECTORY

ImageHlp 구조체