PopThermalZoneRemove
VOID __stdcall 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((UINT64)&PolicyDevice[7], 0, 0, 0, 0i64);
if( BYTE1(PolicyDevice[2].DeviceType) )
{
PopThermalUpdatePassiveTimeTracking();
PopTraceThermalZonePassiveHistogram((_POP_THERMAL_ZONE *)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(&PopSystemThermalInfo);
}
if( BYTE1(PolicyDevice[1].Link.Blink) )
PopUpdateOverThrottledCount((_POP_THERMAL_ZONE *)PolicyDevice, 0);
KeDisableTimer2((_KTIMER2 *)&PolicyDevice[4].Name.Buffer, 1u, 1u, 0i64);
BYTE1(PolicyDevice[1].Link.Flink) |= 0x80u;
if( !--PopThermalZoneCount )
{
PopAcquirePolicyLock();
if( *(&stru_140C23628 + 2085) )
{
*(&stru_140C23628 + 2085) = 0;
PopResetCurrentPolicies();
}
PopReleasePolicyLock();
}
PopThermalUpdateTelemetryClientCount(0);
Notification = PolicyDevice[16].Notification;
if( Notification )
ExFreePoolWithTag(Notification, 0);
}Referenced by:
No references.