Для дальнейшего использования в Windows Vista, 2008 и более поздних версиях Windows требуется аппаратная поддержка «HPET». Это работает независимо от процессора и его тактовой частоты и частоты. Можно получить время с точностью до микросекунды.
Для реализации этого вам НЕОБХОДИМО использовать QPC / QPF. Проблема в том, что QPF (частота) является НОМИНАЛЬНЫМ значением, поэтому использование необработанных вызовов вызовет смещение времени, которое может превышать минуты в день. Чтобы учесть это, вы должны измерить фактическую частоту и проверить ее дрейф с течением времени, так как это повлияет на тепло и другие физические условия работы.
Статья, которая описывает это, может быть найдена на MSDN (приблизительно 2004!) По этой ссылке.
http://msdn.microsoft.com/en-us/magazine/cc163996.aspx
Я сам реализовал нечто похожее на это (и только что нашел вышеупомянутую ссылку сегодня!), Но предпочитаю не использовать «микросекундное время», потому что сам вызов QPC довольно длительный по сравнению с другими вызовами Windows, такими как GetSystemTimeAsFileTime, и добавление синхронизации больше накладных расходов. Поэтому я предпочитаю использовать метки времени в миллисекундах (примерно на 70% меньше времени вызова, чем при использовании QPC), особенно когда я пытаюсь получить время сотни тысяч раз в секунду.