pub struct Hive<B> where
    B: BinReaderExt,  { /* private fields */ }Expand description
Represents a registry hive file.
Because most offsets in a registry hive file are relative to the start of the hive bins data, this struct provides a own Seek and Read implementation, which can work directly with those kinds of offsets. You don’t know where the hive bins data starts, because Hive knows it (this information is stored in the hive base block). To parse data from within the hive bins data, use Hive as reader and use offsets read from the hive data structures.
The structure of hive files is documented at https://github.com/msuhanov/regf/blob/master/Windows%20registry%20file%20format%20specification.md#format-of-primary-files
Implementations
sourceimpl<B> Hive<B> where
    B: BinReaderExt, 
 
impl<B> Hive<B> where
    B: BinReaderExt, 
sourcepub fn new(data: B, parse_mode: HiveParseMode) -> BinResult<Self>
 
pub fn new(data: B, parse_mode: HiveParseMode) -> BinResult<Self>
creates a new Hive object. This includes parsing the HiveBaseBlock and determining the start of the hive bins data.
sourcepub fn enum_subkeys(
    &mut self, 
    callback: fn(_: &mut Self, _: &KeyNode) -> BinResult<()>
) -> BinResult<()>
 
pub fn enum_subkeys(
    &mut self, 
    callback: fn(_: &mut Self, _: &KeyNode) -> BinResult<()>
) -> BinResult<()>
Is this really needed???
sourcepub fn root_key_node(&mut self) -> BinResult<KeyNode>
 
pub fn root_key_node(&mut self) -> BinResult<KeyNode>
returns the root key of this registry hive file
sourcepub fn read_structure<T>(&mut self, offset: Offset) -> BinResult<T> where
    T: BinRead<Args = ()> + From<Cell<T, ()>>, 
 
pub fn read_structure<T>(&mut self, offset: Offset) -> BinResult<T> where
    T: BinRead<Args = ()> + From<Cell<T, ()>>, 
sourcepub fn data_offset(&self) -> &u32
 
pub fn data_offset(&self) -> &u32
returns the start of the hive bins data
sourcepub fn root_cell_offset(&self) -> Offset
 
pub fn root_cell_offset(&self) -> Offset
returns the offset of the root cell
pub fn find_root_celloffset(self) -> Option<Offset>
pub fn into_cell_iterator<C>(self, callback: C) -> CellIterator<B, C>ⓘNotable traits for CellIterator<B, C>impl<B, C> Iterator for CellIterator<B, C> where
    B: BinReaderExt,
    C: Fn(u64),     type Item = CellSelector; where
    C: Fn(u64), 
B: BinReaderExt,
C: Fn(u64), type Item = CellSelector;
pub fn data_size(&self) -> u32
Trait Implementations
sourceimpl<B> Read for Hive<B> where
    B: BinReaderExt, 
 
impl<B> Read for Hive<B> where
    B: BinReaderExt, 
sourcefn read(&mut self, buf: &mut [u8]) -> Result<usize>
 
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
1.36.0 · sourcefn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
 
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like read, except that it reads into a slice of buffers. Read more
sourcefn is_read_vectored(&self) -> bool
 
fn is_read_vectored(&self) -> bool
can_vector)Determines if this Reader has an efficient read_vectored
implementation. Read more
1.0.0 · sourcefn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
 
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
Read all bytes until EOF in this source, placing them into buf. Read more
1.0.0 · sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
 
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to buf. Read more
1.6.0 · sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
 
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill buf. Read more
sourcefn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
 
fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Pull some bytes from this source into the specified buffer. Read more
sourcefn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
 
fn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Read the exact number of bytes required to fill buf. Read more
1.0.0 · sourcefn by_ref(&mut self) -> &mut Self
 
fn by_ref(&mut self) -> &mut Self
Creates a “by reference” adaptor for this instance of Read. Read more
sourceimpl<B> Seek for Hive<B> where
    B: BinReaderExt, 
 
impl<B> Seek for Hive<B> where
    B: BinReaderExt, 
