如何在系统休眠的情况下保持特殊设备供电(如GPS供电)

在PPC上当系统休眠的时候会把很多设备的电源关掉,但是一些应用程序需要一些设备一直工作供电,比如GPS.但是MS官方说的这就需要其它的处理.SetPowerRequirement并不能解决问题,调用该函数在系统断电的时候还是会把指定的设备电源切掉.

正确的做法应该是这样.

1SetPowerRequirement把需要供电的设备名称定好,比如GPS设备一般就是"GPD0:";

2CreateMsgQueue建立消息队列ptr = CreateMsgQueue(L"PtrSvsPowerNotify", &options);

3PowerNotifyHandle = RequestPowerNotifications(ptr, PBT_TRANSITION);

4一般需要另外起一个线程

res =WaitForSingleObject(ptr, 29000);

 if (res == 0)
                    {
                        ReadMsgQueue(ptr, buffer, 1000, ref nRead, WinAPI.INFINITE, ref flags);
                        POWER_BROADCAST pb;

5.判断pb.SystemPowerState是不是"unattended"如果是则调用PowerPolicyNotify(WinAPI.PPN_UNATTENDED, 1);

按照以上的步骤就可以实现当系统休眠的时候指定的设备不会断电了.(该方法在HTC3300机型上试验通过)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值