热管理实现

从 Windows 8 开始,具有 热管理功能 的设备可以实现 GUID_THERMAL_COOLING_INTERFACE 驱动程序接口。 然后,他们可以通过向作系统公开此接口来参与全局热管理。

操作系统调用驱动程序的例程,动态管理平台内的热级别,以响应用户活动和环境条件的变化。

实现概述

若要参与 Windows 热管理,设备驱动程序必须:

  1. 通过响应 IRP_MN_QUERY_INTERFACE 请求来支持热冷却接口。
  2. 为主动冷却、被动冷却或同时实现回调例程。
  3. 为接口结构提供指向您回调实现的指针。
  4. 处理来自操作系统的热管理请求。

GUID_热冷却接口

GUID_THERMAL_COOLING_INTERFACE 使设备驱动程序能够参与硬件平台的全局热管理。 实现此接口时,作系统可以跨多个设备协调热管理,以获得最佳的系统性能。

接口发现

在系统启动期间,系统提供的驱动程序 Acpi.sys 查询设备驱动程序以确定哪些驱动程序支持热管理。 具体而言,它会发送 IRP_MN_QUERY_INTERFACE 请求 GUID_THERMAL_COOLING_INTERFACE

为了响应此请求,具有热管理功能的设备驱动程序可以提供指向 THERMAL_COOLING_INTERFACE 结构的指针。 此结构包含指向驱动程序实现的一组回调例程的指针。 若要管理设备中的热级别,OS 会直接调用这些例程。

在调用AddDevice例程后的任何时候,您的驱动程序都可能会收到此接口的IRP_MN_QUERY_INTERFACE请求。

回调例程实现

此接口中实现的两个主要驱动程序的回调例程是:

可以根据设备的功能实现其中一个或两个例程。 有关这些冷却模式的详细信息,请参阅 设备级热管理

PassiveCooling 回调

驱动程序的 PassiveCooling 例程控制设备性能必须调节的程度,以维持可接受的热水平。 此例程:

  • 调整设备性能以保持可接受的热级别。
  • 采用百分比参数,指示所需的冷却级别(0-100%)。
  • 实现适用于设备类型的性能缩放。

在 OS 首次调用 PassiveCooling 之前,请将设备配置为以完全性能运行,且没有冷却限制。

ActiveCooling 回调

ActiveCooling 例程控制硬件中的主动冷却设备。 此例程:

  • 根据操作系统的请求启用或禁用主动冷却。
  • 控制冷却硬件,例如风扇、泵或其他热管理设备。 例如,此例程可能会打开和关闭风扇。
  • 采用一个布尔参数,指示是打开冷却(TRUE)还是关闭(FALSE)。

默认情况下,在首次调用 ActiveCooling 之前,主动冷却将脱离(例如,风扇已关闭)。