请教在 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
另外,在手机上运行 “设备管理器” 可看到 SD 卡的驱动器名是 “DSK1:"
SD卡是否供电不是由它决定的,而是由系统的PM driver决定的,所以你无法更改。
唯一的办法是阻止系统进入suspend,但是这样一来,你的手机就十分耗电了。
最好的办法是使用 db4o 之类的东西来保存你的程序对象。 db4o很简单,只要1天就可以学会。一旦使用它,即使用户随时把电池拔出来也不怕了。
请教在 Windows Mobile 5,6 (PPC) 上如何保持 SD 卡的供电(即便在系统 suspend 的时候)
我也遇到这个问题,请问是怎么解决的呢??非常感谢!!