Supporting Functional Power States
Starting in Windows 8, the power manager includes the run-time power management framework (PoFx). PoFx supports power and clock management at the component (or subdevice) level.
Starting in KMDF version 1.11, KMDF drivers can take advantage of the fine-grained power control that PoFx offers. In particular, a KMDF driver can define multiple logical components within a single device, each of which can be independently power managed.
For example, a function driver might define a unique set of functional power states for each logical component of a device. Similar to device and system power states, F0 indicates that the component is fully on, while optional states F1, F2, and so on indicate progressively lower power states. To support Fx states, a driver must be the power policy owner for the device.
The following table summarizes framework support for different functional power state scenarios.
Type | KMDF Support | UMDF Support | When to use/how to Implement |
---|---|---|---|
Supported |
Supported |
When you want the power engine plug-in (PEP) to determine the idle timeout value, and your driver has only one F-state. Call WdfDeviceAssignS0IdleSettings with IdleTimeoutType = SystemManagedIdleTimout or SystemManagedIdleTimoutWithHint. |
|
Supported |
Not supported |
When your driver has more than one F-state.
In this case, KMDF handles most interactions with the PoFx. For sample code, see PoFx sample drivers. |
|
Supported using WDM interfaces |
Not supported |
When your driver has multiple components. In this case, you must use the PoFx interfaces directly. For sample code, see PoFx sample drivers. |
Because KMDF adds minimal abstraction on top of PoFx, it is helpful to have a basic understanding of PoFx before writing your driver. Accordingly, we recommend that you read Overview of the Power Management Framework before reading these topics.