KeQueryInterruptTimePrecise, fonction (wdm.h)

La routine KeQueryInterruptTimePrecise retourne la valeur actuelle du nombre de temps d’interruption système, avec une précision à moins d’une microseconde.

Syntaxe

ULONG64 KeQueryInterruptTimePrecise(
  [out] PULONG64 QpcTimeStamp
);

Paramètres

[out] QpcTimeStamp

Pointeur vers une variable ULONG64 dans laquelle la routine écrit la valeur du compteur de performances utilisée pour interpoler la valeur de retour.

Valeur retournée

Nombre actuel de temps d’interruption en unités de 100 nanosecondes.

Remarques

KeQueryInterruptTimePrecise retourne l’heure d’interruption actuelle du système, qui correspond au délai écoulé depuis le dernier démarrage du système d’exploitation. KeQueryInterruptTimePrecise est similaire à la routine KeQueryInterruptTime , mais est plus précis.

L’heure d’interruption signalée par KeQueryInterruptTime est basée sur la dernière graduation du minuteur d’horloge système. Le minuteur d’horloge est le minuteur matériel qui génère régulièrement des interruptions pour l’horloge système. La période uniforme entre les interruptions du minuteur d’horloge est appelée « cycles d’horloge système » et est généralement comprise entre 500 microsecondes et 15,625 millisecondes, selon la plateforme matérielle. La valeur d’heure d’interruption récupérée par KeQueryInterruptTime est précise dans une horloge système.

Pour fournir une valeur d’heure d’interruption plus précise que celle de KeQueryInterruptTime, KeQueryInterruptTimePrecise utilise le compteur de performances système pour mesurer le temps écoulé depuis la dernière interruption du minuteur d’horloge, et ajoute cette heure à l’heure d’interruption associée à l’heure d’horloge la plus récente. L’heure d’interruption signalée par KeQueryInterruptTimePrecise est exacte à une microseconde.

Sur certaines plateformes matérielles, un appel KeQueryInterruptTimePrecise peut être plus lent qu’un appel KeQueryInterruptTime . La raison en est que KeQueryInterruptTimePrecise lit le compteur de performances, ce qui peut introduire un délai supplémentaire. Pour plus d’informations, consultez KeQueryPerformanceCounter.

Appelez la routine KeQueryTimeIncrement pour déterminer la taille d’une horloge système.

Le temps d’interruption précis peut être utilisé pour mesurer des durées très précises pendant l’exécution du système, car les opérations qui définissent ou réinitialisent l’heure système n’ont aucun effet sur le nombre de temps d’interruption système.

Toutefois, les changements d’état de gestion de l’alimentation affectent le nombre de temps d’interruption du système. La maintenance du nombre de temps d’interruption est suspendue pendant les états de veille du système. Lorsqu’une transition d’état de veille ultérieure se produit, le système ajoute une valeur de « biais » au nombre de temps d’interruption pour compenser la durée estimée d’un tel état de veille. Le nombre de temps d’interruption retourné par KeQueryInterruptTimePrecise inclut cette valeur de biais. Pour obtenir un nombre de temps d’interruption non biaisé, utilisez keQueryUnbiasedInterruptTime. Une version précise du nombre de temps d’interruption non biaisée n’est actuellement pas disponible.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.1.
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau

Voir aussi

Acquisition d’horodatages haute résolution

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime