PpmCheckRun
VOID __stdcall PpmCheckRun(KDPC *Dpc, PVOID Context, PVOID Arg1, PVOID Arg2){
int v4;
unsigned __int8(__fastcall *v5)(__int64, PVOID, _QWORD, PVOID);
__int64 v6;
EVENT_DESCRIPTOR *v7;
UINT64 v8;
UINT64 UserDataCount;
EVENT_DATA_DESCRIPTOR UserData;
v4 = PpmCheckPipelineIndex;
v5 = *(unsigned __int8(__fastcall **)(__int64, PVOID, _QWORD, PVOID))(PpmCheckPipeline
+ 8i64 * (unsigned int)PpmCheckPipelineIndex);
if( v5 )
{
while( 1 )
{
v6 = (unsigned int)(v4 + 1);
PpmCheckPipelineIndex = v6;
if( !v5(v6, Context, v5, Arg2) )
break;
v4 = PpmCheckPipelineIndex;
v5 = *(unsigned __int8(__fastcall **)(__int64, PVOID, _QWORD, PVOID))(PpmCheckPipeline
+ 8i64 * (unsigned int)PpmCheckPipelineIndex);
if( !v5 )
goto LABEL_4;
}
}
else
{
LABEL_4:
PpmReleaseLock(&PpmPerfPolicyLock);
if( PpmEtwRegistered )
{
v8 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_STOP, v7) )
{
*(_QWORD *)&UserData.Size = 8i64;
UserData.Ptr = (unsigned __int64)&PpmCheckTime;
LODWORD(UserDataCount) = 1;
EtwWriteEx(v8, (EVENT_DESCRIPTOR *)&PPM_ETW_PERF_CHECK_STOP, 0i64, 0i64, 0i64, 0i64, UserDataCount, &UserData);
}
}
}
}Referenced by:
PpmCheckStart