请教在 Windows Mobile 5,6 (PPC) 上如何保持 SD 卡的供电(即便在系统 suspend 的时候)

qiusheng   2008-2-17 18:16 楼主
请教在 Windows Mobile 5,6 (PPC) 上如何保持 SD 卡的供电(即便在系统 suspend 的时候)

问题起因:
由于 WM 会在系统 suspend 的时候关闭 SD 卡电源,于是导致在系统 awake 之后应用程序所持有的文件句柄失效(短暂失效或者永久失效),进而导致应用程序崩溃。典型的应用是 GPS 或者金山词霸等大数据量的应用程序。另外,由于手机的内部存储容量很小,极容易装满,所以总会有机会将程序安装到 SD 卡上的。

于是,如何防止应用程序崩溃呢?其中一个办法就是在系统 suspend 的时候,仍然保持 SD 卡供电。

我的尝试:
查看许多资料,都建议调用 SetPowerRequirement。
我的代码是
        m_code =L"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}\\DSK1:";
        HANDLE hRequire = SetPowerRequirement(L"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}\\DSK1:", D0, POWER_NAME|POWER_FORCE, NULL, 0);
        ASSERT(hRequire != NULL);
        DWORD err = GetLastError();

返回值表明一切正常。但是,金山词霸等在 SD 卡上运行的程序仍然出现了崩溃或者无声无息地退出。

如何重现:
多次按电源键,让系统不断重复 suspend - awake 的过程。每个状态停留的状态5 秒左右,最好 10 秒。另外,断开 USB 供电。


Thanks in advance!

sunshaking at-> gmail.com

回复评论 (6)

另外,在手机上运行 “设备管理器” 可看到 SD 卡的驱动器名是 “DSK1:"

点赞  2008-2-17 18:24
SD卡是否供电不是由它决定的,而是由系统的PM driver决定的,所以你无法更改。
唯一的办法是阻止系统进入suspend,但是这样一来,你的手机就十分耗电了。
点赞  2008-2-18 16:30
最好的办法是使用 db4o 之类的东西来保存你的程序对象。 db4o很简单,只要1天就可以学会。一旦使用它,即使用户随时把电池拔出来也不怕了。
点赞  2008-2-18 20:17
dissapointed...
点赞  2008-2-26 10:03
请教在 Windows Mobile 5,6 (PPC) 上如何保持 SD 卡的供电(即便在系统 suspend 的时候)

我也遇到这个问题,请问是怎么解决的呢??非常感谢!!

点赞  2008-7-25 12:07
没有解决。
点赞  2008-8-30 14:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复