//0xdd8 bytes (sizeof)
struct _CMHIVE
{
struct _HHIVE Hive; //0x0
VOID* FileHandles[6]; //0x580
struct _LIST_ENTRY NotifyList; //0x5b0
struct _LIST_ENTRY HiveList; //0x5c0
struct _LIST_ENTRY PreloadedHiveList; //0x5d0
struct _EX_RUNDOWN_REF HiveRundown; //0x5e0
struct _LIST_ENTRY ParseCacheEntries; //0x5e8
struct _CM_KEY_HASH_TABLE_ENTRY* KcbCacheTable; //0x5f8
ULONG KcbCacheTableSize; //0x600
struct _CM_KEY_HASH_TABLE_ENTRY* DeletedKcbTable; //0x608
ULONG DeletedKcbTableSize; //0x610
ULONG Identity; //0x614
struct _FAST_MUTEX* HiveLock; //0x618
struct _FAST_MUTEX* WriterLock; //0x620
struct _ERESOURCE* FlusherLock; //0x628
struct _RTL_BITMAP FlushDirtyVector; //0x630
struct CMP_OFFSET_ARRAY* FlushOffsetArray; //0x640
ULONG FlushOffsetArrayCount; //0x648
struct _HBASE_BLOCK* FlushBaseBlock; //0x650
ULONG FlushHiveTruncated; //0x658
struct _EX_PUSH_LOCK SecurityLock; //0x660
ULONG UseCount; //0x668
ULONG LastShrinkHiveSize; //0x66c
union _LARGE_INTEGER ActualFileSize; //0x670
union _LARGE_INTEGER LogFileSizes[2]; //0x678
struct _UNICODE_STRING FileFullPath; //0x688
struct _UNICODE_STRING FileUserName; //0x698
struct _UNICODE_STRING HiveRootPath; //0x6a8
ULONG SecurityCount; //0x6b8
ULONG SecurityCacheSize; //0x6bc
LONG SecurityHitHint; //0x6c0
struct _CM_KEY_SECURITY_CACHE_ENTRY* SecurityCache; //0x6c8
struct _LIST_ENTRY SecurityHash[64]; //0x6d0
ULONG UnloadEventCount; //0xad0
struct _KEVENT** UnloadEventArray; //0xad8
struct _CM_KEY_CONTROL_BLOCK* RootKcb; //0xae0
UCHAR Frozen; //0xae8
struct _CM_WORKITEM* UnloadWorkItem; //0xaf0
struct _CM_WORKITEM UnloadWorkItemHolder; //0xaf8
UCHAR GrowOnlyMode; //0xb20
ULONG GrowOffset; //0xb24
struct _LIST_ENTRY KcbConvertListHead; //0xb28
struct _LIST_ENTRY KnodeConvertListHead; //0xb38
struct _CM_CELL_REMAP_BLOCK* CellRemapArray; //0xb48
ULONG Flags; //0xb50
struct _LIST_ENTRY TrustClassEntry; //0xb58
ULONGLONG DirtyTime; //0xb68
struct _CM_RM* CmRm; //0xb70
ULONG CmRmInitFailPoint; //0xb78
LONG CmRmInitFailStatus; //0xb7c
struct _KTHREAD* CreatorOwner; //0xb80
struct _KTHREAD* RundownThread; //0xb88
struct _ETHREAD* ActiveFlushThread; //0xb90
struct _EX_PUSH_LOCK FlushBoostLock; //0xb98
union _LARGE_INTEGER LastWriteTime; //0xba0
volatile LONG ReferenceCount; //0xba8
union
{
ULONG FlushFlags; //0xbac
struct
{
ULONG FlushActive:1; //0xbac
ULONG DiskFileBad:1; //0xbac
ULONG FlushBoosted:1; //0xbac
ULONG PrimaryWritePending:1; //0xbac
ULONG PriorPurgeComplete:1; //0xbac
};
};
struct _HIVE_WAIT_PACKET* FlushWaitList; //0xbb0
LONG UnloadHistoryIndex; //0xbb8
ULONG UnloadHistory[128]; //0xbbc
ULONG BootStart; //0xdbc
ULONG UnaccessedStart; //0xdc0
ULONG UnaccessedEnd; //0xdc4
ULONG LoadedKeyCount; //0xdc8
volatile ULONG HandleClosePending; //0xdcc
struct _EX_PUSH_LOCK HandleClosePendingEvent; //0xdd0
};