有没有办法使用Windows读取RTC中存储的当前时间?

ash*_*ash 5 windows time winapi bios real-time-clock

我正在寻找一种在 Windows 下运行时从主板查询当前 RTC 的方法。我正在寻找一个简单的未更改时间,因为它存储在硬件时钟中(没有漂移补偿,没有 NTP 时间同步,不是使用性能计数器继续使用的旧时间戳,...)。

我查看了Windows调用GetSystemTime、GetSystemTimeAdjustment、QueryInterruptTime、QueryPerformanceCounter、GetTickCount/GetTickCount64、GetLocalTime。我读到了有关 Windows 时间服务(并且我可以将其关闭)的信息,查看是否有一种方法可以使用旧的 DOS 方式(端口 70/71、INT 21h、INT 1Ah)访问 BIOS,查看了 WMI课程,...但我已经没有主意了。

据我了解,Windows会不时查询硬件时钟,并在偏差超过60秒时相应调整系统时间。这是没有 NTP 的情况。我发现的文档没有说明读取硬件时钟后会发生什么。必须使用另一个计时器来执行硬件读取之间的微计时。

由于我想得出有关时钟源漂移的结论,因此在向窗口询问“本地时间”并将其进度与任何高分辨率计时器(多媒体计时器、时间戳计数器...)进行比较时,这将击败所有推理。

有谁知道如何在 Windows 下运行时尽可能原始地获取当前存储在硬件时钟(RTC)中的时间?