虽然多年前的问题,接续http://bbs.csdn.net/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);
		}


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