这可能是显而易见的,但我无法找到/谷歌正确的方法来获取计时器分辨率的当前系统值,程序可以通过 timeBeginPeriod(n)/timeEndPeriod(n) 设置该值。我想了解当前的分辨率是多少...Windows 7 默认值似乎是 15.6 毫秒,但其他应用程序或计算机供应商可能已更改该设置。
有一些工具可以报告该值,但我需要在应用程序中读取该值。
感谢您提供任何快速提示或链接。 C# 会是一个优点,但我知道 P/Invoke 的方法.
编辑: 感谢您的回答,我用 C# 制作了一个小工具,它使用所描述的方法: github.com/tebjan/TimerTool
最佳答案
Windows 计时器分辨率由隐藏的 API 调用提供:
NTSTATUS NtQueryTimerResolution(OUT PULONG MinimumResolution,
OUT PULONG MaximumResolution,
OUT PULONG ActualResolution);
NtQueryTimerResolution
由 native Windows NT 库 NTDLL.DLL 导出。
常见硬件平台的实际分辨率报告为 156,250 或 100,144;较旧的平台可能会报告更大的数字;较新的系统,特别是当支持 HPET(高精度事件计时器)或恒定/不变 TSC 时,可能会为 ActualResolution 返回 156,001。
对timeBeginPeriod(n)
的调用反射(reflect)在ActualResolution中。
更多详细信息请参见this回答。
关于c# - 如何确定当前Windows定时器的分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262821/