KiForceIdleStartDpcRoutine

VOID __stdcall KiForceIdleStartDpcRoutine(
        KDPC *Dpc,
        PVOID DeferredContext,
        PVOID SystemArgument1,
        PVOID SystemArgument2){
  char v4; 
  UINT64 SpinCount[3]; 
  v4 = 0;
  _disable();
  LODWORD(SpinCount[0]) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)&KiForceIdleLock, 0i64) )
  {
    do
      KeYieldProcessorEx(SpinCount);
    while( KiForceIdleLock );
  }
  if( (_DWORD)KiForceIdleState == 1 )
  {
    KiSetForceIdleState(4i64, (INT64)DeferredContext, (EVENT_DESCRIPTOR *)SystemArgument1);
    KiForceIdleActiveLastStartTime = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  }
  else
  {
    v4 = 1;
  }
  _InterlockedAnd64(&KiForceIdleLock, 0i64);
  _enable();
  if( !v4 )
    KiForceIdleUpdateSchedulerParkState(1u);
}

Referenced by:

No references.