pub unsafe fn read_memory<T: Copy>(
address: *const T,
) -> Result<T, ReadMemoryError>
Expand description
Reads a value from the specified memory address with the specified type.
§Safety
This function is unsafe
because it dereferences a raw pointer, which could lead to undefined behavior if the pointer is invalid.
§Type Parameters
T
: The type of value to read. It must implement theCopy
trait.
§Parameters
address
: A raw pointer to the memory location from which to read.
§Returns
Ok(T)
: The value read from the specified memory address if successful.Err(ReadMemoryError)
: Returns an error if the pointer is null, misaligned, or the read operation fails.
§Errors
ReadMemoryError::NullPointer
: If the provided pointer is null.ReadMemoryError::InvalidAlignment
: If the provided pointer is not correctly aligned for the typeT
.ReadMemoryError::FailedToChangeProtection
: If changing the memory protection fails.ReadMemoryError::FailedToRestoreProtection
: If restoring the memory protection fails.ReadMemoryError::InvalidAccess
: If there is an error during the read operation.
§Example
use verity_memory::ops::read;
let address: *const i32 = 0x12345678 as *const i32;
let result = unsafe { read::read_memory(address) };
match result {
Ok(value) => println!("Value read: {}", value),
Err(e) => println!("Failed to read memory: {:?}", e),
}