PfpQueryGpuUtilization

NTSTATUS __stdcall PfpQueryGpuUtilization(_SUPERFETCH_INFORMATION *Info, INT8 PreviousMode, UINT64 *ReturnSize){
  NTSTATUS result; 
  UINT64 SessionId; 
  __int128 Parameters; 

  Parameters = 0i64;
  if( (unsigned int)Info[6] < 0x10 )
    return -1073741306;
  if( PreviousMode )
    ProbeForWrite(*((_QWORD *)Info + 2), 16i64, 8i64);
  Parameters = *(_OWORD *)*((_QWORD *)Info + 2);
  if( (_DWORD)Parameters != 1 )
    return -1073741735;
  LODWORD(SessionId) = DWORD1(Parameters);
  if( DWORD1(Parameters) == -1 )
    LODWORD(SessionId) = MmGetSessionIdEx(KeGetCurrentThread()->ApcState.Process);
  result = PsInvokeWin32Callout(
             Win32GetGpuStatisticsCallout,
             (char *)&Parameters + 8,
             PsWin32SessionAttachSingle,
             &SessionId);
  if( result >= 0 )
  {
    *(_OWORD *)*((_QWORD *)Info + 2) = Parameters;
    *(_DWORD *)ReturnSize = 16;
    return 0;
  }
  return result;
}

Referenced by:

PfQuerySuperfetchInformation