//0x50 bytes (sizeof)
struct _CM_KEY_CONTROL_BLOCK
{
ULONG RefCount; //0x0
ULONG ExtFlags:8; //0x4
ULONG PrivateAlloc:1; //0x4
ULONG Delete:1; //0x4
ULONG DelayedCloseIndex:12; //0x4
ULONG TotalLevels:10; //0x4
union
{
struct _CM_KEY_HASH KeyHash; //0x8
struct
{
ULONG ConvKey; //0x8
struct _CM_KEY_HASH* NextHash; //0xc
struct _HHIVE* KeyHive; //0x10
ULONG KeyCell; //0x14
};
};
struct _CM_KEY_CONTROL_BLOCK* ParentKcb; //0x18
struct _CM_NAME_CONTROL_BLOCK* NameBlock; //0x1c
struct _CM_KEY_SECURITY_CACHE* CachedSecurity; //0x20
struct _CACHED_CHILD_LIST ValueCache; //0x24
union
{
struct _CM_INDEX_HINT_BLOCK* IndexHint; //0x2c
ULONG HashKey; //0x2c
ULONG SubKeyCount; //0x2c
};
union
{
struct _LIST_ENTRY KeyBodyListHead; //0x30
struct _LIST_ENTRY FreeListEntry; //0x30
};
union _LARGE_INTEGER KcbLastWriteTime; //0x38
USHORT KcbMaxNameLen; //0x40
USHORT KcbMaxValueNameLen; //0x42
ULONG KcbMaxValueDataLen; //0x44
ULONG KcbUserFlags:4; //0x48
ULONG KcbVirtControlFlags:4; //0x48
ULONG KcbDebug:8; //0x48
ULONG Flags:16; //0x48
};