THERMAL_POLICY

The THERMAL_POLICY struct is used with the IOCTL_THERMAL_READ_POLICY IO control code. Policy drivers use IOCTL_THERMAL_READ_POLICY to set the thermal policy for their associated thermal zone. If no thermal policy is specified, then the kernel uses the policies specified by the ACPI objects and methods declared under the thermal zone, as described in the ACPI specification.

Syntax

C++

typedef struct _THERMAL_POLICY {

ULONG Version; BOOLEAN WaitForUpdate;

BOOLEAN Hibernate;

BOOLEAN Critical;

BOOLEAN ThermalStandby;

ULONG ActivationReasons;

ULONG PassiveLimit;

ULONG ActiveLevel;

} THERMAL_POLICY, *PTHERMAL_POLICY;

Members

Version

Specifies the version of the policy structure. The current version is THERMAL_POLICY_VERSION_1.

WaitForUpdate

Specifies if the policy driver should complete the IOCTL_THERMAL_READ_POLICY IOCTL immediately. If the state is up to date and WaitForUpdate is TRUE, the policy driver should pend the IOCTL in a cancellable state until one of its policy preferences has changed, at which point it should complete the IOCTL with the new preferences. If the state is not up to date or WaitForUpdate is FALSE, the policy driver should immediately complete the IOCTL with the new preferences.

Hibernate

The policy driver specifies TRUE to indicate that the system should hibernate to address a thermal condition. Once the thermal condition has been resolved, the policy driver should set this member to FALSE. If the system does not support hibernate or if hibernate is disabled, the system will shut down instead.

Critical

The policy driver specifies TRUE to indicate that the system should shut down to address a thermal condition.

ThermalStandby

The policy driver specifies TRUE to indicate that the system should enter standby to address a thermal condition. Once the thermal condition has been resolved, the policy driver should set this member to FALSE.

ActivationReasons

Specifies why the thermal zone is throttled.

  • 0x00000000

    Indicates that the zone isn't throttled.

  • #define TZ_ACTIVATION_REASON_THERMAL 0x00000001

    Indicates that the zone is throttled for thermal reasons.

  • #define TZ_ACTIVATION_REASON_CURRENT 0x00000002

    Indicates that the zone is throttled because the system cannot deliver sufficient current.

PassiveLimit

Specifies the amount by which the thermal zone should be throttled. 100 represents unthrottled while 0 represents fully throttled.

ActiveLevel

Specifies the index (from 0 through 9) of the current set of active cooling devices that should be engaged. For example, setting an ActiveLevel of 4 would engage all devices in the thermal zone’s _AL4 device list, as well as any higher-indexed device lists (_AL5, etc.). Specifying 10 will disable all active cooling devices.

THERMAL_WAIT_READ

Thermal management in Windows