PpmCapturePerformanceDistribution
INT64 __fastcall PpmCapturePerformanceDistribution(_DWORD *a1, unsigned int a2, int a3, __int64 a4, unsigned int *a5){
unsigned __int16 *v9;
struct _KPRCB *v10;
struct _KPRCB *v11;
unsigned __int8 CurrentIrql;
int v13;
INT64 v14;
unsigned int v15;
UINT64 ProcessorNumber;
INT64 v17;
unsigned int v18;
unsigned int v19;
__int64 v20;
unsigned __int16 *v21[2];
__int16 v22;
int v23;
__int16 v24;
int result;
INT64 result_4;
memset((INT64)&result, 0i64);
v9 = *(unsigned __int16 **)a4;
v19 = 4 * a3 + 4;
v22 = *(_WORD *)(a4 + 8);
v23 = 0;
v24 = 0;
LODWORD(ProcessorNumber) = 0;
v20 = 0i64;
v17 = (INT64)a1;
v18 = a2;
v21[1] = v9;
v21[0] = 0i64;
while( !(unsigned int)KeEnumerateNextProcessor(&ProcessorNumber, v21) )
{
KeGetPrcb((unsigned int)ProcessorNumber);
v11 = v10;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
v13 = PpmCapturePerformanceDistributionCallback(v10, &v17);
__writecr8(CurrentIrql);
if( v13 < 0 )
{
result = 1310721;
memset((INT64)&result_4, 0i64);
KeAddProcessorAffinityEx(&result, *((_DWORD *)v11 + 9));
v14 = PopExecuteOnTargetProcessors(
(INT64)&result,
(INT64)PpmCapturePerformanceDistributionCallback,
(INT64)&v17,
0i64);
if( (int)v14 < 0 )
return v14;
}
}
v15 = v19;
*a5 = v19;
if( v15 > a2 )
return 3221225476i64;
*(_DWORD *)v17 = a3;
return 0i64;
}Referenced by:
ExpQuerySystemInformation