这可能是显而易见的,但我找不到/ google正确的方法来获取计时器分辨率的当前系统值,程序可以通过timeBeginPeriod(n)/ timeEndPeriod(n)来设置。我想知道当前的分辨率是什么...... Windows 7默认值似乎是15.6毫秒,但其他应用程序或机器供应商可能已经更改了设置。
有一些工具会报告该值,但我需要读取应用程序中的值。
感谢您提供快速提示或链接。 C#会是一个加号,但我知道我的方式P/Invoke。
修改 感谢答案,我在C#中使用了所描述的方法制作了一个小工具: github.com/tebjan/TimerTool
答案 0 :(得分:2)
Windows计时器解析由隐藏的API调用提供:
NTSTATUS NtQueryTimerResolution(OUT PULONGMinimumResolution,
OUT LONGMaximumResolution,
OUT PULONGActualResolution);
NtQueryTimerResolution由本机Windows NT库NTDLL.DLL导出。
ActualResolution 的常见硬件平台报告156,250或100,144;较旧的平台可能会报告更多的数字;更新的系统,特别是当支持HPET(高精度事件计时器)或恒定/不变TSC时,可以为ActualResolution返回156,001。
timeBeginPeriod(n)
的来电会反映在 ActualResolution 中。
this回答中的更多细节。