ViTargetAddToCounter
VOID __stdcall ViTargetAddToCounter(PVOID CallerAddress, UINT64 FieldOffset, UINT64 PeakFieldOffset, UINT64 Value){
__int64 v4;
__int64 v6;
UINT64 v7;
INT64 v8;
CHAR *v9;
__int64 v10;
unsigned __int64 v11;
volatile signed __int64 *v12;
volatile signed __int64 v13;
_OWORD v14[2];
v4 = (unsigned int)PeakFieldOffset;
v14[0] = 0i64;
v6 = (unsigned int)FieldOffset;
if( (unsigned int)ViTargetUpdateTreeAllowed() )
{
VfAvlInitializeLockContext((INT64)v14, 1i64);
v9 = VfAvlLookupTreeNode(&ViTargetDriversAvl, (INT64)v14, v7, v8);
if( v9 )
{
v10 = *((_QWORD *)v9 + 7);
if( v10 )
{
v11 = Value + _InterlockedExchangeAdd64((volatile signed __int64 *)(v6 + v10), Value);
v12 = (volatile signed __int64 *)(v10 + v4);
do
{
if( *v12 > v11 )
break;
v13 = *v12;
}
while( v13 != _InterlockedCompareExchange64(v12, v11, *v12) );
}
}
VfAvlCleanupLockContext((INT64)v14);
}
}Referenced by:
VerifierMmAllocateNodePagesForMdlEx
VerifierMmAllocatePagesForMdl
VerifierMmAllocatePagesForMdlEx
VerifierMmFreePagesFromMdl
VerifierMmMapIoSpace
VerifierMmMapLockedPages
VerifierMmMapLockedPagesSpecifyCache
VerifierMmProbeAndLockPages
VerifierMmProbeAndLockProcessPages
VerifierMmUnlockPages
VerifierMmUnmapIoSpace
VerifierMmUnmapLockedPages