Struct goblin::pe::optional_header::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 copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

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

§

type Error = Error

source§

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

source§

impl TryIntoCtx<Endian> for OptionalHeader

§

type Error = Error

source§

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

source§

impl Copy for OptionalHeader

source§

impl StructuralPartialEq for OptionalHeader

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> 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,

§

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>,

§

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>,

§

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.