THERMAL_COOLING_INTERFACE structure

The THERMAL_COOLING_INTERFACE structure enables the operating system to control the thermal management settings of a device.

Syntax

typedef struct _THERMAL_COOLING_INTERFACE {
  USHORT                  Size;
  USHORT                  Version;
  PVOID                   Context;
  PINTERFACE_REFERENCE    InterfaceReference;
  PINTERFACE_DEREFERENCE  InterfaceDereference;
  ULONG                   Flags;
  PDEVICE_ACTIVE_COOLING  ActiveCooling;
  PDEVICE_PASSIVE_COOLING PassiveCooling;
} THERMAL_COOLING_INTERFACE, *PTHERMAL_COOLING_INTERFACE;

Members

  • Size
    The size, in bytes, of this structure. Set this member to sizeof(THERMAL_COOLING_INTERFACE).

  • Version
    The interface version number. The current version is specified by the THERMAL_COOLING_INTERFACE_VERSION constant in the Poclass.h header file. For more information, see Remarks.

  • Context
    A pointer to interface-specific context information. During a callback to any of the driver-implemented routines pointed to by this structure, the caller passes this context pointer to the routine as the first parameter value.

  • InterfaceReference
    A pointer to an InterfaceReference routine that increments the interface's reference count.

  • InterfaceDereference
    A pointer to an InterfaceDereference routine that decrements the interface's reference count.

  • Flags
    Reserved. Set to zero.

  • ActiveCooling
    A pointer to an ActiveCooling routine that engages or disengages active cooling (for example, by turning a fan on or off). A device that does not support active cooling sets this member to NULL.

  • PassiveCooling
    A pointer to an PassiveCooling routine that controls the degree to which the operation of the device must be throttled to reduce the heat generated by the device. A device that does not support passive cooling sets this member to NULL.

Remarks

The THERMAL_COOLING_INTERFACE structure is an extension of the INTERFACE structure.

Starting with Windows 8, the operating system calls the routines pointed to by the THERMAL_COOLING_INTERFACE structure to control the thermal levels of the devices in a hardware platform. For more information, see Device-Level Thermal Management.

All implementations of the GUID_THERMAL_COOLING_INTERFACE driver interface must supply InterfaceReference and InterfaceDereference routines. In addition, an implementation must supply either an ActiveCooling routine or a PassiveCooling routine, and can supply both.

The driver for a device that provides an active cooling function (for example, a fan) implements an ActiveCooling routine. The operating system calls this routine to engage and disengage the active cooling function. Initially, before the first call to this routine, the device is configured so that the active cooling function is disengaged (turned off).

The driver for a device that provides a passive cooling function implements a PassiveCooling routine. The operating system calls this routine to control the degree to which the device is throttled. Throttling a device decreases its performance level to enable the device to cool. Initially, before the first call to this routine, the device is configured to operate at its full performance level, with no cooling restrictions.

For more information, see Passive and Active Cooling Modes.

When a device driver receives an IRP_MN_QUERY_INTERFACE request for the GUID_THERMAL_COOLING_INTERFACE driver interface, the input parameters for this request are contained in the Parameters.QueryInterface member of the IO_STACK_LOCATION structure. The Size and Version input parameters specify which version of the interface is being requested. If the device driver that handles this request supports the specified version, this driver should set the Size and Version members of the THERMAL_COOLING_INTERFACE structure to the same values as the Size and Version input parameters. A device driver that does not support the specified interface version should complete the request with status code STATUS_NOT_SUPPORTED.

Requirements

Version

Supported starting with Windows 8.

Header

Poclass.h (include Poclass.h)

See also

ActiveCooling

GUID_THERMAL_COOLING_INTERFACE

INTERFACE

InterfaceDereference

InterfaceReference

IO_STACK_LOCATION

IRP_MN_QUERY_INTERFACE

PassiveCooling

 

 

Send comments about this topic to Microsoft