Función KeQueryInterruptTimePrecise (wdm.h)

La rutina KeQueryInterruptTimePrecise devuelve el valor actual del recuento de tiempo de interrupción del sistema, con precisión en un microsegundo.

Sintaxis

ULONG64 KeQueryInterruptTimePrecise(
  [out] PULONG64 QpcTimeStamp
);

Parámetros

[out] QpcTimeStamp

Puntero a una variable ULONG64 en la que la rutina escribe el valor del contador de rendimiento usado para interpolar el valor devuelto.

Valor devuelto

Recuento de tiempo de interrupción actual en unidades de 100 nanosegundos.

Comentarios

KeQueryInterruptTimePrecise devuelve el tiempo de interrupción actual del sistema, que es la cantidad de tiempo desde que se inició por última vez el sistema operativo. KeQueryInterruptTimePrecise es similar a la rutina KeQueryInterruptTime , pero es más precisa.

El tiempo de interrupción notificado por KeQueryInterruptTime se basa en el último tic del temporizador del reloj del sistema. El temporizador de reloj es el temporizador de hardware que genera periódicamente interrupciones para el reloj del sistema. El período uniforme entre las interrupciones del temporizador del reloj se conoce como un tic del reloj del sistema, y normalmente está en el intervalo de 500 microsegundos a 15,625 milisegundos, dependiendo de la plataforma de hardware. El valor de tiempo de interrupción recuperado por KeQueryInterruptTime es preciso dentro de un tic del reloj del sistema.

Para proporcionar un valor de tiempo de interrupción más preciso que el de KeQueryInterruptTime, KeQueryInterruptTimePrecise usa el contador de rendimiento del sistema para medir el tiempo transcurrido desde la última interrupción del temporizador del reloj y agrega esta hora a la hora de interrupción asociada a la hora del reloj más reciente. El tiempo de interrupción notificado por KeQueryInterruptTimePrecise es preciso en un microsegundo.

En algunas plataformas de hardware, una llamada a KeQueryInterruptTimePrecise puede ser más lenta que una llamada a KeQueryInterruptTime . La razón es que KeQueryInterruptTimePrecise lee el contador de rendimiento, lo que puede introducir un retraso adicional. Para obtener más información, vea KeQueryPerformanceCounter.

Llame a la rutina KeQueryTimeIncrement para determinar el tamaño de un tic del reloj del sistema.

El tiempo de interrupción preciso se puede usar para medir duraciones muy específicas mientras se ejecuta el sistema porque las operaciones que establecen o restablecen la hora del sistema no tienen ningún efecto en el recuento de tiempo de interrupción del sistema.

Sin embargo, los cambios de estado de administración de energía afectan al recuento de tiempo de interrupción del sistema. El mantenimiento del recuento de tiempo de interrupción se suspende durante los estados de suspensión del sistema. Cuando se produce una transición de estado de reactivación posterior, el sistema agrega un valor de "sesgo" al recuento de tiempo de interrupción para compensar la duración estimada de este estado de suspensión. El recuento de tiempo de interrupción devuelto por KeQueryInterruptTimePrecise incluye este valor de sesgo. Para obtener un recuento de tiempo de interrupción no sesgado, use KeQueryUnbiasedInterruptTime. Actualmente no hay disponible una versión precisa del recuento de tiempo de interrupción no sesgado.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.1.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel

Consulte también

Adquisición de marcas de tiempo de alta resolución

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime