ViRemLockDeleteFirstTreeNode
UINT64 __stdcall ViRemLockDeleteFirstTreeNode(VOID *Address, UINT64 NumberOfBytes){
VOID *v2;
VOID *v3;
UINT64 v4;
_VF_AVL_TREE_NODE *v5;
_VF_AVL_TREE_NODE *v6;
_VF_AVL_LOCK_CONTEXT Context[4];
v2 = 0i64;
*(_OWORD *)Context = 0i64;
VfAvlInitializeLockContext(Context, Exclusive);
v5 = VfAvlLookupTreeNode(&ViRemLockAvl, Context, v3, v4);
v6 = v5;
if( v5 )
v2 = VfAvlDeleteTreeNode(&ViRemLockAvl, Context, v5->p, 0i64);
VfAvlCleanupLockContext(Context);
if( !v6 )
return 0i64;
if( v2 )
{
if( ViRemLockAvl.u1.NodeSize == 1 )
ExFreeToNPagedLookasideList(&ViAvlNodeLookaside, v2);
else
VfUtilFreePoolCheckIRQL(v2);
}
return 1i64;
}Referenced by:
VerifierIoInitializeRemoveLockEx
VfRemLockDeleteMemoryRange