PpmCheckStart
VOID __fastcall PpmCheckStart(INT64 a1){
__int64 v1;
__int64 v2;
EVENT_DESCRIPTOR *v3;
int v4;
UINT64 v5;
int v6;
int v7;
UINT64 UserDataCount;
int v9;
UINT64 v10;
INT64 CurrentQpc;
EVENT_DATA_DESCRIPTOR UserData;
UINT64 *v13;
__int64 v14;
int *v15;
__int64 v16;
v1 = (int)a1;
PpmCheckCurrentPipelineId = a1;
LODWORD(v2) = RtlGetInterruptTimePrecise(&CurrentQpc);
PpmCheckTime = v2;
v4 = 0;
v10 = PpmCheckLastExecutionTime;
v9 = v1;
if( PpmEtwRegistered )
{
v5 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_START, v3) )
{
*(_QWORD *)&UserData.Size = 8i64;
UserData.Ptr = (unsigned __int64)&PpmCheckTime;
v14 = 8i64;
v13 = &v10;
v16 = 4i64;
v15 = &v9;
LODWORD(UserDataCount) = 3;
EtwWriteEx(v5, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_START, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
}
}
PpmCheckPipeline = *(_QWORD *)(PpmCheckPipelines + 8 * v1);
if( !PpmCheckPipeline )
PpmCheckPipeline = *(_QWORD *)PpmCheckPipelines;
v6 = 0;
PpmCheckPipelineIndex = 0;
if( PpmPerfLatencyBoostExpiration >= *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart )
v6 = 1;
if( PpmPerfDeadlineBoostExpiration >= *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart )
v4 = 1;
if( PpmCheckLatencyBoostActive != v6 || PpmCheckDeadlineBoostActive != v4 )
{
PpmPerfSetAllDomainsToUpdate();
PpmCheckLatencyBoostActive = v7;
PpmCheckDeadlineBoostActive = v4;
}
PpmCheckRun(0i64, 0i64, 0i64, 0i64);
}Referenced by:
PpmCheckCustomRun
PpmCheckPeriodicStart