pub enum PageReadError {
NotPresent {
gva: Gva,
which_pxe: PxeKind,
},
NotInDump {
gva: Option<(Gva, Option<PxeKind>)>,
gpa: Gpa,
},
}Expand description
Represent the fundamental reason a single page read can fail.
Variants§
NotPresent
Virtual address translation failed because a page table entry is not present (it exists in the dump but is marked as not present).
NotInDump
A physical page is missing from the dump.
Trait Implementations§
Source§impl Clone for PageReadError
impl Clone for PageReadError
Source§fn clone(&self) -> PageReadError
fn clone(&self) -> PageReadError
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PageReadError
impl Debug for PageReadError
Source§impl Display for PageReadError
Memory errors that can occur during memory reads.
impl Display for PageReadError
Memory errors that can occur during memory reads.
There are several failure conditions that can happen while trying to read virtual (or physical) memory out of a crash-dump that might not be obvious.
For example, consider reading two 4K pages from the virtual address
0x1337_000; it can fail because:
- The virtual address (the first 4K page) isn’t present in the address space
at the
PxeKind::Pdelevel:PageReadError::NotPresent { gva: 0x1337_000, which_pxe: PxeKind::Pde }) - The
PxeKind::Pdethat needs reading as part of the address translation (of the first page) isn’t part of the crash-dump: PageReadError::NotInDump { gva: Some((0x1337_000, PxeKind::Pde)), gpa: .. })` - The physical page backing that virtual address isn’t included in the
crash-dump:
Error::PageRead(PageReadError::NotInDump { gva: Some((0x1337_000, None)), gpa: .. }) - Reading the second (and only the second) page failed because of any of the
previous reasons:
PartialRead { expected_amount: 8_192, actual_amount: 4_096, reason: PageReadError::.. }
Similarly, for physical memory reads starting at 0x1337_000:
- The physical page isn’t in the crash-dump:
MemoryError::PageRead(PageReadError::NotInDump { gpa: 0x1337_000 }) - Reading the second page failed:
PartialRead { expected_amount: 8_192, actual_amount: 4_096, reason: PageReadError::NotInDump { gva: None, gpa: 0x1338_000 } }
Source§impl Error for PageReadError
impl Error for PageReadError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Source§impl From<PageReadError> for Error
impl From<PageReadError> for Error
Source§fn from(value: PageReadError) -> Self
fn from(value: PageReadError) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for PageReadError
impl RefUnwindSafe for PageReadError
impl Send for PageReadError
impl Sync for PageReadError
impl Unpin for PageReadError
impl UnwindSafe for PageReadError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more