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.