pub struct WindowsKeyIndex<'a, Driver>{ /* private fields */ }os-windows only.Expand description
A subkey index cell of a registry key.
The Configuration Manager walks _CM_KEY_INDEX cells to enumerate a
_CM_KEY_NODE’s children. Four variants share the same shape and are
distinguished by the signature. il, fl, and hl are leaf lists.
ir is a root index list whose entries point at leaf lists.
§Implementation Details
Corresponds to _CM_KEY_INDEX.
Implementations§
Source§impl<'a, Driver> WindowsKeyIndex<'a, Driver>
impl<'a, Driver> WindowsKeyIndex<'a, Driver>
Sourcepub const INDEX_LEAF_SIGNATURE: u16 = 0x696c
pub const INDEX_LEAF_SIGNATURE: u16 = 0x696c
Signature of a plain leaf list (il).
Each entry is a single HCELL_INDEX.
§Implementation Details
Corresponds to CM_KEY_INDEX_LEAF.
Sourcepub const FAST_LEAF_SIGNATURE: u16 = 0x666c
pub const FAST_LEAF_SIGNATURE: u16 = 0x666c
Signature of a fast leaf list (fl).
Each entry pairs an HCELL_INDEX with a 4-byte name hint.
§Implementation Details
Corresponds to CM_KEY_FAST_LEAF.
Sourcepub const HASH_LEAF_SIGNATURE: u16 = 0x686c
pub const HASH_LEAF_SIGNATURE: u16 = 0x686c
Signature of a hash leaf list (hl).
Each entry pairs an HCELL_INDEX with an NT name hash.
§Implementation Details
Corresponds to CM_KEY_HASH_LEAF.
Sourcepub const INDEX_ROOT_SIGNATURE: u16 = 0x6972
pub const INDEX_ROOT_SIGNATURE: u16 = 0x6972
Signature of a root index list (ir).
Each entry is an HCELL_INDEX pointing to a leaf list.
§Implementation Details
Corresponds to CM_KEY_INDEX_ROOT.
Sourcepub fn new(
vmi: VmiState<'a, WindowsOs<Driver>>,
va: Va,
) -> WindowsKeyIndex<'a, Driver>
pub fn new( vmi: VmiState<'a, WindowsOs<Driver>>, va: Va, ) -> WindowsKeyIndex<'a, Driver>
Creates a new key index.
Sourcepub fn count(&self) -> Result<u16, VmiError>
pub fn count(&self) -> Result<u16, VmiError>
Returns the number of entries in the list.
§Implementation Details
Corresponds to _CM_KEY_INDEX.Count.
Sourcepub fn list(&self) -> Result<Va, VmiError>
pub fn list(&self) -> Result<Va, VmiError>
Returns the address of the first entry in the index.
§Implementation Details
Corresponds to _CM_KEY_INDEX.List.
Sourcepub fn entry_size(&self) -> Result<u64, VmiError>
pub fn entry_size(&self) -> Result<u64, VmiError>
Returns the byte size of one entry.
4 bytes for il and ir. 8 bytes for fl and hl, which pair
each HCELL_INDEX with a 4-byte name hint or hash.
Reads the signature. Prefer entry_size_for when the signature is
already in scope.
Sourcepub fn entry_size_for(signature: u16) -> Result<u64, VmiError>
pub fn entry_size_for(signature: u16) -> Result<u64, VmiError>
Returns the byte size of one entry for a given index signature.
Variant of entry_size that takes the signature directly, avoiding
the read.
Trait Implementations§
Source§impl<Driver> VmiVa for WindowsKeyIndex<'_, Driver>
impl<Driver> VmiVa for WindowsKeyIndex<'_, Driver>
Auto Trait Implementations§
impl<'a, Driver> !RefUnwindSafe for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> !Send for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> !Sync for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> !UnwindSafe for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> Freeze for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> Unpin for WindowsKeyIndex<'a, Driver>
impl<'a, Driver> UnsafeUnpin for WindowsKeyIndex<'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.