为什么wince 启动时一直在无缘无故执行OEMSetAlarmTime?

本文探讨了WinCE操作系统在启动过程中如何根据特定条件调用OEMSetAlarmTime设置报警时间。通过对SCHEDULE.C文件中SystemStartupFunc函数的源代码分析,揭示了ft和ft3时间变量的比较逻辑。

       虽然多年前的问题,接续http://bbs.youkuaiyun.com/topics/350068269中的讨论 ,始终没有找到合理的解释,通过分析winceos 核心源代码得知,在SCHEDULE.C文件中的SystemStartupFunc()函数中会调用OEMSetAlarmTime,但是是根据条件判断的。

       什么条件呢,就是ft和ft3两个时间相关变量的比较。

		if (hAlarmEvent) {
			OEMGetRealTime(&st);
			KSystemTimeToFileTime(&st,&ft);
			KSystemTimeToFileTime(&CurAlarmTime,&ft2);
			ft3.dwLowDateTime = 100000000; // 10 seconds
			ft3.dwHighDateTime = 0;
			sub64_64_64(&ft2,&ft3,&ft3);
			if (KCompareFileTime(&ft,&ft3) >= 0) {
				SetEvent(hAlarmEvent);
				hAlarmEvent = NULL;
			} else
			    OEMSetAlarmTime(&CurAlarmTime);
		}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值