Функция 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 (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |