支持功能性电源状态

从 Windows 8 开始,电源管理器包括运行时电源管理框架 (PoFx) 。 PoFx 支持在组件 (或子设备) 级别进行电源和时钟管理。

从 KMDF 版本 1.11 开始,KMDF 驱动程序可以利用 PoFx 提供的精细电源控制。 具体而言,KMDF 驱动程序可以在单个设备中定义多个逻辑组件,其中每个组件都可以独立管理电源。

例如,函数驱动程序可能为设备的每个逻辑组件定义一组唯一的功能电源状态。 与设备和系统电源状态类似,F0 表示组件已完全打开,而可选状态 F1、F2 等表示逐渐降低功率状态。 若要支持 Fx 状态,驱动程序必须是设备的电源策略所有者。

下表汇总了对不同功能电源状态方案的框架支持。

类型 KMDF 支持 UMDF 支持 何时使用/如何实现

单组件、单状态 (F0)

支持

支持

如果希望电源引擎插件 (PEP) 来确定空闲超时值,并且驱动程序只有一个 F 状态。

使用 IdleTimeoutType = SystemManagedIdleTimout 或SystemManagedIdleTimoutWithHint 调用 WdfDeviceAssignS0IdleSettings

单个组件、多个状态 (F0、F1、F2...)

支持

不支持

当驱动程序具有多个 F 状态时。

在这种情况下,KMDF 处理大多数与 PoFx 的交互。

有关示例代码,请参阅 PoFx 示例驱动程序

多个组件,单个或多个状态

支持使用 WDM 接口

不支持

当驱动程序具有多个组件时。 在这种情况下,必须直接使用 PoFx 接口。

有关示例代码,请参阅 PoFx 示例驱动程序

由于 KMDF 在 PoFx 的基础上添加了最少的抽象,因此在编写驱动程序之前,对 PoFx 有基本的了解会很有帮助。 因此,建议先阅读 Power Management Framework 概述, 然后再阅读这些主题。