Struct object::read::pe::ImportTable

source ·
pub struct ImportTable<'data> {
    section_data: Bytes<'data>,
    section_address: u32,
    import_address: u32,
}
Expand description

Information for parsing a PE import table.

Returned by DataDirectories::import_table.

Fields§

§section_data: Bytes<'data>§section_address: u32§import_address: u32

Implementations§

source§

impl<'data> ImportTable<'data>

source

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

Create a new import table parser.

The import descriptors start at import_address. The size declared in the IMAGE_DIRECTORY_ENTRY_IMPORT data directory is ignored by the Windows loader, and so 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<ImportDescriptorIterator<'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::ImageImportDescriptor::name.

source

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

Return a list of thunks given its address.

This address may be from pe::ImageImportDescriptor::original_first_thunk or pe::ImageImportDescriptor::first_thunk.

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 ImportTable<'data>

source§

fn clone(&self) -> ImportTable<'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 ImportTable<'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 ImportTable<'data>

§

impl<'data> RefUnwindSafe for ImportTable<'data>

§

impl<'data> Send for ImportTable<'data>

§

impl<'data> Sync for ImportTable<'data>

§

impl<'data> Unpin for ImportTable<'data>

§

impl<'data> UnwindSafe for ImportTable<'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.