typedef struct _CMHIVE
{
    HHIVE Hive;
    void *FileHandles[6];
    LIST_ENTRY NotifyList;
    LIST_ENTRY HiveList;
    LIST_ENTRY PreloadedHiveList;
    EX_RUNDOWN_REF HiveRundown;
    LIST_ENTRY ParseCacheEntries;
    CM_KEY_HASH_TABLE_ENTRY *KcbCacheTable;
    unsigned long KcbCacheTableSize;
    unsigned long Identity;
    FAST_MUTEX *HiveLock;
    EX_PUSH_LOCK ViewLock;
    KTHREAD *ViewLockOwner;
    unsigned long ViewLockLast;
    unsigned long ViewUnLockLast;
    FAST_MUTEX *WriterLock;
    ERESOURCE *FlusherLock;
    RTL_BITMAP FlushDirtyVector;
    CMP_OFFSET_ARRAY *FlushOffsetArray;
    unsigned long FlushOffsetArrayCount;
    unsigned long FlushHiveTruncated;
    FAST_MUTEX *FlushLock2;
    EX_PUSH_LOCK SecurityLock;
    LIST_ENTRY MappedViewList;
    LIST_ENTRY PinnedViewList;
    LIST_ENTRY FlushedViewList;
    unsigned short MappedViewCount;
    unsigned short PinnedViewCount;
    unsigned long UseCount;
    unsigned long ViewsPerHive;
    FILE_OBJECT *FileObject;
    unsigned long LastShrinkHiveSize;
    LARGE_INTEGER ActualFileSize;
    UNICODE_STRING FileFullPath;
    UNICODE_STRING FileUserName;
    UNICODE_STRING HiveRootPath;
    unsigned long SecurityCount;
    unsigned long SecurityCacheSize;
    long SecurityHitHint;
    CM_KEY_SECURITY_CACHE_ENTRY *SecurityCache;
    LIST_ENTRY SecurityHash[64];
    unsigned long UnloadEventCount;
    KEVENT **UnloadEventArray;
    CM_KEY_CONTROL_BLOCK *RootKcb;
    unsigned char Frozen;
    CM_WORKITEM *UnloadWorkItem;
    CM_WORKITEM UnloadWorkItemHolder;
    unsigned char GrowOnlyMode;
    unsigned long GrowOffset;
    LIST_ENTRY KcbConvertListHead;
    LIST_ENTRY KnodeConvertListHead;
    CM_CELL_REMAP_BLOCK *CellRemapArray;
    unsigned long Flags;
    LIST_ENTRY TrustClassEntry;
    unsigned long FlushCount;
    CM_RM *CmRm;
    unsigned long CmRmInitFailPoint;
    long CmRmInitFailStatus;
    KTHREAD *CreatorOwner;
    KTHREAD *RundownThread;
    LARGE_INTEGER LastWriteTime;
} CMHIVE, *PCMHIVE;