sourcefn seek(&mut self, pos: SeekFrom) -> Result<u64>
 
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream. Read more
1.55.0 · sourcefn rewind(&mut self) -> Result<(), Error>
 
fn rewind(&mut self) -> Result<(), Error>
Rewind to the beginning of a stream. Read more
Auto Trait Implementations
impl<B> RefUnwindSafe for Hive<B> where
    B: RefUnwindSafe, 
impl<B> Send for Hive<B> where
    B: Send, 
impl<B> Sync for Hive<B> where
    B: Sync, 
impl<B> Unpin for Hive<B> where
    B: Unpin, 
impl<B> UnwindSafe for Hive<B> where
    B: UnwindSafe, 
Blanket Implementations
sourceimpl<R> BinReaderExt for R where
    R: Read + Seek, 
 
impl<R> BinReaderExt for R where
    R: Read + Seek, 
sourcefn read_type<T>(&mut self, endian: Endian) -> Result<T, Error> where
    T: BinRead, 
 
fn read_type<T>(&mut self, endian: Endian) -> Result<T, Error> where
    T: BinRead, 
Read the given type from the reader using the given endianness.
sourcefn read_be<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
 
fn read_be<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
Read the given type from the reader with big endian byteorder
sourcefn read_le<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
 
fn read_le<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
Read the given type from the reader with little endian byteorder
sourcefn read_ne<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
 
fn read_ne<T>(&mut self) -> Result<T, Error> where
    T: BinRead, 
Read the given type from the reader with the native byteorder
sourcefn read_type_args<T>(
    &mut self, 
    endian: Endian, 
    args: <T as BinRead>::Args
) -> Result<T, Error> where
    T: BinRead, 
 
fn read_type_args<T>(
    &mut self, 
    endian: Endian, 
    args: <T as BinRead>::Args
) -> Result<T, Error> where
    T: BinRead, 
Read T from the reader with the given byte order and arguments.
sourcefn read_be_args<T>(&mut self, args: <T as BinRead>::Args) -> Result<T, Error> where
    T: BinRead, 
 
fn read_be_args<T>(&mut self, args: <T as BinRead>::Args) -> Result<T, Error> where
    T: BinRead, 
Read T from the reader, assuming big-endian byte order, using the
given arguments. Read more
sourceimpl<T> BorrowMut<T> for T where
    T: ?Sized, 
 
impl<T> BorrowMut<T> for T where
    T: ?Sized, 
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<R> ReadBytesExt for R where
    R: Read + ?Sized, 
impl<R> ReadBytesExt for R where
    R: Read + ?Sized, 
fn read_u8(&mut self) -> Result<u8, Error>
fn read_u8(&mut self) -> Result<u8, Error>
Reads an unsigned 8 bit integer from the underlying reader. Read more
fn read_i8(&mut self) -> Result<i8, Error>
fn read_i8(&mut self) -> Result<i8, Error>
Reads a signed 8 bit integer from the underlying reader. Read more
fn read_u16<T>(&mut self) -> Result<u16, Error> where
    T: ByteOrder, 
fn read_u16<T>(&mut self) -> Result<u16, Error> where
    T: ByteOrder, 
Reads an unsigned 16 bit integer from the underlying reader. Read more
fn read_i16<T>(&mut self) -> Result<i16, Error> where
    T: ByteOrder, 
fn read_i16<T>(&mut self) -> Result<i16, Error> where
    T: ByteOrder, 
Reads a signed 16 bit integer from the underlying reader. Read more
fn read_u24<T>(&mut self) -> Result<u32, Error> where
    T: ByteOrder, 
fn read_u24<T>(&mut self) -> Result<u32, Error> where
    T: ByteOrder, 
Reads an unsigned 24 bit integer from the underlying reader. Read more
fn read_i24<T>(&mut self) -> Result<i32, Error> where
    T: ByteOrder, 
fn read_i24<T>(&mut self) -> Result<i32, Error> where
    T: ByteOrder, 
Reads a signed 24 bit integer from the underlying reader. Read more
fn read_u32<T>(&mut self) -> Result<u32, Error> where
    T: ByteOrder, 
