VfAvlReserveNode
_VF_AVL_TREE_NODE *__stdcall VfAvlReserveNode(_VF_AVL_TREE *Tree, VOID *p, UINT64 RangeSize){
union {unsigned int NodeSize;unsigned int UseLookaside;} v3;
char *PoolWithTag;
_VF_AVL_TREE_NODE *v8;
v3.NodeSize = (unsigned int)Tree->u1;
if( v3.NodeSize == 1 )
PoolWithTag = (char *)ExAllocateFromNPagedLookasideList(&ViAvlNodeLookaside);
else
PoolWithTag = (char *)ExAllocatePoolWithTag(0x200ui64, v3.NodeSize, 1413572182i64);
if( !PoolWithTag )
return 0i64;
v8 = (_VF_AVL_TREE_NODE *)(PoolWithTag + 32);
*((_QWORD *)PoolWithTag + 4) = p;
if( !RangeSize )
RangeSize = Tree->NodeRangeSize;
*((_QWORD *)PoolWithTag + 5) = RangeSize;
if( Tree->UseSessionId )
ViAvlNodeInitializeSessionId(Tree, (_VF_AVL_TREE_NODE_EX *)(PoolWithTag + 32));
return v8;
}Referenced by:
VerifierExInitializeResourceLite
VerifierIoInitializeRemoveLockEx
VfTargetDriversAdd
ViDevObjAdd
ViLookasideAdd