2014-01-21 3 views
2

분명할지 모르지만, Google에서 timer resolution의 현재 시스템 값을 얻는 정확한 방법을 찾지 못합니다. 프로그램은 timeBeginPeriod (n)/timeEndPeriod (n)로 설정할 수 있습니다. 현재 해상도가 무엇인지 알아보고 싶습니다 ... Windows   7 기본값은 15.6   ms이지만 다른 응용 프로그램이나 컴퓨터 공급 업체가 설정을 변경했을 수 있습니다.현재 Windows 타이머 해상도를 확인하는 방법은 무엇입니까?

값을보고하는 도구가 있지만 응용 프로그램에서 값을 읽어야합니다.

빠른 힌트 또는 링크 주셔서 감사합니다. C#은 플러스가 되겠지만, 나는 P/Invoke으로 주위를 돌아 다닌다.

편집 : 제가 한 방법을 사용하여 C#에서 작은 도구를했습니다 대답에 감사 : github.com/tebjan/TimerTool

Enter image description here

+0

예,이 스레드를 본 적이 있지만 실제 문제에 대한 대답은 없습니다 ... – thalm

+0

사실일지도 모르지만 중복으로 질문을 표시하는 아이디어는 모든 답변을 유지하려고하는 것입니다 (좋고 나쁨) 함께 한 곳에서. 같은 질문을 다시하기보다는 원래 질문에 현상금을 제공 할 수도 있습니다. –

+0

좋은 소리, 나는이 개념에 익숙하지 않았다. 그것이 내 질문이 아니더라도 나는 현상금을 제공 할 수 있습니까? – thalm

답변

2

윈도우 타이머 해상도가 숨겨진 API 호출에 의해 제공됩니다

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

NtQueryTimerResolution는 기본 Windows NT 라이브러리 NTDLL.DLL에 의해 수출된다.

일반적인 하드웨어 플랫폼은 에 대해 156,250 또는 100,144를보고합니다. ActualResolution; 구형 플랫폼은 더 큰 수를보고 할 수 있습니다. 새로운 시스템, 특히 HPET (고정밀 이벤트 타이머) 또는 상수/불변 TSC가 지원되는 경우 ActualResolution에 대해 156,001을 반환 할 수 있습니다.

timeBeginPeriod(n)으로의 전화는 ActualResolution에 반영됩니다.

자세한 내용은 this 답.