Reporting Device Power Capabilities

During enumeration, drivers report device-specific information in response to a PnP IRP_MN_QUERY_CAPABILITIES request. Along with other such information, drivers report a device's power management capabilities in the DEVICE_CAPABILITIES structure. Typically, the bus driver fills in this structure.

Higher-level drivers should set an IoCompletion routine for the query-capabilities IRP so that they can make a local copy of the structure and ensure that it contains appropriate values. As a general rule, higher-level drivers should not change these values. However, if a change is necessary, a driver can further restrict device capabilities but cannot add to them. In other words, a driver can make the rules more restrictive but cannot loosen them.

After the IRP is complete and all drivers' completion routines have been run, the structure is cached and a driver cannot change its contents.

The following members of the DEVICE_CAPABILITIES structure pertain to power management:

DeviceD1 and DeviceD2

WakeFromD0, WakeFromD1, WakeFromD2, and WakeFromD3

DeviceState

SystemWake

DeviceWake

D1Latency, D2Latency, and D3Latency