3

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

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

4

3 回答 3

3

这篇 MSDN 文章对如何处理系统时间给出了非常简短的描述:“系统首次启动时,它会将系统时间设置为基于计算机实时时钟的值,然后定期更新时间。” 另一个有趣的函数是GetSystemTimeAdjustment,它是这样说的:

TRUE [for lpTimeAdjustmentDisabled] 值表示禁用周期性时间调整。在每次时钟中断时,系统仅将时钟中断之间的间隔添加到时间时钟。但是,该系统可以免费使用其他技术调整其时钟。当进行调整时,此类其他技术可能会导致时钟明显跳动。

最后,关于 _ftime,它似乎是使用GetSystemTimeAsFileTime实现的。因此,它将直接包装在与其他任何地方使用的相同的内置时间设施上。

于 2008-10-17T22:44:31.550 回答
3

关于如何_ftime()工作:

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

于 2008-10-18T01:25:24.640 回答
0

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

于 2008-10-18T18:23:15.333 回答