2.2.系统电源状态转换
在下列情况下电源管理器将对系统电源状态进行转换:
·一个OEM特定的事件发生时需要做电源状态的切换。
·应用程序调用SetSystemPowerState。
OEM特定的事件可能包括设备供电从外接电源切换为使用电源电池供电,长时间的系统闲置,将设备插入底座,或者电池电量低等,OEM根据具体情况修改电源管理器,来判断两种电源状态的切换是否合理,并做相应的切换。Platform Builder提供的电源管理器源代码仅支持在设备从外接电源切换为电池供电时进行系统电源状态的转换。
应用程序可以调用SetSystemPowerState来使用电源状态的名称表示系统电源状态的参数,如果OEM应用程序了解OEM定义的系统电源状态,可以选择使用明确的电源状态名称来调用,即显示调用。独立于平台的应用程序,通常会设置位,并允许电源管理决定如何进行电源状态映射。电源管理器可以限制应用程序调用SetSystemPowerState的状态。
2.3 系统电源状态举例
系统电源状态到设备电源状态的映射示例如下:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerStateOn]
"Default"=dword:0 ; D0
"Flags"=dword:10000 ; POWER_STATE_ON
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerStateUserIdle]
"Default"=dword:1 ; D1
"Flags"=dword:0
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerStateSystemIdle]
"Default"=dword:2 ; D2
"Flags"=dword:0
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerStateSuspend]
"Default"=dword:3 ; D3
"Flags"=dword:200000 ; POWER_STATE_SUSPEND
; @CESYSGEN IF CE_MODULES_NDIS
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerStateSuspend{98C5250D-C29A-4985-AE5F-AFE5367E5006}]
"Default"=dword:4 ; D4
; @CESYSGEN ENDIF CE_MODULES_NDIS
下表描述了上面注册表的映射方式。
系统电源状态
设备电源状态
On
D0
UserIdle
D1
SystemIdle
D2
Suspend
D3。NDIS迷你接口单独映射为D4
当系统使用上面的注册表配置,并进入Suspend状态,除了NDIS迷你接口会被关闭外,其他可唤醒源都将处于可激活状态。如果有设备不支持D3状态,它将自动进入D4状态。
应用程序可以使用SetPowerRequirement创建设备电源要求,当然也可以使用电源管理器控制面板程序创建附加的设备电源要求。