pub struct WindowsHandleTable<'a, Driver>{ /* private fields */ }Expand description
A Windows handle table.
A handle table in Windows tracks handles to kernel objects for a specific process, allowing access control and management.
§Implementation Details
Corresponds to _HANDLE_TABLE.
Implementations§
Source§impl<'a, Driver> WindowsHandleTable<'a, Driver>
impl<'a, Driver> WindowsHandleTable<'a, Driver>
Sourcepub fn new(vmi: VmiState<'a, WindowsOs<Driver>>, va: Va) -> Self
pub fn new(vmi: VmiState<'a, WindowsOs<Driver>>, va: Va) -> Self
Creates a new Windows module object.
Sourcepub fn table_code(&self) -> Result<u64, VmiError>
pub fn table_code(&self) -> Result<u64, VmiError>
Sourcepub fn next_handle_needing_pool(&self) -> Result<u64, VmiError>
pub fn next_handle_needing_pool(&self) -> Result<u64, VmiError>
Sourcepub fn iter(
&self,
) -> Result<impl Iterator<Item = Result<(u64, WindowsHandleTableEntry<'a, Driver>), VmiError>> + use<'a, Driver>, VmiError>
pub fn iter( &self, ) -> Result<impl Iterator<Item = Result<(u64, WindowsHandleTableEntry<'a, Driver>), VmiError>> + use<'a, Driver>, VmiError>
Iterates over all handle table entries.
Returns an iterator over all handle table entries that have a valid object pointer. The iterator yields a tuple containing the handle value and the handle table entry.
§Implementation Details
The functionality is similar to the Windows kernel’s internal
ExpSnapShotHandleTables() function.
Sourcepub fn lookup(
&self,
handle: u64,
) -> Result<Option<WindowsHandleTableEntry<'a, Driver>>, VmiError>
pub fn lookup( &self, handle: u64, ) -> Result<Option<WindowsHandleTableEntry<'a, Driver>>, VmiError>
Performs a lookup in the handle table to find the address of a handle table entry.
Implements the multi-level handle table lookup algorithm used by Windows. Returns the virtual address of the handle table entry.
§Implementation Details
The functionality is similar to the Windows kernel’s internal
ExpLookupHandleTableEntry() function.
Trait Implementations§
Source§impl<Driver> VmiVa for WindowsHandleTable<'_, Driver>
impl<Driver> VmiVa for WindowsHandleTable<'_, Driver>
Auto Trait Implementations§
impl<'a, Driver> !Freeze for WindowsHandleTable<'a, Driver>
impl<'a, Driver> !RefUnwindSafe for WindowsHandleTable<'a, Driver>
impl<'a, Driver> !Send for WindowsHandleTable<'a, Driver>
impl<'a, Driver> !Sync for WindowsHandleTable<'a, Driver>
impl<'a, Driver> !UnwindSafe for WindowsHandleTable<'a, Driver>
impl<'a, Driver> Unpin for WindowsHandleTable<'a, Driver>
impl<'a, Driver> UnsafeUnpin for WindowsHandleTable<'a, Driver>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.