PpmGetThroughputInfoCallback

__int64 __fastcall PpmGetThroughputInfoCallback(struct _KPRCB *a1, __int64 a2, unsigned int a3){
  INT64 v6; 
  unsigned int v7; 
  char v8; 
  unsigned __int64 FrequencyScaledActive; 
  UINT64 v10; 
  _PROC_PERF_CHECK_SNAP result; 
  memset((INT64)&result, 0i64);
  LOBYTE(v6) = a1 != KeGetCurrentPrcb();
  v7 = 0;
  if( (unsigned __int8)PpmSnapPerformanceAccumulation(a1, 0i64, v6, 0i64, &result) )
  {
    v8 = PpmPerformanceCounterShift;
    if( *((_DWORD *)a1 + 8246) == 3 )
      v8 = PpmHvPerformanceCounterShift;
    FrequencyScaledActive = result.FrequencyScaledActive;
    *(_QWORD *)(a2 + 8) = result.PerformanceScaledActive >> v8;
    v10 = PpmConvertTime(FrequencyScaledActive, 0x64ui64, a3);
    *(_QWORD *)(a2 + 16) = result.PerformanceScaledKernelActive >> v8;
    *(_DWORD *)a2 = result.Time >> v8;
    *(_DWORD *)(a2 + 4) = result.Active >> v8;
    *(_QWORD *)(a2 + 24) = v10 >> v8;
  }
  else
  {
    return(unsigned int)-1073741823;
  }
  return v7;
}

Referenced by:

PoGetPerfStateAndParkingInfo