Struct object::read::pe::DelayLoadImportTable

source ·
pub struct DelayLoadImportTable<'data> { /* private fields */ }
Expand description

Information for parsing a PE delay-load import table.

Returned by DataDirectories::delay_load_import_table.

Implementations§

source§

impl<'data> DelayLoadImportTable<'data>

source

pub fn new( section_data: &'data [u8], section_address: u32, import_address: u32 ) -> Self

Create a new delay load import table parser.

The import descriptors start at import_address. This table works in the same way the import table does: descriptors will be parsed until a null entry.

section_data should be from the section containing import_address, and section_address should be the address of that section. Pointers within the descriptors and thunks may point to anywhere within the section data.

source

pub fn descriptors(&self) -> Result<DelayLoadDescriptorIterator<'data>>

Return an iterator for the import descriptors.

source

pub fn name(&self, address: u32) -> Result<&'data [u8]>

Return a library name given its address.

This address may be from pe::ImageDelayloadDescriptor::dll_name_rva.

source

pub fn thunks(&self, address: u32) -> Result<ImportThunkList<'data>>

Return a list of thunks given its address.

This address may be from the INT, i.e. from pe::ImageDelayloadDescriptor::import_name_table_rva.

Please note that others RVA values from pe::ImageDelayloadDescriptor are used by the delay loader at runtime to store values, and thus do not point inside the same section as the INT. Calling this function on those addresses will fail.

source

pub fn import<Pe: ImageNtHeaders>( &self, thunk: Pe::ImageThunkData ) -> Result<Import<'data>>

Parse a thunk.

source

pub fn hint_name(&self, address: u32) -> Result<(u16, &'data [u8])>

Return the hint and name at the given address.

This address may be from pe::ImageThunkData32 or pe::ImageThunkData64.

The hint is an index into the export name pointer table in the target library.

Trait Implementations§

source§

impl<'data> Clone for DelayLoadImportTable<'data>

source§

fn clone(&self) -> DelayLoadImportTable<'data>

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<'data> Debug for DelayLoadImportTable<'data>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'data> Freeze for DelayLoadImportTable<'data>

§

impl<'data> RefUnwindSafe for DelayLoadImportTable<'data>

§

impl<'data> Send for DelayLoadImportTable<'data>

§

impl<'data> Sync for DelayLoadImportTable<'data>

§

impl<'data> Unpin for DelayLoadImportTable<'data>

§

impl<'data> UnwindSafe for DelayLoadImportTable<'data>

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.