KiInitializeForceIdle

INT64 __fastcall KiInitializeForceIdle(INT64 a1){
  INT64 result; 
  if( !*(_DWORD *)(a1 + 36) )
  {
    KiForceIdleLock = 0i64;
    KeInitializeDpc((PRKDPC)&KiForceIdleStartDpc, KiForceIdleStartDpcRoutine, 0i64);
    KeInitializeDpc(&KiForceIdleStopDpc, KiForceIdleStopDpcRoutine, 0i64);
    BYTE1(KiForceIdleStartDpc) = 3;
    KiForceIdleStopDpc.Importance = 3;
    if( !KiSerializeTimerExpiration )
      KiForceIdleDisabled = 1;
  }
  KeInitializeDpc((PRKDPC)(a1 + 33304), KiForceIdleParkUnparkDpcRoutine, 0i64);
  *(_BYTE *)(a1 + 33305) = 3;
  result = *(_QWORD *)(a1 + 33360);
  if( !result )
  {
    result = 1280i64;
    *(_WORD *)(a1 + 33306) = *(_DWORD *)(a1 + 36) + 1280;
  }
  return result;
}

Referenced by:

KeInitializeTimerTable