pub trait VirtualTranslate3: Clone + Copy + Send {
    // Required methods
    fn virt_to_phys_iter<T: PhysicalMemory + ?Sized, B: SplitAtIndex, VI: Iterator<Item = CTup3<Address, Address, B>>>(
        &self,
        mem: &mut T,
        addrs: VI,
        out: &mut VtopOutputCallback<'_, B>,
        out_fail: &mut VtopFailureCallback<'_, B>,
        tmp_buf: &mut [MaybeUninit<u8>]
    );
    fn translation_table_id(&self, address: Address) -> umem;
    fn arch(&self) -> ArchitectureObj;

    // Provided method
    fn virt_to_phys<T: PhysicalMemory>(
        &self,
        mem: &mut T,
        addr: Address
    ) -> Result<PhysicalAddress> { ... }
}
Expand description

Translates virtual memory to physical using internal translation base (usually a process’ dtb)

This trait abstracts virtual address translation for a single virtual memory scope. On x86 architectures, it is a single Address - a CR3 register. But other architectures may use multiple translation bases, or use a completely different translation mechanism (MIPS).

Required Methods§

source

fn virt_to_phys_iter<T: PhysicalMemory + ?Sized, B: SplitAtIndex, VI: Iterator<Item = CTup3<Address, Address, B>>>( &self, mem: &mut T, addrs: VI, out: &mut VtopOutputCallback<'_, B>, out_fail: &mut VtopFailureCallback<'_, B>, tmp_buf: &mut [MaybeUninit<u8>] )

source

fn translation_table_id(&self, address: Address) -> umem

source

fn arch(&self) -> ArchitectureObj

Provided Methods§

source

fn virt_to_phys<T: PhysicalMemory>( &self, mem: &mut T, addr: Address ) -> Result<PhysicalAddress>

Translate a single virtual address

Examples
use memflow::mem::VirtualTranslate3;
use memflow::architecture::x86::x64;
use memflow::types::{size, umem};

let arch = x64::ARCH;

// Translate a mapped address
let res = translator.virt_to_phys(
    &mut mem,
    virtual_base,
);

assert!(res.is_ok());

// Translate unmapped address
let res = translator.virt_to_phys(
    &mut mem,
    virtual_base - 1,
);

assert!(res.is_err());

Object Safety§

This trait is not object safe.

Implementors§