VfAvlEnumerateNodes
VOID __stdcall VfAvlEnumerateNodes(
_VF_AVL_TREE *Tree,
_VF_AVL_LOCK_CONTEXT *LockContext,
UINT64 *Callback,
_VF_AVL_TREE_NODE *a4,
VOID *a5,
VOID *CallbackContext){
unsigned int TablesNo;
__int64 i;
__int64 v11;
UINT8 j;
VOID *v13;
ViAvlRaiseIrqlSafe(LockContext);
TablesNo = ViTargetDriversAvl.TablesNo;
for( i = 0i64; (unsigned int)i < TablesNo; i = (unsigned int)(i + 1) )
{
v11 = i;
ViAvlAcquireTableLockAtDpcLevelSafe(&ViTargetDriversAvl.Tables[i], LockContext);
for( j = 1; ; j = 0 )
{
v13 = RtlEnumerateGenericTableAvl(&ViTargetDriversAvl.Tables[v11].RtlTable, j);
if( !v13 )
break;
if( !((unsigned int(__fastcall *)(VOID *, _VF_AVL_TREE_NODE *))Callback)(v13, a4) )
return;
}
ViAvlReleaseTableLockFromDpcLevel(&ViTargetDriversAvl.Tables[v11], LockContext);
}
}Referenced by:
VfSuspectDriversGetVerifierInformation
ViTargetFreeContiguousMemory
ViTargetWMIDeregister