PopDiagTracePassiveCooling
VOID __stdcall PopDiagTracePassiveCooling(
_THERMAL_INFORMATION_EX *ThermalInfo,
_DEVICE_OBJECT *DeviceObject,
UINT8 PassiveCoolingEngaged,
INT64 ThrottleDelta,
_THERMAL_CHANNEL Channel){
bool v8;
_DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag;
_DEVICE_OBJECT *v10;
_WORD *DeviceNode;
unsigned int PassiveTripPoint;
unsigned int CurrentTemperature;
const _EVENT_DESCRIPTOR *v14;
int v15;
int v16;
__int64 v17;
_LARGE_INTEGER LocalTime;
_LARGE_INTEGER SystemTime;
_EVENT_DATA_DESCRIPTOR UserData;
__int64 v21;
__int64 v22;
_LARGE_INTEGER *p_LocalTime;
__int64 v24;
int *v25;
__int64 v26;
__int64 *v27;
__int64 v28;
__int64 v29;
__int64 v30;
unsigned int *p_ThermalConstant1;
__int64 v32;
unsigned int *p_ThermalConstant2;
__int64 v34;
unsigned int *p_SamplingPeriod;
__int64 v36;
int *v37;
__int64 v38;
unsigned int *p_MinimumThrottle;
__int64 v40;
int v41;
v41 = ThrottleDelta;
LOWORD(v15) = 0;
LocalTime.QuadPart = 0i64;
v17 = 0i64;
LOWORD(v16) = 0;
if( PopDiagHandleRegistered && (Channel || EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_PASSIVE_COOLING_DIAGNOSTIC)) )
{
v8 = (unsigned int)Channel <= Operational;
if( Channel == Operational )
{
if( !EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_PASSIVE_COOLING_OPERATIONAL) )
return;
v8 = (unsigned int)Channel <= Operational;
}
if( v8 )
{
DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag(DeviceObject, 0x67446F50ui64);
v10 = DeviceAttachmentBaseRefWithTag;
if( DeviceAttachmentBaseRefWithTag )
DeviceNode = DeviceAttachmentBaseRefWithTag->DeviceObjectExtension->DeviceNode;
else
DeviceNode = 0i64;
if( DeviceNode )
{
LOWORD(v15) = DeviceNode[64] >> 1;
UserData.Ptr = (unsigned __int64)&v15;
*(_QWORD *)&UserData.Size = 2i64;
v21 = *((_QWORD *)DeviceNode + 17);
v22 = 2 * (unsigned int)(unsigned __int16)v15;
SystemTime = *(_LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart;
ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
v24 = 8i64;
p_LocalTime = &LocalTime;
v27 = &v17;
v26 = 2i64;
v28 = 4i64;
v30 = 4i64;
LOWORD(v16) = PassiveCoolingEngaged != 0;
v25 = &v16;
PassiveTripPoint = ThermalInfo->PassiveTripPoint;
v32 = 4i64;
LODWORD(v17) = PassiveTripPoint / 0xA;
CurrentTemperature = ThermalInfo->CurrentTemperature;
v34 = 4i64;
v29 = (__int64)&v17 + 4;
p_ThermalConstant1 = &ThermalInfo->ThermalConstant1;
p_ThermalConstant2 = &ThermalInfo->ThermalConstant2;
p_SamplingPeriod = &ThermalInfo->SamplingPeriod;
v37 = &v41;
p_MinimumThrottle = &ThermalInfo->MinimumThrottle;
HIDWORD(v17) = CurrentTemperature / 0xA;
v14 = &POP_ETW_EVENT_PASSIVE_COOLING_DIAGNOSTIC;
v36 = 4i64;
v38 = 4i64;
v40 = 4i64;
if( Channel )
v14 = &POP_ETW_EVENT_PASSIVE_COOLING_OPERATIONAL;
EtwWrite(PopDiagHandle, v14, 0, 0xBu, &UserData);
}
if( v10 )
ObfDereferenceObjectWithTag(v10, 0x67446F50ui64);
}
}
}Referenced by:
PopThermalWorker