fn read_u32<T>(&mut self) -> Result<u32, Error> where
    T: ByteOrder, 
Reads an unsigned 32 bit integer from the underlying reader. Read more
fn read_i32<T>(&mut self) -> Result<i32, Error> where
    T: ByteOrder, 
fn read_i32<T>(&mut self) -> Result<i32, Error> where
    T: ByteOrder, 
Reads a signed 32 bit integer from the underlying reader. Read more
fn read_u48<T>(&mut self) -> Result<u64, Error> where
    T: ByteOrder, 
fn read_u48<T>(&mut self) -> Result<u64, Error> where
    T: ByteOrder, 
Reads an unsigned 48 bit integer from the underlying reader. Read more
fn read_i48<T>(&mut self) -> Result<i64, Error> where
    T: ByteOrder, 
fn read_i48<T>(&mut self) -> Result<i64, Error> where
    T: ByteOrder, 
Reads a signed 48 bit integer from the underlying reader. Read more
fn read_u64<T>(&mut self) -> Result<u64, Error> where
    T: ByteOrder, 
fn read_u64<T>(&mut self) -> Result<u64, Error> where
    T: ByteOrder, 
Reads an unsigned 64 bit integer from the underlying reader. Read more
fn read_i64<T>(&mut self) -> Result<i64, Error> where
    T: ByteOrder, 
fn read_i64<T>(&mut self) -> Result<i64, Error> where
    T: ByteOrder, 
Reads a signed 64 bit integer from the underlying reader. Read more
fn read_u128<T>(&mut self) -> Result<u128, Error> where
    T: ByteOrder, 
fn read_u128<T>(&mut self) -> Result<u128, Error> where
    T: ByteOrder, 
Reads an unsigned 128 bit integer from the underlying reader. Read more
fn read_i128<T>(&mut self) -> Result<i128, Error> where
    T: ByteOrder, 
fn read_i128<T>(&mut self) -> Result<i128, Error> where
    T: ByteOrder, 
Reads a signed 128 bit integer from the underlying reader. Read more
fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error> where
    T: ByteOrder, 
fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error> where
    T: ByteOrder, 
Reads an unsigned n-bytes integer from the underlying reader. Read more
fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error> where
    T: ByteOrder, 
fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error> where
    T: ByteOrder, 
Reads a signed n-bytes integer from the underlying reader. Read more
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
    T: ByteOrder, 
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error> where
    T: ByteOrder, 
Reads an unsigned n-bytes integer from the underlying reader.
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
    T: ByteOrder, 
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error> where
    T: ByteOrder, 
Reads a signed n-bytes integer from the underlying reader.
fn read_f32<T>(&mut self) -> Result<f32, Error> where
    T: ByteOrder, 
fn read_f32<T>(&mut self) -> Result<f32, Error> where
    T: ByteOrder, 
Reads a IEEE754 single-precision (4 bytes) floating point number from the underlying reader. Read more
fn read_f64<T>(&mut self) -> Result<f64, Error> where
    T: ByteOrder, 
fn read_f64<T>(&mut self) -> Result<f64, Error> where
    T: ByteOrder, 
Reads a IEEE754 double-precision (8 bytes) floating point number from the underlying reader. Read more
fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of unsigned 16 bit integers from the underlying reader. Read more
fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of unsigned 32 bit integers from the underlying reader. Read more
fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of unsigned 64 bit integers from the underlying reader. Read more
fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of unsigned 128 bit integers from the underlying reader. Read more
fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
Reads a sequence of signed 8 bit integers from the underlying reader. Read more
fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of signed 16 bit integers from the underlying reader. Read more
fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of signed 32 bit integers from the underlying reader. Read more
fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of signed 64 bit integers from the underlying reader. Read more
fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of signed 128 bit integers from the underlying reader. Read more
fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
    T: ByteOrder, 
Reads a sequence of IEEE754 single-precision (4 bytes) floating point numbers from the underlying reader. Read more
fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
    T: ByteOrder, 
fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error> where
    T: ByteOrder, 
please use read_f32_into instead
DEPRECATED. Read more