PoGetIdleTimes

VOID __fastcall PoGetIdleTimes(PROCESSOR_NUMBER *ProcNumber, INT64 a2, INT64 a3){
  unsigned int ProcessorIndexFromNumber; 
  _ETHREAD *CurrentThread; 
  __int64 v8; 
  __int64 v9; 
  unsigned __int8 CurrentIrql; 
  int v11; 
  int result; 
  INT64 result_4; 
  memset((INT64)&result, 0i64);
  ProcessorIndexFromNumber = KeGetProcessorIndexFromNumber(ProcNumber);
  KeGetPrcb(ProcessorIndexFromNumber);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v9 = v8;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockSharedEx((UINT64)&PpmIdlePolicyLock, 0i64);
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  LODWORD(v9) = PopGetIdleTimesCallback(v9, a2, a3);
  __writecr8(CurrentIrql);
  if( (int)v9 < 0 )
  {
    result = 1310721;
    memset((INT64)&result_4, 0i64);
    v11 = KeGetProcessorIndexFromNumber(ProcNumber);
    KeAddProcessorAffinityEx(&result, v11);
    PopExecuteOnTargetProcessors((INT64)&result, (INT64)PopGetIdleTimesCallback, a2, a3);
  }
  PopReleaseRwLock((UINT64)&PpmIdlePolicyLock);
}

Referenced by:

ExpQueryProcessorInformationCounters
ExpQuerySystemInformation