struct _HHIVE { unsigned long Signature;/* 0x0 4 */ /* 4 bytes padding */ struct _CELL_DATA* (*GetCellRoutine)(struct _HHIVE*, unsigned long, struct _HV_GET_CELL_CONTEXT*);/* 0x8 8 */ void (*ReleaseCellRoutine)(struct _HHIVE*, struct _HV_GET_CELL_CONTEXT*);/* 0x10 8 */ void* (*Allocate)(unsigned long, unsigned char, unsigned long);/* 0x18 8 */ void (*Free)(void*, unsigned long);/* 0x20 8 */ long (*FileWrite)(struct _HHIVE*, unsigned long, struct CMP_OFFSET_ARRAY*, unsigned long, unsigned long);/* 0x28 8 */ long (*FileRead)(struct _HHIVE*, unsigned long, unsigned long, void*, unsigned long);/* 0x30 8 */ void* HiveLoadFailure;/* 0x38 8 */ /* ── cacheline 1 boundary (64 bytes) ── */ struct _HBASE_BLOCK* BaseBlock;/* 0x40 8 */ struct _CMSI_RW_LOCK FlusherLock;/* 0x48 8 */ struct _CMSI_RW_LOCK WriterLock;/* 0x50 8 */ struct _RTL_BITMAP DirtyVector;/* 0x58 16 */ unsigned long DirtyCount;/* 0x68 4 */ unsigned long DirtyAlloc;/* 0x6c 4 */ struct _RTL_BITMAP UnreconciledVector;/* 0x70 16 */ /* ── cacheline 2 boundary (128 bytes) ── */ unsigned long UnreconciledCount;/* 0x80 4 */ unsigned long BaseBlockAlloc;/* 0x84 4 */ unsigned long Cluster;/* 0x88 4 */ unsigned char Flat : 1;/* 0x8c:0 1 */ unsigned char ReadOnly : 1;/* 0x8c:1 1 */ unsigned char Reserved : 6;/* 0x8c:2 1 */ unsigned char DirtyFlag;/* 0x8d 1 */ /* 2 bytes padding */ unsigned long HvBinHeadersUse;/* 0x90 4 */ unsigned long HvFreeCellsUse;/* 0x94 4 */ unsigned long HvUsedCellsUse;/* 0x98 4 */ unsigned long CmUsedCellsUse;/* 0x9c 4 */ unsigned long HiveFlags;/* 0xa0 4 */ unsigned long FlusherFlags;/* 0xa4 4 */ unsigned long CurrentLog;/* 0xa8 4 */ unsigned long CurrentLogSequence;/* 0xac 4 */ unsigned long CurrentLogMinimumSequence;/* 0xb0 4 */ unsigned long CurrentLogOffset;/* 0xb4 4 */ unsigned long MinimumLogSequence;/* 0xb8 4 */ unsigned long LogFileSizeCap;/* 0xbc 4 */ /* ── cacheline 3 boundary (192 bytes) ── */ unsigned char LogDataPresent[2];/* 0xc0 2 */ unsigned char PrimaryFileValid;/* 0xc2 1 */ unsigned char BaseBlockDirty;/* 0xc3 1 */ /* 4 bytes padding */ union _LARGE_INTEGER LastLogSwapTime;/* 0xc8 8 */ union { struct { unsigned short FirstLogFile : 3;/* 0xd0:0 2 */ unsigned short SecondLogFile : 3;/* 0xd0:3 2 */ unsigned short HeaderRecovered : 1;/* 0xd0:6 2 */ unsigned short LegacyRecoveryIndicated : 1;/* 0xd0:7 2 */ unsigned short RecoveryInformationReserved : 8;/* 0xd0:8 2 */ };/* 0xd0 2 */ unsigned short RecoveryInformation;/* 0xd0 2 */ };/* 0xd0 2 */ unsigned char LogEntriesRecovered[2];/* 0xd2 2 */ union { unsigned char ReorganizeHiveFlags;/* 0xd4 1 */ struct { unsigned char ReorganizeHiveInProgress : 1;/* 0xd4:0 1 */ unsigned char ReorganizeHivePerformed : 1;/* 0xd4:1 1 */ unsigned char ReorganizeHiveSkipped : 1;/* 0xd4:2 1 */ unsigned char ReorganizeHiveFailed : 1;/* 0xd4:3 1 */ };/* 0xd4 1 */ };/* 0xd4 1 */ /* 3 bytes padding */ unsigned long RefreshCount;/* 0xd8 4 */ unsigned long StorageTypeCount;/* 0xdc 4 */ unsigned long Version;/* 0xe0 4 */ /* 4 bytes padding */ struct _HVP_VIEW_MAP ViewMap;/* 0xe8 56 */ /* ── cacheline 4 boundary (256 bytes) ── */ struct _DUAL Storage[2];/* 0x120 1264 */};size 1552 (0x610)55 members5 holes (17 bytes)padding 025 cachelines
Used in (5)