您的位置:首页 > 编程语言

WM/WINCE代码研读系列之Power Management(4)

2009-11-21 11:02 405 查看
下面是PmSetSystemPowerState函数的详细内容

PmSetSystemPowerState
{
PlatformSendSystemPowerState
{
SendSystemPowerState
{
PlatformMapPowerStateHint; //将StateFlags转化成电源状态名
{
对应关系如下:
POWER_STATE_ON -- _T("on");
POWER_STATE_IDLE -- _T("screenoff");
POWER_STATE_SUSPEND -- _T("suspend");
POWER_STATE_OFF -- _T("suspend");
POWER_STATE_CRITICAL -- _T("suspend");
POWER_STATE_RESET -- _T("reboot");
POWER_STATE_USERIDLE -- _T("useridle");
}

//下面两个函数由要设置的电源状态名得到相应的对象指针
SystemStateToActivityState
GetStateObject

AppsCanRequestState //判断要设置的电源状态是否可以被设置
if((dwOptions & POWER_DUMPDW)!=0)
{
//Options 参数带POWER_DUMPDW 时会产生Dr. Watson dump file.
CaptureDumpFileOnDevice;
}
pNewPowerState->EnterState();//这里是实质的设置函数

//将电源状态的状态机转至设置的系统电源状态
pNewPowerState = SetSystemState(pNewPowerState);
m_pCurPowerState = pNewPowerState;

//将ResumingSuspendTimeout,SuspendTimeout,BacklightTimeout,UserIdleTimeout这几个定时器复位
ReInitTimeOuts(FALSE);

//通知PowerStateManager::ThreadRun,这里没有做实质性内容
SetEvent(m_hSystemApiCalled);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: