PpmEventProcessorPerfStateChange
VOID __stdcall PpmEventProcessorPerfStateChange(_KPRCB *Prcb, _PROC_PERF_DOMAIN *Domain){
int v2;
const _EVENT_DESCRIPTOR *v4;
const _EVENT_DESCRIPTOR *v5;
REGHANDLE v6;
_ETHREAD *CurrentThread;
int v8;
int ThreadLock;
int CycleTime_high;
int v11;
_EVENT_DATA_DESCRIPTOR UserData;
int *p_CycleTime_high;
__int64 v14;
INT64 v15[20];
int v16;
int v17;
v17 = v2;
v16 = (int)Domain;
v8 = 0;
LODWORD(v4) = PpmEventGetEventDescriptorAndProcessorId(
(INT64)Prcb,
(INT64)&PPM_ETW_PROCESSOR_PERF_STATE_CHANGE,
(INT64)&PPM_ETW_PROCESSOR_PERF_STATE_CHANGE_HV,
(INT64)&v8,
(INT64)v15);
v5 = v4;
if( PpmEtwRegistered )
{
v6 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, v4) )
{
CurrentThread = Prcb->CurrentThread;
ThreadLock = CurrentThread->Tcb.ThreadLock;
CycleTime_high = HIDWORD(CurrentThread->Tcb.CycleTime);
UserData.Ptr = (unsigned __int64)&ThreadLock;
p_CycleTime_high = &CycleTime_high;
v15[2] = (INT64)&CurrentThread->Tcb.CycleTime;
v15[4] = (INT64)&CurrentThread->Tcb.KernelStack;
v15[6] = (INT64)&CurrentThread->Tcb.CurrentRunTime;
v15[8] = (INT64)&CurrentThread->Tcb.ExpectedRunTime;
v15[10] = (INT64)&CurrentThread->Tcb.KernelStack + 4;
v15[12] = (INT64)&CurrentThread->Tcb.StateSaveArea;
*(_QWORD *)&UserData.Size = 4i64;
v14 = 4i64;
v15[3] = 4i64;
v15[5] = 4i64;
v15[7] = 4i64;
v15[9] = 4i64;
v15[11] = 4i64;
v15[13] = 4i64;
v11 = BYTE4(CurrentThread->Tcb.StateSaveArea);
v15[14] = (INT64)&v11;
v15[16] = (INT64)&v16;
v15[18] = (INT64)&v17;
v15[15] = 4i64;
v15[17] = 4i64;
v15[19] = 4i64;
EtwWriteEx(v6, v5, 0i64, 0, 0, 0, 0xCu, &UserData);
}
}
}Referenced by:
PpmPerfApplyHiddenProcessorState
PpmPerfArbitratorApplyProcessorState