_ftime / Windows内部时间如何工作?

时间:2008-10-17 15:28:14

标签: c++ windows winapi time

我在Windows中发现了一个有趣的问题,它允许我使Windows时钟(但不是硬件时钟)快速运行 - 每分钟多达8秒。我正在做一些背景研究,以确定Windows如何计算和更新它的内部时间(而不是它如何与NTP服务器同步)。任何人提供的任何信息或您可以指向我的任何文件将不胜感激!

另外,如果有人知道_ftime如何运作,请告诉我。

3 个答案:

答案 0 :(得分:3)

This MSDN article简要介绍了系统时间的处理方式:“系统首次启动时,会根据计算机的实时时钟将系统时间设置为一个值,然后定期更新时间。”另一个有趣的功能是GetSystemTimeAdjustment,可以这样说:

  

值为TRUE [对于lpTimeAdjustmentDisabled]表示禁用了周期性时间调整。在每个时钟中断时,系统仅将时钟中断之间的间隔添加到时钟时钟。然而,该系统是免费的,可以使用其他技术调整其时钟。当进行调整时,这些其他技术可能会导致时钟显着跳跃。

最后,关于_ftime,它似乎是使用GetSystemTimeAsFileTime实现的。所以它会直接包装到与其他地方一样的内置时间设施上。

答案 1 :(得分:3)

关于_ftime()如何运作:

如果安装了Microsoft Visual C ++,则可能还安装了C运行时源代码。 _ftime()%ProgramFiles%\Microsoft Visual Studio <version>\VC\crt\src\ftime.c中定义了ftime64.c

答案 2 :(得分:0)

_ftime根本不使用GetSystemTimeAsFileTime。 只需阅读源代码。