从 Windows 8 开始,具有 热管理功能 的设备可以实现 GUID_THERMAL_COOLING_INTERFACE 驱动程序接口。 然后,他们可以通过向作系统公开此接口来参与全局热管理。
操作系统调用驱动程序的例程,动态管理平台内的热级别,以响应用户活动和环境条件的变化。
实现概述
若要参与 Windows 热管理,设备驱动程序必须:
- 通过响应
IRP_MN_QUERY_INTERFACE请求来支持热冷却接口。 - 为主动冷却、被动冷却或同时实现回调例程。
- 为接口结构提供指向您回调实现的指针。
- 处理来自操作系统的热管理请求。
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 之前,主动冷却将脱离(例如,风扇已关闭)。