Окт 16

Время Windows

Время Windows — это количество миллисекунд, прошедших с момента старта операционной системы. Этот формат времени поддерживается для обратной совместимости с 16-разрядными версиями Windows. Время Windows хранится в виде 32-разрядного целого числа без знака, которое сбрасывается в нулевое значение после того, как Windows проработает примерно 49,7 дней.
Операционная система управляет временем Windows через прерывания системного таймера, добавляя к текущему значению времени Windows приращение, равное периоду работы системного таймера. Кроме того, система периодически синхронизирует время Windows с показаниями часов реального времени, то есть с системным временем, рассматриваемым ниже.
Системный таймер Windows — это программное устройство, находящееся под управлением операционной системы (в отличие от аппаратного таймера, с которым работали программы под управлением MS-DOS).
Обычно период прерываний системного таймера составляет 10 или около 15 мс в зависимости от аппаратной платформы. Точное значение этого периода, называемое также разрешением системного таймера, можно получить с помощью функции GetSystemTimeAdjustment, имеющей следующий прототип:
BOOL GetSystemTimeAdjustment(PDWORD 1pTimeAdjustment.PDWORD IpTimeIncrement.
PBOOL lpTimeAdjustmentDisabled);
Эта функция предоставляет информацию, относящуюся к синхронизации системного времени и времени Windows. При этом значение, возвращаемое через второй параметр, как раз равно периоду прерывания системного таймера, выраженному в 100-наносекундных единицах.
Например, для компьютера, на котором тестировались программы, приводимые в данной книге (с процессором Intel Celeron CPU 2,0 ГГц и операционной системой Microsoft Windows 2000), разрешение системного таймера, полученное с помощью функции GetSystemTimeAdjustment, равно 15,625 мс.
Для получения текущего значения времени Windows предназначена функция GetTickCount. Функция возвращает число миллисекунд, прошедших с момента старта системы. Точность этого измерения определяется разрешающей способностью системного таймера.