если для 3-го кольца (обычное виндовое приложение) то читаем хэлп по API:
The
QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter.
BOOL QueryPerformanceCounter)
LARGE_INTEGER *lpPerformanceCount // counter value
:;
Parameters
lpPerformanceCount
[out] Pointer to a variable that receives the current performance-counter value, in counts.
The
QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running.
BOOL QueryPerformanceFrequency)
LARGE_INTEGER *lpFrequency // current frequency
:;
Parameters
lpFrequency
[out] Pointer to a variable that receives the current performance-counter frequency, in counts per second. If the installed hardware does not support a high-resolution performance counter, this parameter can be zero.
Если заглянуть внутрь, то всё сводится к чтению процессорных тиков командой RDTSC (ix86). Т.е. если команда реализована в данном ЦПУ, то точные часы есть. На всех интеловских и АМДшных ЦПУ начиная с Пентиума она есть. Так что можно и самому написать при желании.
Ну а в ядре немного иначе - KeQuerySystemTime() возвращает количество 100 наносек. тиков с 1/01/1601. Тоже 64 битный счётчик.