13 #define HINIT_CREATE 0 14 #define HINIT_MEMORY 1 16 #define HINIT_MEMORY_INPLACE 3 18 #define HINIT_MAPFILE 5 23 #define HIVE_VOLATILE 1 24 #define HIVE_NOLAZYFLUSH 2 25 #define HIVE_HAS_BEEN_REPLACED 4 26 #define HIVE_HAS_BEEN_FREED 8 27 #define HIVE_UNKNOWN 0x10 28 #define HIVE_IS_UNLOADING 0x20 33 #define HFILE_TYPE_PRIMARY 0 34 #define HFILE_TYPE_LOG 1 35 #define HFILE_TYPE_EXTERNAL 2 36 #define HFILE_TYPE_MAX 3 41 #define HBLOCK_SIZE 0x1000 42 #define HSECTOR_SIZE 0x200 43 #define HSECTOR_COUNT 8 45 #define HV_LOG_HEADER_SIZE FIELD_OFFSET(HBASE_BLOCK, Reserved2) 50 #define HV_HHIVE_SIGNATURE 0xbee0bee0 51 #define HV_HBLOCK_SIGNATURE 0x66676572 // "regf" 52 #define HV_HBIN_SIGNATURE 0x6e696268 // "hbin" 59 #define HSYS_WHISTLER_BETA1 4 60 #define HSYS_WHISTLER 5 61 #define HSYS_MINOR_SUPPORTED HSYS_WHISTLER 66 #define HBASE_FORMAT_MEMORY 1 85 #define HCELL_NIL MAXULONG 86 #define HCELL_CACHED 1 88 #define HCELL_TYPE_MASK 0x80000000 89 #define HCELL_BLOCK_MASK 0x7ffff000 90 #define HCELL_OFFSET_MASK 0x00000fff 91 #define HCELL_TYPE_SHIFT 31 92 #define HCELL_BLOCK_SHIFT 12 93 #define HCELL_OFFSET_SHIFT 0 95 #define HvGetCellType(Cell) \ 96 ((ULONG)(((Cell) & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT)) 97 #define HvGetCellBlock(Cell) \ 98 ((ULONG)(((Cell) & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT)) 106 #include <pshpack1.h> 114 #define HIVE_FILENAME_MAXLEN 31 224 struct _HHIVE *RegistryHive,
233 struct _HHIVE *RegistryHive,
242 struct _HHIVE *RegistryHive,
250 struct _HHIVE *RegistryHive,
300 #if (NTDDI_VERSION >= NTDDI_WIN7) 311 #if (NTDDI_VERSION < NTDDI_VISTA) // NTDDI_LONGHORN 315 #if (NTDDI_VERSION >= NTDDI_VISTA) // NTDDI_LONGHORN 322 #if (NTDDI_VERSION < NTDDI_VISTA) // NTDDI_LONGHORN 334 #define IsFreeCell(Cell) ((Cell)->Size >= 0) 335 #define IsUsedCell(Cell) ((Cell)->Size < 0)
struct _HMAP_DIRECTORY HMAP_DIRECTORY
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN(CMAPI * PFILE_SET_SIZE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, ULONG FileSize, ULONG OldfileSize)
IN BOOLEAN OUT PSTR Buffer
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
struct _HMAP_ENTRY HMAP_ENTRY
IN PVOID IN PVOID IN USHORT IN USHORT Size
PGET_CELL_ROUTINE GetCellRoutine
PALLOCATE_ROUTINE Allocate
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
struct _CELL_DATA *CMAPI * PGET_CELL_ROUTINE(struct _HHIVE *Hive, HCELL_INDEX Cell)
struct _HBASE_BLOCK * PHBASE_BLOCK
BOOLEAN(CMAPI * PFILE_READ_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PULONG FileOffset, PVOID Buffer, SIZE_T BufferLength)
BOOLEAN(CMAPI * PFILE_FLUSH_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PLARGE_INTEGER FileOffset, ULONG Length)
DUAL Storage[HTYPE_COUNT]
struct _HMAP_TABLE HMAP_TABLE
PFILE_SET_SIZE_ROUTINE FileSetSize
BOOLEAN(CMAPI * PFILE_WRITE_ROUTINE)(struct _HHIVE *RegistryHive, ULONG FileType, PULONG FileOffset, PVOID Buffer, SIZE_T BufferLength)
VOID(CMAPI * PFREE_ROUTINE)(PVOID Ptr, ULONG Quota)
VOID(CMAPI * PRELEASE_CELL_ROUTINE)(struct _HHIVE *Hive, HCELL_INDEX Cell)
struct _HMAP_TABLE * PHMAP_TABLE
#define HIVE_FILENAME_MAXLEN
PFILE_WRITE_ROUTINE FileWrite
HCELL_INDEX FreeDisplay[24]
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
C_ASSERT(sizeof(HBASE_BLOCK)==HBLOCK_SIZE)
_In_ PFCB _In_ LONGLONG FileOffset
PFILE_FLUSH_ROUTINE FileFlush
struct _HMAP_ENTRY * PHMAP_ENTRY
PVOID(CMAPI * PALLOCATE_ROUTINE)(SIZE_T Size, BOOLEAN Paged, ULONG Tag)
struct _HMAP_DIRECTORY * PHMAP_DIRECTORY
base for all directory entries
struct _HBASE_BLOCK HBASE_BLOCK
PRELEASE_CELL_ROUTINE ReleaseCellRoutine
struct _CM_VIEW_OF_FILE * CmView
PFILE_READ_ROUTINE FileRead