ViTargetFreeContiguousMemory
VOID __stdcall ViTargetFreeContiguousMemory(VOID *CallerAddress, VOID *p){
int v3;
VOID *v4;
_VF_TARGET_DRIVER *v5;
_VF_AVL_TREE *v6;
_VF_AVL_LOCK_CONTEXT Context[4];
*(_OWORD *)Context = 0i64;
if( (unsigned int)ViTargetUpdateTreeAllowed() )
{
VfAvlInitializeLockContext(Context, Exclusive);
v5 = (_VF_TARGET_DRIVER *)VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, v4, (unsigned int)(v3 + 1));
if( !v5 || !(unsigned int)ViTargetFreeContiguousMemoryFromNode(p, v5) )
VfAvlEnumerateNodes(
v6,
Context,
(UINT64 *)ViTargetFreeContiguousMemoryCallback,
(_VF_AVL_TREE_NODE *)p,
*(VOID **)Context,
*(VOID **)&Context[2]);
VfAvlCleanupLockContext(Context);
}
}Referenced by:
VerifierMmFreeContiguousMemory
VerifierMmFreeContiguousMemorySpecifyCache
VerifierMmFreeNonCachedMemory