KeQueryReadyQueueStatsProcessor
INT64 __fastcall KeQueryReadyQueueStatsProcessor(INT64 a1, _DWORD *a2, _QWORD *a3, _DWORD *a4, _QWORD *a5){
__int64 v9;
INT64 result;
UINT64 SpinCount;
UINT64 v12;
if( *(_QWORD *)(a1 + 33856) )
{
LODWORD(SpinCount) = 0;
v9 = *(_QWORD *)(a1 + 33864);
while( _interlockedbittestandset64((volatile signed __int32 *)v9, 0i64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *(_QWORD *)v9 );
}
*a4 = *(_DWORD *)(v9 + 608);
*a5 = *(_QWORD *)(v9 + 616);
_InterlockedAnd64((volatile signed __int64 *)v9, 0i64);
}
LODWORD(v12) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 48), 0i64) )
{
do
KeYieldProcessorEx(&v12);
while( *(_QWORD *)(a1 + 48) );
}
*a2 = *(_DWORD *)(a1 + 32436);
result = *(_QWORD *)(a1 + 32440);
*a3 = result;
_InterlockedAnd64((volatile signed __int64 *)(a1 + 48), 0i64);
return result;
}Referenced by:
KiCanSelectSoftParkedProcessor
KiChooseTargetProcessor