PopThermalZoneRemove
void __fastcall __noreturn PopThermalZoneRemove(_POP_POLICY_DEVICE *PolicyDevice){
void *v1;
void *v2;
void *v3;
INT64 v5;
void *Notification;
BYTE2(PolicyDevice[1].Link.Flink) = 1;
IoCancelIrp((KDPC *)PolicyDevice->Irp, v1, v2, v3);
KeWaitForSingleObject(&PolicyDevice[7], Executive, 0, 0, 0i64);
if( BYTE1(PolicyDevice[2].DeviceType) )
{
PopThermalUpdatePassiveTimeTracking(
(_POP_THERMAL_TELEMETRY_TRACKER *)&PolicyDevice[7].Irp,
PolicyDevice[1].DeviceType);
PopTraceThermalZonePassiveHistogram((INT64)PolicyDevice);
}
if( BYTE1(PolicyDevice[7].Irp) )
{
LOBYTE(v5) = BYTE5(PolicyDevice[1].Link.Flink);
PopThermalUpdateActiveTimeTracking((INT64)&PolicyDevice[7].Irp, v5);
PopTraceThermalZoneActiveActivity((INT64)PolicyDevice);
}
if( LOBYTE(PolicyDevice[1].Link.Blink) )
{
PopDiagTraceThermalStandbyState(PolicyDevice->Device, 0i64);
PopAcquireRwLockExclusive(&PopSystemThermalInfo);
--dword_140C22C54;
PopTraceZoneCr3Mitigated((unsigned int)GenerationId, (_POP_THERMAL_ZONE *)PolicyDevice);
if( !dword_140C22C54 )
{
PopTraceCr3Mitigated((unsigned int)GenerationId);
if( HIBYTE(word_140C22C50) == 1 )
{
PopThermalStandbyNotify(0);
HIBYTE(word_140C22C50) = 0;
}
}
PopReleaseRwLock((UINT64)&PopSystemThermalInfo);
}
if( BYTE1(PolicyDevice[1].Link.Blink) )
PopUpdateOverThrottledCount((_POP_THERMAL_ZONE *)PolicyDevice, 0);
KeDisableTimer2((__int64)&PolicyDevice[4].Name.Buffer, 1, 1, 0i64);
BYTE1(PolicyDevice[1].Link.Flink) |= 0x80u;
if( !--PopThermalZoneCount )
{
PopAcquirePolicyLock();
if( *(&PopCapabilities + 13) )
{
*(&PopCapabilities + 13) = 0;
PopResetCurrentPolicies();
}
PopReleasePolicyLock();
}
PopThermalUpdateTelemetryClientCount(0);
Notification = PolicyDevice[16].Notification;
if( Notification )
ExFreePoolWithTag(Notification, 0);
}Referenced by:
No references.