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.