CmpRebuildKcbCache
INT64 __fastcall CmpRebuildKcbCache(_CM_KEY_CONTROL_BLOCK *KeyControlBlock){
INT64 result;
_HHIVE *KeyHive;
__int64 KeyCell;
int v5;
int v6;
v6 = 0;
result = *((unsigned int *)KeyControlBlock + 2);
v5 = -1;
if( (result & 0x10) != 0 || (*((_DWORD *)KeyControlBlock + 46) & 0x400000) != 0 )
goto LABEL_7;
KeyHive = KeyControlBlock->KeyHash.KeyHive;
if( KeyHive )
{
KeyCell = KeyControlBlock->KeyHash.KeyCell;
if( (_DWORD)KeyCell != -1 )
{
result = (INT64)KeyHive->GetCellRoutine(KeyHive, KeyCell, (_HV_GET_CELL_CONTEXT *)&v5);
if( result )
{
++KeyControlBlock->SequenceNumber;
CmpRebuildKcbCacheFromNode(KeyControlBlock, (_CM_KEY_NODE *)result);
result = ((__int64(__fastcall *)(_HHIVE *, int *))KeyControlBlock->KeyHash.KeyHive->ReleaseCellRoutine)(
KeyControlBlock->KeyHash.KeyHive,
&v5);
LABEL_7:
LOBYTE(result) = 1;
return result;
}
}
}
LOBYTE(result) = 0;
return result;
}Referenced by:
CmpCloneHwProfile
CmpCommitDiscardReplacePost
CmpRefreshHive
CmpSaveBootControlSet
CmpSyncKcbCacheForHive
CmpTransMgrFreeVolatileData