Lire en anglais

Partager via


KeQueryInterruptTimePrecise, fonction (wdm.h)

La routine KeQueryInterruptTimePrecise retourne la valeur actuelle du nombre de temps d’interruption système, avec une précision comprise dans un 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 de retour

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

Remarques

KeQueryInterruptTimePrecise retourne l’heure d’interruption actuelle du système, qui est la durée depuis le dernier démarrage du système d’exploitation. KeQueryInterruptTimePrecise est similaire à la routine KeQueryInterruptTime, mais est plus précise.

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 de temps d’interruption récupérée par KeQueryInterruptTime est exacte dans une graduation d’horloge système.

Pour fournir une valeur de temps 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 fois à l’heure d’interruption associée à la dernière heure de l’horloge. L’heure d’interruption signalée par KeQueryInterruptTimePrecise est exacte dans un microseconde.

Sur certaines plateformes matérielles, un appel KeQueryInterruptTimePrecise peut être plus lent qu’un appel KeQueryInterruptTime. La raison 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 graduation d’horloge système.

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

Toutefois, les modifications 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 suivante 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 le KeQueryUnbiasedInterruptTime. Une version précise du nombre de temps d’interruption non biaisé n’est actuellement pas disponible.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.1.
plateforme cible Universel
d’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