Power States
A version of this page is also available for
4/8/2010
Power Manager expects all managed devices to support one or more Device Power States. There are a limited number of device power states, and the device must inform Power Manager of its power consumption characteristics. Device power states generally trade off performance for low power consumption.
Some applications may require that a device be maintained at a certain device power level. For example, a streaming audio application might require that its network card and audio codec stay powered at a high level while music is playing. A streaming video application might need network and audio, and it might want to keep the display from going into screen-saver mode and keep the backlight on. Applications can request that Power Manager set minimum device power-state requirements, using the SetPowerRequirement and ReleasePowerRequirement functions.
State Table
Current State | Transition | New State |
---|---|---|
Suspended |
Wake source event |
Resuming |
Suspended |
Power Manager |
SetSystemPowerState; flags are POWER_STATE_SUSPEND, POWER_STATE_OFF, or POWER_STATE_CRITICAL. |
Resuming |
15-second timeout |
Unattended |
Resuming |
On/off event |
On |
Resuming |
On event |
On |
Resuming |
Enter unattended |
Increments the UREF count, and sets the state to Resuming. |
Resuming |
Power Manager |
Cannot be set by SetSystemPowerState. |
Unattended |
UREF set to zero |
Suspended |
Unattended |
SystemIdle timeout |
Suspended |
Unattended |
Unattended |
|
Unattended |
On/off event |
On |
Unattended |
On event |
On |
Unattended |
Power Manager |
Cannot be set by SetSystemPowerState. |
Screen Off |
SystemIdle timeout |
Suspended |
Screen Off |
SystemIdleTimerReset |
Screen off |
Screen Off |
On/off event |
On |
Screen Off |
On event |
On |
Screen Off |
Power Manager |
SetSystemPowerState; flag is POWER_STATE_IDLE. |
On |
SystemIdle timeout |
Suspended |
On |
SystemIdleTimerReset |
On |
On |
On/off event |
Unattended |
On |
On event |
On |
On |
Backlight timeout |
BacklightOff |
On |
User timeout |
UserIdle |
On |
Power Manager |
SetSystemPowerState; flag is POWER_STATE_ON. |
BacklightOff |
SystemIdle timeout |
Suspended |
BacklightOff |
BacklightOff |
|
BacklightOff |
On/off event |
Unattended |
BacklightOff |
On event |
On |
BacklightOff |
User input |
On |
BacklightOff |
User timeout |
UserIdle |
BacklightOff |
Power Manager |
Cannot be set by SetSystempowerState. |
UserIdle |
SystemIdle timeout |
Suspended |
UserIdle |
SystemIdleTimerReset |
UserIdle |
UserIdle |
On/off event |
Unattended |
UserIdle |
On event |
On |
UserIdle |
User input |
On |
UserIdle |
Power Manager |
SetSystemPowerState; flag is POWER_STATE_USERIDLE. |
Remarks
If the UserIdle timeout is less than than the backlight timeout, transition straight to the UserIdle state, and do not go back to BacklightOff when backlight timeout occurs.
The keyboard driver sets events for the power button. It no longer sends VK_OFF.
The keyboard driver no longer needs to check wake source and put the system into the On state.
The keyboard driver no longer needs to check screen state and turn the screen on for the power button.
It is possible that something will still call VK_OFF to turn the system off. Power Manager and the Graphics, Windowing, and Events Subsystem (GWES) need to handle this correctly for backward compatibility.
EnterUnattendedMode increments the reference count of UREF in any state.
LeaveUnattendedMode decrements UREF, if it is not zero, in any state.
The Windows Mobile Standard keyboard driver still sends VK_POWER for a quick press of the power button to bring up QuickList.
On an always-on system such as Windows Mobile Standard, Suspended is actually fully off. No changes in Power Manager are needed.
See Also
Reference
SetPowerRequirement
ReleasePowerRequirement
Concepts
Device Power States
System Power States
Device and System Power State Names