[][src]Struct process_vm_io::ProcessVirtualMemoryIO

#[non_exhaustive]pub struct ProcessVirtualMemoryIO { /* fields omitted */ }

Input/Output object transferring data to/from the virtual memory contents of a particular process.

For better performance, consider doing buffered I/O based on the standard BufReader and BufWriter.

Implementations

impl ProcessVirtualMemoryIO[src]

pub unsafe fn new(process_id: u32, initial_address: u64) -> Result<Self, Error>[src]

Create a new object to perform input/output of data from/to the virtual memory contents of the process identified by process_id.

The initial virtual memory address where data transfers initially happen is specified by initial_address. Inquiring the system for the layout of the process address space can help specify this value. On Linux, the file /proc/[process_id]/maps can help with this.

Common errors

If the specified process does not exist, or this process does not have the right to send signals to the specified process, then an error is returned.

Safety

Writing to the virtual memory of a process is a potentially unsafe operation because it may introduce memory unsafety in that process, and may lead to unexpected states in that process. This is even more dangerous when the target process is the currently running process.

Running processes

Apart from the process identifier, there is no strong link between the specified process and this ProcessVirtualMemoryIO instance. If the specified process runs and terminates, then further I/O operations involving this instance may fail. If the process identifier of the dead process is reused by another process, then I/O may successfully continue with the new process, which might not be the desired behavior.

pub fn process_id(&self) -> u32[src]

Return the process identifier of the target process.

Trait Implementations

impl Debug for ProcessVirtualMemoryIO[src]

impl Read for ProcessVirtualMemoryIO[src]

impl Seek for ProcessVirtualMemoryIO[src]

fn seek(&mut self, pos: SeekFrom) -> Result<u64>[src]

Seek to an address in the virtual memory address space of the associated process.

If the seek operation completed successfully, this method returns the new position from the start of the stream.

The target address need not be readable/writable or even mapped. Seeking beyond the address space size puts the cursor after the end of the address space.

impl Write for ProcessVirtualMemoryIO[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.