CmpTransSearchAddTransFromKeyBody
NTSTATUS __stdcall CmpTransSearchAddTransFromKeyBody(_CM_KEY_BODY *KeyBody, _CM_TRANS **CmTrans){
_CM_TRANS_PTR v3;
__int64 KeyControlBlock;
EX_RUNDOWN_REF *v6;
NTSTATUS result;
LIST_ENTRY *Count;
INT64 v9;
INT64 v10;
v10 = 0i64;
v3.0 = ($F21FB2B31E9B30A96ADF077329256E82)KeyBody->Trans;
if( *(_OWORD *)&KeyBody->Trans.0 == 0i64 )
return -1072103422;
KeyControlBlock = (__int64)KeyBody->KeyControlBlock ^ 1;
if( ((__int64)KeyBody->KeyControlBlock & 1) == 0 )
KeyControlBlock = (__int64)KeyBody->KeyControlBlock;
v6 = *(EX_RUNDOWN_REF **)(KeyControlBlock + 32);
if( (*(_BYTE *)&v3.0 & 1) != 0 )
{
result = CmpTransSearchAddLightWeightTrans(
(INT64)KeyBody->Trans.TransPtr,
*(_QWORD *)(KeyControlBlock + 32),
0i64,
&v10);
}
else
{
Count = (LIST_ENTRY *)v6[524].Count;
if( !Count )
return -1072103419;
LODWORD(v9) = 0;
result = CmpTransSearchAddTrans((INT64)KeyBody->Trans.TransPtr, KeyBody->KtmUow, Count, v6, v9, (LIST_ENTRY **)&v10);
}
if( result >= 0 )
{
*CmTrans = (_CM_TRANS *)v10;
return 0;
}
return result;
}Referenced by:
CmDeleteValueKey
CmEnumerateKey
CmEnumerateValueKey
CmEnumerateValueKeyFromMergedView
CmQueryKey
CmQueryMultipleValueKey
CmRenameKey
CmSetKeyFlags
CmSetLastWriteTimeKey
CmSetValueKey
CmpQueryKeySecurity
CmpSetKeySecurity
NtDeleteKey