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 |