”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > ## 为什么 GetSystemTimeAdjustment 并不总是反映 Windows 7 上的真实时间调整?

## 为什么 GetSystemTimeAdjustment 并不总是反映 Windows 7 上的真实时间调整?

发布于2024-11-09
浏览:216

## Why Does GetSystemTimeAdjustment Not Always Reflect the True Time Adjustment on Windows 7?

Windows 7 计时函数:了解 GetSystemTimeAdjustment

正如您所观察到的,在 Windows 7 上使用 GetSystemTimeAdjustment 函数的结果可能会令人费解。为了更好地理解,让我们解决您的问题:

问题1:假设的正确性

您的假设总体上是正确的。如果系统时间定期同步,您可能会期望没有变化或变化是从 GetSystemTimeAdjustment 获取的增量的倍数。

问题 2:差异原因

The您遇到的差异是由于 GetSystemTimeAsFileTime 提供的系统时间的粒度可能并不总是与 GetSystemTimeAdjustment 报告的实际更新间隔一致。

解释:

GetSystemTimeAsFileTime 提供对系统挂钟(以 100ns 为单位)的访问。但是,系统时间的实际更新速率可能会因硬件因素和多媒体计时器接口的设置而异。

在您的情况下,NtQueryTimerResolution 报告的更新周期约为 25μs,而 GetSystemTimeAdjustment 指示调整15.6 毫秒。这表明系统时间的更新频率比实际同步的频率更高。

含义:

这意味着在时间戳循环中观察到的更改不仅仅是由于正在进行时间调整。相反,它们反映了系统时间的底层更新,这些更新以更高的频率发生。

推荐方法:

不要依赖 GetSystemTimeAdjustment 进行精确计时,而是考虑使用NtQueryTimerResolution来确定系统时间的实际更新间隔。这将更准确地表示系统的计时行为。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3