CmpPrepareDiscardAndReplaceKcbAndUnbackedHigherLayers
__int64 __fastcall CmpPrepareDiscardAndReplaceKcbAndUnbackedHigherLayers(void *a1, __int64 a2){
__int64 v4;
int v5;
UINT64 *RegLockHeldEx[2];
*(_OWORD *)RegLockHeldEx = 0i64;
CmpInitializeDelayDerefContext(RegLockHeldEx);
*(_DWORD *)(v4 + 8) = 0;
*(_QWORD *)v4 = a1;
CmpEnumerateAllHigherLayerKcbs(
(__int64)a1,
(unsigned int(__fastcall *)(void *, __int64))CmpCleanupDiscardReplacePre,
(unsigned int(__fastcall *)(void *, __int64, __int64))CmpPrepareDiscardReplacePost,
(__int64)RegLockHeldEx,
v4,
1,
0);
v5 = *(_DWORD *)(a2 + 8);
if( v5 >= 0 )
{
CmpPrepareDiscardReplacePost(a1, (__int64)RegLockHeldEx, a2);
v5 = 0;
if( *(int *)(a2 + 8) < 0 )
v5 = *(_DWORD *)(a2 + 8);
}
CmpDrainDelayDerefContext(RegLockHeldEx);
return(unsigned int)v5;
}Referenced by:
CmDeleteLayeredKey
CmpCommitDeleteKeyUoW
CmpLightWeightPrepareDeleteKeyUoW