PpmEventThermalCapChange
VOID __stdcall PpmEventThermalCapChange(_KPRCB *Prcb, UINT64 Cap){
bool v2;
const _EVENT_DESCRIPTOR *v4;
const _EVENT_DESCRIPTOR *v5;
REGHANDLE v6;
INT64 v7;
int v8;
__int128 DataPtr;
__int128 *p_DataPtr;
int v11;
int v12;
INT64 UserData[2];
int *v14;
int v15;
int v16;
LODWORD(v7) = 0;
v2 = BYTE4(Prcb->PriorityState) == 0;
v8 = Cap;
DataPtr = 0i64;
if( !v2 )
{
*((_QWORD *)&DataPtr + 1) = *(_QWORD *)&Prcb[-1].StaticAffinity.KeFlushTbDeepIdleAffinity.Count;
LODWORD(DataPtr) = Cap;
if( (xmmword_140CFB490 & 0x8000) != 0 )
{
v12 = 0;
p_DataPtr = &DataPtr;
v11 = 16;
EtwTraceKernelEvent((__int64)&p_DataPtr, 1u, 0x80008000, 0x1236u, 0x401802u);
}
if( WmiThermalEventEnabled )
PpmFireWmiEvent(&Prcb[-1].PrcbPad141[503], (_GUID *)&PPM_THERMALCONSTRAINT_GUID, 0x10ui64, &DataPtr);
}
LODWORD(v4) = PpmEventGetEventDescriptorAndProcessorId(
(INT64)Prcb,
(INT64)&PPM_ETW_THERMAL_CAP_CHANGE,
(INT64)&PPM_ETW_THERMAL_CAP_CHANGE_HV,
(INT64)&v7,
(INT64)UserData);
v5 = v4;
if( PpmEtwRegistered )
{
v6 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, v4) )
{
v16 = 0;
v14 = &v8;
v15 = 4;
EtwWriteEx(v6, v5, 0i64, 0, 0, 0, 2u, (PEVENT_DATA_DESCRIPTOR)UserData);
}
}
}Referenced by:
PpmRegisterPerfCap