PassiveCooling routine

The PassiveCooling callback routine controls the degree to which the device must throttle its performance to meet cooling requirements.


void PassiveCooling(
  _Inout_opt_ PVOID Context,
  _In_        ULONG Percentage


Context [in, out, optional]

A pointer to interface-specific context information. The caller sets this parameter to the value of the Context member of the THERMAL_COOLING_INTERFACE structure that the driver previously supplied to the caller.

Percentage [in]

The percentage of full performance at which the device is permitted to operate. A parameter value of 100 indicates that the device is under no cooling restrictions and can operate at full performance level. A parameter value of zero indicates that the device must operate at its lowest thermal level. A parameter value between 0 and 100 indicates the degree to which the device's performance must be throttled to reduce heat generation. This parameter value is a threshold that the device must not exceed.

Return value



The driver for a device that has passive-cooling capabilities can implement this routine to enable the operating system to throttle the performance of the device, as necessary, to allow the device to cool.

For example, a device might be throttled by lowering the frequency of the clock that drives the device, by turning off one or more functional units in the device, or by lowering the voltage level on the power rail that supplies power to the device. Throttling a device to decrease the amount of heat that it generates tends to reduce the performance of the device.

The Percentage parameter is a value in the range 0 to 100 that indicates the degree to which the device is throttled. At Percentage = 0, the device is throttled so that it operates at its lowest performance level and generates the minimum amount of heat. At Percentage = 100, the device is not throttled at all; in this mode, the device operates at its full performance level and generates the maximum amount of heat.

A Percentage value between 0 and 100 indicates the percentage of full performance at which the device should operate. For example, a Percentage value of 50 indicates that the device should operate in a passive-power mode in which the heat generated by the device is roughly halfway between the heat generated at the Percentage = 0 and Percentage = 100 settings.

The device must operate at a level that does not exceed the Percentage value specified by the caller—unless the hardware cannot do so safely. For example, if a device can operate at only five different settings that correspond to Percentage values of 0, 25, 50, 75, and 100, and the caller specifies Percentage = 70, the driver must configure the device to operate at the setting that corresponds to Percentage = 50.

Initially, before the first call to the PassiveCooling routine, the device is configured to operate at its full performance level, with no throttling.

The driver for a device that does not have passive-cooling capabilities should set the PassiveCooling member of the THERMAL_COOLING_INTERFACE structure to NULL.

For more information about passive cooling, see Passive and Active Cooling Modes.


Target platform


Supported starting with Windows 8.


Poclass.h (include Poclass.h)



See also




Send comments about this topic to Microsoft