Memory

Struct Memory 

Source
pub struct Memory<'a> {
    pub range: Range<u64>,
    pub allocation_base: u64,
    pub allocation_protect: u32,
    pub state: u32,
    pub protect: u32,
    pub type_: u32,
    pub data: &'a [u8],
}
Expand description

Represents a memory region in a minidump file, providing metadata about its state, protection level, allocation base, and type.

Fields§

§range: Range<u64>

The range of memory addresses for this region.

§allocation_base: u64

The base address where this memory allocation begins.

§allocation_protect: u32

The protection attributes applied at the time of memory allocation.

§state: u32

The current state of the memory region, indicating if it’s committed, reserved, or free (e.g., MEM_COMMIT or MEM_FREE).

§protect: u32

The protection level of the memory region (e.g., PAGE_READWRITE).

§type_: u32

The type of memory region (e.g., private, mapped, or image).

§data: &'a [u8]

The raw bytes of the memory region, as extracted from the minidump file. This data represents the actual content of the memory in this region and can be used for further analysis or reconstruction.

Implementations§

Source§

impl<'a> Memory<'a>

Source

pub fn state(&self) -> &str

Returns a textual description of the current memory state.

The possible states are:

  • MEM_COMMIT (0x1000): Memory is committed and backed by physical storage or the page file.
  • MEM_RESERVE (0x2000): Memory is reserved but not yet committed.
  • MEM_FREE (0x10000): Memory is free and available for allocation.
  • MEM_RESET (0x8000): Memory has been reset to a clean state.
  • MEM_TOP_DOWN (0x100000): Allocation was made top-down from high memory addresses.
§Returns

Describing the state of the memory.

Source

pub fn type_memory(&self) -> &str

Returns a textual description of the memory type.

The possible types are:

  • MEM_PRIVATE (0x20000): Memory is private to the process.
  • MEM_MAPPED (0x40000): Memory is mapped to a file.
  • MEM_IMAGE (0x1000000): Memory is associated with an executable image.
§Returns

Describing the type of the memory region.

Source

pub fn start_addr(&self) -> u64

Returns the starting address of the memory region.

§Returns

The starting address of the memory region.

Source

pub fn end_addr(&self) -> u64

Returns the ending address of the memory region (inclusive).

§Returns

The ending address of the memory region.

Source

pub fn len(&self) -> u64

Returns the size of the memory region in bytes.

§Returns

The size of the memory region.

Source

pub fn is_empty(&self) -> bool

Returns true if the memory region has zero size.

Trait Implementations§

Source§

impl<'a> Clone for Memory<'a>

Source§

fn clone(&self) -> Memory<'a>

Returns a duplicate 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<'a> Debug for Memory<'a>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for Memory<'a>

Source§

fn default() -> Memory<'a>

Returns the “default value” for a type. Read more
Source§

impl<'a> PartialEq for Memory<'a>

Source§

fn eq(&self, other: &Memory<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> Eq for Memory<'a>

Source§

impl<'a> StructuralPartialEq for Memory<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Memory<'a>

§

impl<'a> RefUnwindSafe for Memory<'a>

§

impl<'a> Send for Memory<'a>

§

impl<'a> Sync for Memory<'a>

§

impl<'a> Unpin for Memory<'a>

§

impl<'a> UnwindSafe for Memory<'a>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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,

Source§

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>,

Source§

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>,

Source§

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.