设备级热量管理

从Windows 8开始,Windows 支持内核模式设备驱动程序的设备级热管理。 Windows 热管理具有以下目标:

  • 防止硬件平台中的设备过热,这可能导致设备运行错误或不可靠。

  • 避免使计算机外壳上的用户可访问表面太热,无法舒适地触摸或按住。

与电源管理类似,必须在平台范围内通过在全球热条件的上下文中协调设备本地热约束来实现热管理。 通过提供全局协调,操作系统可以在多个设备之间分配冷却要求,从而最大程度地减少对用户正在执行的任务的干扰。 热需求可以与其他系统要求智能地平衡,例如电源管理和对用户操作的响应能力。

相比之下,尝试在本地管理设备热级别的设备驱动程序与平台中的其他设备隔离时,更有可能做出错误决策,导致电源使用效率低下,用户界面 (UI) 无响应。

为了参与全局热管理,设备驱动程序实现 GUID_THERMAL_COOLING_INTERFACE 驱动程序接口。 在系统启动期间,系统提供的驱动程序(Acpi.sys)查询系统中的设备驱动程序,以确定其中哪个驱动程序支持此接口。 调用驱动程序设备的 AddDevice 例程后,驱动程序可以随时收到对此接口的IRP_MN_QUERY_INTERFACE请求。 为了响应此请求,具有热管理功能的设备驱动程序可以提供指向 THERMAL_COOLING_INTERFACE 结构的指针。 此结构包含指向驱动程序实现的一组回调例程的指针。 为了管理设备中的热级别,操作系统直接调用这些例程。

此接口中的两个主要例程是 ActiveCoolingPassiveCooling。 驱动程序的 ActiveCooling 例程在设备中接触或脱离主动冷却。 例如,此例程可能会打开和关闭风扇。 驱动程序的 PassiveCooling 例程控制必须限制设备性能才能保持可接受的热级别。 例如,可以调用此例程以半速运行设备,以防止设备过热。

默认情况下,在首次调用 ActiveCooling 例程之前,主动冷却 (关闭) 。 在首次调用 PassiveCooling 例程之前,驱动程序将设备配置为以完全性能运行,没有冷却限制。

驱动程序可以实现其中一个或两个例程,具体取决于设备硬件的功能。 有关详细信息,请参阅 被动和主动冷却模式