Power Management Architecture (Windows Embedded CE 6.0)
Power Manager is a Control Panel application that manages devices independent of the base power management model.
The Power Manager interface provides flexibility to OEMs and device driver developers without sacrificing compatibility with the base model. In the base power model, devices receive notification that the OS is suspending and resuming. This notification occurs in an interrupt context, so devices are restricted regarding what they can do during a suspend state and how long they can take to do it. The following illustration describes the power management architecture.
Using Power Manager, devices receive power state change notifications as I/O controls. Because I/O controls run in a thread context, driver developers have much more flexibility in how they implement the power state change. Using I/O controls to manage power also enables separation of device power state from overall OS power state. Thus, some devices can be turned off while the OS is running, and others can be left on while most of the OS is suspended.
In addition to managing device power, Power Manager notifies applications about power-related events. For example, Power Manager informs interested applications when the OS resumes from a suspend state.
Power Manager acts as a mediator between devices, applications, and defined OS power states. It implements the following set of rules to communicate between those three parts:
OS power states impose maximum power consumption limits on all devices.
Applications impose minimum power consumption limits on specific devices to obtain minimum performance levels.
Power Manager allows devices to intelligently manage their own power, as long as their power levels are between the maximum and minimum limits.
If the minimum power consumption limit is set higher than the maximum, the power of the device remains elevated for as long as the application requires the device.
Devices can implement one or more device power states. Device power states are limited in number. For more information, see Device Power States.
If the OS transitions to a suspend state, application-imposed minimum power limits are set aside while the OS is in a suspend state.
Within the Power Manager framework, OEMs define OS power states that establish maximum device power states. Devices call DevicePowerNotify to regulate their own power levels, and applications call SetPowerRequirement to verify that the devices they need are running at an acceptable performance level.
Power Manager is implemented in Pm.dll, which is linked directly with Device.dll. Device.dll invokes entry points in Pm.dll when power management APIs are invoked.
The source for Pm.dll is provided with Platform Builder 4.0 and later, and OEMs can customize it for their Windows Embedded CE-based device.
Power Manager implements the following additional rule to communicate between devices, applications, and defined OS power states:
System power states describe a maximum device power state for all devices. System power states are defined by the OEM, are described in the registry, and may optionally have code to support them in Power Manager. The OEM can define any number of system power states. For more information, see System Power States.