//0x40 bytes (sizeof)
struct _CM_KCB_UOW
{
struct _LIST_ENTRY TransactionListEntry; //0x0
struct _CM_INTENT_LOCK* KCBLock; //0x8
struct _CM_INTENT_LOCK* KeyLock; //0xc
struct _LIST_ENTRY KCBListEntry; //0x10
struct _CM_KEY_CONTROL_BLOCK* KeyControlBlock; //0x18
struct _CM_TRANS* Transaction; //0x1c
ULONG UoWState; //0x20
enum UoWActionType ActionType; //0x24
enum HSTORAGE_TYPE StorageType; //0x28
struct _CM_KCB_UOW* ParentUoW; //0x2c
union
{
struct _CM_KEY_CONTROL_BLOCK* ChildKCB; //0x30
ULONG VolatileKeyCell; //0x30
struct
{
ULONG OldValueCell; //0x30
ULONG NewValueCell; //0x34
};
ULONG UserFlags; //0x30
union _LARGE_INTEGER LastWriteTime; //0x30
ULONG TxSecurityCell; //0x30
struct
{
struct _CM_KEY_CONTROL_BLOCK* OldChildKCB; //0x30
struct _CM_KEY_CONTROL_BLOCK* NewChildKCB; //0x34
};
struct
{
struct _CM_KEY_CONTROL_BLOCK* OtherChildKCB; //0x30
ULONG ThisVolatileKeyCell; //0x34
};
};
union
{
VOID* PrepareDataPointer; //0x38
struct _CM_UOW_SET_SD_DATA* SecurityData; //0x38
struct _CM_UOW_KEY_STATE_MODIFICATION* ModifyKeysData; //0x38
struct _CM_UOW_SET_VALUE_LIST_DATA* SetValueData; //0x38
};
union
{
struct _CM_UOW_SET_VALUE_KEY_DATA* ValueData; //0x3c
struct _CMP_DISCARD_AND_REPLACE_KCB_CONTEXT* DiscardReplaceContext; //0x3c
};
};