PpmEventTraceExpectedUtility
VOID __stdcall PpmEventTraceExpectedUtility(_KPRCB *Prcb){
const _EVENT_DESCRIPTOR *v2;
const _EVENT_DESCRIPTOR *v3;
REGHANDLE v4;
_ETHREAD *CurrentThread;
unsigned int CycleTime;
unsigned __int64 v7;
unsigned int v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
unsigned int v15;
_EVENT_DATA_DESCRIPTOR UserData;
int *v17;
int v18;
int v19;
int *v20;
int v21;
int v22;
int *v23;
int v24;
int v25;
int *v26;
int v27;
int v28;
__int64 v29[2];
v12 = 0;
LODWORD(v2) = PpmEventGetEventDescriptorAndProcessorId(
(INT64)Prcb,
(INT64)&PPM_ETW_EXPECTED_UTILITY,
(INT64)&PPM_ETW_EXPECTED_UTILITY_HV,
(INT64)&v12,
(INT64)v29);
v3 = v2;
if( PpmEtwRegistered )
{
v4 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, v2) )
{
UserData.Reserved = 0;
UserData.Ptr = (unsigned __int64)&PopIrpWorkerControlEvent + 1216;
CurrentThread = Prcb->CurrentThread;
UserData.Size = 8;
if( CurrentThread )
CycleTime = CurrentThread->Tcb.CycleTime;
else
CycleTime = 100;
v15 = CycleTime;
v7 = *(&PopIrpWorkerControlEvent + 160) / 0x2710ui64;
v8 = ((unsigned int)(*(&PopIrpWorkerControlEvent + 160) / 0x2710ui64) * (LODWORD(Prcb->RspBase) / CycleTime) + 50)
/ 0x64;
v11 = v8;
if( v8 <= (unsigned int)(*(&PopIrpWorkerControlEvent + 160) / 0x2710ui64) )
{
v9 = v7 - v8;
v10 = 0;
}
else
{
v9 = 0;
v11 = *(&PopIrpWorkerControlEvent + 160) / 0x2710ui64;
v10 = v8 - v7;
}
v19 = 0;
v22 = 0;
v25 = 0;
v28 = 0;
v13 = v9;
v17 = &v13;
v20 = &v11;
v23 = &v14;
v26 = (int *)&v15;
v14 = v10;
v18 = 4;
v21 = 4;
v24 = 4;
v27 = 4;
EtwWriteEx(v4, v3, 0i64, 0, 0, 0, 6u, &UserData);
}
}
}Referenced by:
PpmPerfApplyProcessorState