pub struct OptionalHeader {Show 30 fields
pub magic: u16,
pub major_linker_version: u8,
pub minor_linker_version: u8,
pub size_of_code: u32,
pub size_of_initialized_data: u32,
pub size_of_uninitialized_data: u32,
pub address_of_entry_point: u32,
pub base_of_code: u32,
pub base_of_data: u32,
pub image_base: u64,
pub section_alignment: u32,
pub file_alignment: u32,
pub major_operating_system_version: u16,
pub minor_operating_system_version: u16,
pub major_image_version: u16,
pub minor_image_version: u16,
pub major_subsystem_version: u16,
pub minor_subsystem_version: u16,
pub win32_version_value: u32,
pub size_of_image: u32,
pub size_of_headers: u32,
pub check_sum: u32,
pub subsystem: u16,
pub dll_characteristics: u16,
pub size_of_stack_reserve: u64,
pub size_of_stack_commit: u64,
pub size_of_heap_reserve: u64,
pub size_of_heap_commit: u64,
pub loader_flags: u32,
pub number_of_rva_and_sizes: u32,
}Expand description
Parsed IMAGE_OPTIONAL_HEADER / IMAGE_OPTIONAL_HEADER64.
One struct handles both PE32 and PE32+ variants; the
32-bit ImageBase / stack / heap sizes are stored as u64
for uniformity and zero-extended on read.
The data directories at the tail of the optional header
aren’t stored here — see PeFile::data_directories. The
number_of_rva_and_sizes field tells the encoder how many
directory slots to emit.
Fields§
§magic: u16§major_linker_version: u8§minor_linker_version: u8§size_of_code: u32§size_of_initialized_data: u32§size_of_uninitialized_data: u32§address_of_entry_point: u32§base_of_code: u32§base_of_data: u32PE32 only — the address of the data section. Always 0 in PE32+ since 64-bit images don’t have this field.
image_base: u64§section_alignment: u32§file_alignment: u32§major_operating_system_version: u16§minor_operating_system_version: u16§major_image_version: u16§minor_image_version: u16§major_subsystem_version: u16§minor_subsystem_version: u16§win32_version_value: u32§size_of_image: u32§size_of_headers: u32§check_sum: u32§subsystem: u16§dll_characteristics: u16§size_of_stack_reserve: u64§size_of_stack_commit: u64§size_of_heap_reserve: u64§size_of_heap_commit: u64§loader_flags: u32§number_of_rva_and_sizes: u32Implementations§
Trait Implementations§
Source§impl Clone for OptionalHeader
impl Clone for OptionalHeader
Source§fn clone(&self) -> OptionalHeader
fn clone(&self) -> OptionalHeader
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for OptionalHeader
impl Debug for OptionalHeader
Source§impl PartialEq for OptionalHeader
impl PartialEq for OptionalHeader
Source§fn eq(&self, other: &OptionalHeader) -> bool
fn eq(&self, other: &OptionalHeader) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for OptionalHeader
impl StructuralPartialEq for OptionalHeader
Auto Trait Implementations§
impl Freeze for OptionalHeader
impl RefUnwindSafe for OptionalHeader
impl Send for OptionalHeader
impl Sync for OptionalHeader
impl Unpin for OptionalHeader
impl UnsafeUnpin for OptionalHeader
impl UnwindSafe for OptionalHeader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more