CmpPerformKeyBodyDeletionCheck
INT64 __stdcall CmpPerformKeyBodyDeletionCheck(CM_KEY_BODY *KeyBody, CM_TRANS *CmTrans){
_CM_KEY_CONTROL_BLOCK *KeyControlBlock;
int v4;
INT64 result;
INT64 v6;
__int64 v7;
LIST_ENTRY *v8;
INT64 v9;
int v10;
LIST_ENTRY *ListIterator;
ListIterator = 0i64;
KeyControlBlock = KeyBody->KeyControlBlock;
v4 = *((_DWORD *)KeyBody + 12);
if( (v4 & 9) == 0 )
{
if( !CmTrans )
return 0i64;
LODWORD(v6) = CmListGetNextElement(KeyControlBlock->KCBUoWListHead, &ListIterator, 32i64);
v9 = v6;
if( !v6 )
return 0i64;
while( 1 )
{
v10 = *(_DWORD *)(v9 + 68);
if( v10 == 2 || v10 == 11 )
break;
LODWORD(result) = CmListGetNextElement(v8, &ListIterator, 32i64);
v9 = result;
if( !result )
return result;
}
if( !CmEqualTrans(*(_QWORD *)(v9 + 56), v7) )
return 0i64;
v4 = *((_DWORD *)KeyBody + 12);
}
if( (v4 & 1) != 0 )
return 3221226533i64;
else
return 3221225852i64;
}Referenced by:
CmDumpKey
CmEnumerateKey
CmEnumerateValueKey
CmKeyBodyRemapToVirtual
CmKeyBodyRemapToVirtualForEnum
CmKeyBodyReplicateToVirtual
CmLockKeyForWrite
CmQueryLayeredKey
CmQueryMultipleValueForLayeredKey
CmRenameKey
CmSaveKey
CmSetKeyFlags
CmSetLastWriteTimeKey
CmpAcquireSystemDriverHiveContext
CmpAssignKeySecurity
CmpDoQueryKeyName
CmpEnumerateLayeredKey
CmpLoadKeyCommon
CmpPerformUnloadKey
CmpQueryKeySecurity
CmpRefreshHive
CmpSaveBootControlSet
CmpSetKeySecurity
NtCompactKeys
NtCompressKey
NtFlushKey
NtQueryOpenSubKeys
NtQueryOpenSubKeysEx