2014-01-21 1 views
2

Это может быть очевидно, но я не могу найти/google правильный метод, чтобы получить текущее системное значение разрешения таймера, которое программа может установить по времениBeginPeriod (n)/timeEndPeriod (n). Я хочу узнать, каково текущее разрешение ... Значение по умолчанию для Windows   7 составляет 15,6   мс, но другие приложения или поставщик оборудования, возможно, изменили настройку.Как определить текущее разрешение таймера Windows?

Есть некоторые инструменты, которые сообщают о значении, но мне нужно прочитать значение в приложении.

Спасибо за любой быстрый намек или ссылку. C# будет плюсом, но я знаю свой путь с P/Invoke.

EDIT: Благодаря ответ я сделал немного инструмент в C#, который использует описанный метод: github.com/tebjan/TimerTool

Enter image description here

+0

Да, я видел эту тему, но ответа на реальную проблему нет ... – thalm

+0

Это может быть правдой, но идея помечать вопросы в качестве дубликатов заключается в том, чтобы попытаться сохранить все ответы (хорошие и плохие) вместе в одном месте. Возможно, вы захотите предложить щедрость по оригинальному вопросу, а не повторять одно и то же. –

+0

Это звучит неплохо, я не был знаком с этой концепцией. могу ли я предложить щедрость, даже если это не мой вопрос? – thalm

ответ

2
разрешение таймера

Windows, обеспечивается скрытый вызов API:

NTSTATUS NtQueryTimerResolution(OUT PULONGMinimumResolution, 
           OUT LONGMaximumResolution, 
           OUT PULONGActualResolution); 

NtQueryTimerResolution экспортируется родной Windows NT библиотеки NTDLL.DLL.

Общий отчет об аппаратных платформах 156,250 или 100,144 для ActualResolution; более старые платформы могут сообщать даже о большем количестве номеров; более новые системы, в частности, когда HPET (таймер с высокой точностью) или постоянный/инвариантный TSC поддерживаются, могут возвращать 156 001 для ActualResolution.

Звонки на timeBeginPeriod(n) отражены в ActualResolution.

Подробнее в this ответ.

 Смежные вопросы

  • Нет связанных вопросов^_^