KeUpdatePendingQosRequest
CHAR __stdcall KeUpdatePendingQosRequest(INT64 a1){
signed __int32 v1;
CHAR v2;
if( (*(_DWORD *)(a1 + 236) & 0x300) != 0 )
{
v1 = _InterlockedIncrement(&KiPendingVirtualHeteroRequest);
if( v1 != 1 )
return v1;
if( *(_BYTE *)(a1 + 33) )
{
v2 = 0;
LABEL_5:
LOBYTE(v1) = KiSetVirtualHeteroClockIntervalRequest(v2);
return v1;
}
}
else
{
v1 = _InterlockedExchangeAdd(&KiPendingVirtualHeteroRequest, 0xFFFFFFFF);
if( v1 != 1 )
return v1;
if( *(_BYTE *)(a1 + 33) )
{
v2 = 1;
goto LABEL_5;
}
}
if( !*(&KiSwapEvent + 19) )
*(&KiSwapEvent + 49) = KiClockTimerOwner + 1280;
KiInsertQueueDpc((_KDPC *)((char *)&KiSwapEvent + 96), 0i64, 0i64, 0i64, 0);
return v1;
}Referenced by:
KeCheckAndApplyBamQos
KeClockInterruptNotify
KiUpdateRunTime
PpmIdleExecuteTransition