Поделиться через


Функция KeQueryInterruptTimePrecise (wdm.h)

Подпрограмма KeQueryInterruptTimePrecise возвращает текущее значение счетчика времени прерываний системы с точностью до в пределах микросекунд.

Синтаксис

ULONG64 KeQueryInterruptTimePrecise(
  [out] PULONG64 QpcTimeStamp
);

Параметры

[out] QpcTimeStamp

Указатель на переменную ULONG64, в которую подпрограмма записывает значение счетчика производительности, используемое для интерполяции возвращаемого значения.

Возвращаемое значение

Текущее количество времени прерываний в единицах 100 наносекунд.

Комментарии

KeQueryInterruptTimePrecise возвращает текущее время прерывания системы, то есть количество времени с момента последнего запуска операционной системы. KeQueryInterruptTimePrecise похожа на подпрограмму KeQueryInterruptTime , но является более точной.

Время прерывания, сообщаемое KeQueryInterruptTime , основано на последнем тактовом таймере системных часов. Таймер часов — это аппаратный таймер, который периодически создает прерывания для системных часов. Равномерный период между прерываниями таймера часов называется тактом системных часов и обычно находится в диапазоне от 500 микросекунд до 15,625 миллисекунд в зависимости от аппаратной платформы. Значение времени прерывания, полученное KeQueryInterruptTime , является точным в тактах системных часов.

Чтобы указать более точное значение времени прерывания, чем у KeQueryInterruptTime, KeQueryInterruptTimePrecise использует счетчик производительности системы для измерения времени, прошедшего с момента последнего прерывания таймера часов, и добавляет это время к времени прерывания, связанному с последним часовым временем. Время прерывания, сообщаемое KeQueryInterruptTimePrecise , точно равно микросекундам.

На некоторых аппаратных платформах вызов KeQueryInterruptTimePrecise может выполняться медленнее, чем вызов KeQueryInterruptTime . Причина в том, что KeQueryInterruptTimePrecise считывает счетчик производительности, что может привести к дополнительной задержке. Дополнительные сведения см. в разделе KeQueryPerformanceCounter.

Вызовите подпрограмму KeQueryTimeIncrement , чтобы определить размер такта системных часов.

Точное время прерывания можно использовать для измерения очень точной длительности во время работы системы, так как операции, устанавливающие или сбрасывающие системное время, не влияют на количество времени прерываний системы.

Однако изменения состояния управления питанием влияют на количество времени прерываний системы. Обслуживание счетчика времени прерываний приостанавливается во время состояния спящего режима системы. Когда происходит последующий переход состояния пробуждения, система добавляет значение "смещения" к счетчику времени прерывания, чтобы компенсировать предполагаемую продолжительность такого состояния спящего режима. Счетчик времени прерываний, возвращаемый KeQueryInterruptTimePrecise , включает это значение смещения. Чтобы получить беспристрастное количество времени прерываний, используйте KeQueryUnbiasedInterruptTime. Точная версия непредвзятого количества времени прерываний в настоящее время недоступна.

Требования

Требование Значение
Минимальная версия клиента Доступно, начиная с Windows 8.1.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень

См. также раздел

Получение высокоточных меток времени

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime