typedef struct _CM_KEY_CONTROL_BLOCK { unsigned long RefCount; unsigned long ExtFlags : 16; unsigned long PrivateAlloc : 1; unsigned long Delete : 1; unsigned long HiveUnloaded : 1; unsigned long Decommissioned : 1; unsigned long LockTablePresent : 1; unsigned long TotalLevels : 10; unsigned long DelayedDeref : 1; unsigned long DelayedClose : 1; unsigned long Parking : 1; union { CM_KEY_HASH KeyHash; struct { unsigned long ConvKey; CM_KEY_HASH *NextHash; HHIVE *KeyHive; unsigned long KeyCell; }; }; EX_PUSH_LOCK KcbPushlock; union { KTHREAD *Owner; long SharedCount; }; unsigned long SlotHint; CM_KEY_CONTROL_BLOCK *ParentKcb; CM_NAME_CONTROL_BLOCK *NameBlock; CM_KEY_SECURITY_CACHE *CachedSecurity; CACHED_CHILD_LIST ValueCache; union { CM_INDEX_HINT_BLOCK *IndexHint; unsigned long HashKey; unsigned long SubKeyCount; }; union { LIST_ENTRY KeyBodyListHead; LIST_ENTRY FreeListEntry; }; CM_KEY_BODY *KeyBodyArray[4]; LARGE_INTEGER KcbLastWriteTime; unsigned short KcbMaxNameLen; unsigned short KcbMaxValueNameLen; unsigned long KcbMaxValueDataLen; unsigned long KcbUserFlags : 4; unsigned long KcbVirtControlFlags : 4; unsigned long KcbDebug : 8; unsigned long Flags : 16; char *RealKeyName; LIST_ENTRY KCBUoWListHead; union { LIST_ENTRY DelayQueueEntry; volatile unsigned char *Stolen; }; CM_TRANS *TransKCBOwner; CM_INTENT_LOCK KCBLock; CM_INTENT_LOCK KeyLock; CHILD_LIST TransValueCache; CM_TRANS *TransValueListOwner; UNICODE_STRING *FullKCBName; } CM_KEY_CONTROL_BLOCK, *PCM_KEY_CONTROL_BLOCK;