KiForceIdleStartDpcRoutine
VOID __stdcall KiForceIdleStartDpcRoutine(
_KDPC *Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2){
char v4;
__int64 SpinCount[3];
v4 = 0;
_disable();
LODWORD(SpinCount[0]) = 0;
while( _interlockedbittestandset64((_DWORD *)&KiSwapEvent + 42, 0i64) )
{
do
KeYieldProcessorEx((UINT64 *)SpinCount);
while( *(&KiSwapEvent + 21) );
}
if( (_DWORD)KiForceIdleState == 1 )
{
KiSetForceIdleState(4i64, (INT64)DeferredContext, (NPTEXTMETRIC *)SystemArgument1);
KiForceIdleActiveLastStartTime = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
}
else
{
v4 = 1;
}
_InterlockedAnd64((_QWORD *)&KiSwapEvent + 21, 0i64);
_enable();
if( !v4 )
KiForceIdleUpdateSchedulerParkState(1u);
}Referenced by:
No references.