Skip to main content

OptionalHeader

Struct OptionalHeader 

Source
pub struct OptionalHeader {
    pub standard_fields: StandardFields,
    pub windows_fields: WindowsFields,
    pub data_directories: DataDirectories,
}
Expand description

Unified 32/64-bit optional header (for PE32 and PE32+).

Optional header is the most important of the NT headers. Although it’s called “optional”, it’s actually required for PE image files.

It is meant to represent either

Whether it’s 32 or 64-bit is determined by the StandardFields::magic and by the value CoffHeader::size_of_optional_header.

§Position in PE binary

The optional header is located after CoffHeader and before section table.

Fields§

§standard_fields: StandardFields

Unified standard (COFF) fields. See StandardFields to learn more.

§windows_fields: WindowsFields

Unified Windows fields. See WindowsFields to learn more.

§data_directories: DataDirectories

Data directories. See DataDirectories to learn more.

Implementations§

Source§

impl OptionalHeader

Source

pub fn container(&self) -> Result<Container>

Returns the container type of the PE binary.

Trait Implementations§

Source§

impl Clone for OptionalHeader

Source§

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)

Performs copy-assignment from source. Read more
Source§

impl Copy for OptionalHeader

Source§

impl Debug for OptionalHeader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for OptionalHeader

Source§

fn eq(&self, other: &OptionalHeader) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for OptionalHeader

Source§

impl<'a> TryFromCtx<'a, Endian> for OptionalHeader

Source§

type Error = Error

Source§

fn try_from_ctx(bytes: &'a [u8], _: Endian) -> Result<(Self, usize)>

Source§

impl TryIntoCtx<Endian> for OptionalHeader

Source§

type Error = Error

Source§

fn try_into_ctx( self, bytes: &mut [u8], ctx: Endian, ) -> Result<usize, Self::Error>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.