Программирование драйверов Windows

       

Функции для работы с системным представлением времени


Внутреннее время в Windows 2000/XP/Server 2003 хранится как число 100-наносекундных отсчетов с 1 января 1601 года. Это очень большое число, и для его хранения используется 64-разрядный тип данных в структуре, обозначенной как тип данных LARGE_INTEGER. В таблице 7.44 перечислены функции, предназначенные для работы с такими данными.

Таблица 7.44. Функции для работы с системным представлением времени

Функции Описание
KeQuerySystemTime Возвращает 64-разрядное значение абсолютного системного времени
KeQueryTickCount Возвращает число прерываний системного таймера (часов) с момента последней загрузки системы
KeQueryTimelncrement Возвращает число 100-нс интервалов, добавляемых к системному времени при каждом прерывании, поступающем от системного таймера (часов)
RtlTimeToTimeFields Разбивает 64-разрядное системное время на поля даты и времени
RtlTimeFieldsToTime Преобразует дату и время в 64-разрядное значение абсолютного системного времени
RtlConvertLongToLargeInteger Создает знаковое LARGE_INTEGER
RtlConvertULongToLargelnteger Создает положительное LARGE_INTEGER
RtlLargelntegerXxx Различные арифметические и логические операции над типом данных LARGE_INTEGER (вместо этих функций в пакете DDK рекомендовано использовать встроенную поддержку компилятора для 64-разрядных операций)

Все приведенные функции могут вызваться на любом уровне IRQL. Прототип одной из них, вызова KeQuerySystemTime, приводится ниже.

Таблица 7.45. Прототип вызова KeQuerySystemTime

VOID KeQuerySystemTime IRQL == любой
Параметры Возвращает текущее время
OUT PLARGE_INTEGER

CurrentTime

Время в 100 нc интервалах с 1 января 1601 года
Возвращаемое значение void



Содержание раздела