设备唤醒后只能进入D1状态,无法进入D0状态,如何解决?
我做了一个设备驱动程序,该程序有三种电源状态D0,D1,D4,当“ACUserIdle”超时后,设备进入D1状态,当按下睡眠开关后设备进入D4状态,我按照下面步骤做了这样一个测试:
1)最初设备处于D0状态,等待“ACUserIdle”超时,设备进入D1状态;
2)按下睡眠按钮,设备进入D4状态,系统睡眠;
3)按下唤醒按钮,设备进入D1状态(注意,此处不是D0状态);
我现在想实现当按下唤醒按钮后,设备进入D0状态而不是D1状态,于是我就在PowerUp函数中调用了下面的函数
SetDevicePower(L"DEV1:", POWER_NAME,(CEDEVICE_POWER_STATE)D0);
调用该函数后,确实能够让设备进入D0状态,但是以后再也无法收到超时“ACUserIdle”超时进入D1状态了,为什么,如何解决该问题?