MiScheduleZeroPageThreads
_LARGE_INTEGER __stdcall MiScheduleZeroPageThreads(INT64 a1){
_LARGE_INTEGER result;
_LARGE_INTEGER v3;
unsigned int i;
UINT64 v5;
__int64 v6;
__int64 v7;
int v8;
_KLOCK_QUEUE_HANDLE LockHandle;
result.QuadPart = 0i64;
memset(&LockHandle, 0, sizeof(LockHandle));
if( *(_BYTE *)(a1 + 6297) )
{
result.QuadPart = KeQueryPerformanceCounter(0i64);
v3 = result;
for( i = 0; i < (unsigned __int16)KeNumberNodes; ++i )
{
v5 = *(_QWORD *)(a1 + 16) + 4544i64 * i;
if( *(_BYTE *)(v5 + 4490) )
{
v6 = *(_QWORD *)(v5 + 4432);
v7 = *(_QWORD *)(v6 + 48);
if( v3.QuadPart <= v7 )
{
++dword_140C2A050;
}
else if( 1000000 * (v3.QuadPart - v7) / *(&stru_140C4DB30 + 36) < 0x10000 )
{
++dword_140C2A054;
}
else
{
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)(v6 + 24), &LockHandle);
if( *(_DWORD *)(v6 + 136) )
{
if( v7 == *(_QWORD *)(v6 + 48) )
{
MiReduceZeroingThreads((_MI_ZERO_THREAD_CONTEXT *)v6, v5);
if( v8 == 7 )
++dword_140C2A05C;
else
++dword_140C2A060;
*(_QWORD *)(v6 + 48) = KeQueryPerformanceCounter(0i64);
}
else
{
++dword_140C2A058;
}
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
}
else
{
++dword_140C2A04C;
}
result.QuadPart = (unsigned __int16)KeNumberNodes;
}
}
return result;
}Referenced by:
MiWorkingSetManager