问题遇到的现象和发生背景
程序运行环境:windows server 2012操作系统。
程序开发环境:C++、MFC、VS2010
通过日志发现,GetTickCount函数返回值,在没有达到49天左右时,提前(31天左右)发生了归0翻转。
遇到的现象
从日志记录中发现:
当返回值为2684354091时,
1秒内再次记录时,该值为0。
3秒后,该值为3296,并持续累积。
相关代码
日志记录部分的代码:
DWORD dwTick = GetTickCount();
CString strTick;
strTick.Format(" %u ", dwTick);
// 记录到日志文件
Log2File(strTick)
程序中依赖该时间戳的逻辑同样因提前翻转出现了问题。
时间点和现象与日志记录的翻转时间相符。
运行结果及详细报错内容
我的解答思路
反复检查过代码,
没有任何地方显性或隐性的将返回值转换成WORD、SHORT或int,都使用了DWORD类型。
怀疑:
windows server 2012操作系统是否有相关的事件能够触发GetTickCount返回值归0,比如休眠等?但用户程序始终是不间断的运行,所以不可能是操作系统重启
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
请问去除操作系统重启的情况下,是什么原因导致GetTickCount返回值在未到达49天时,提前发生归0翻转