Freigeben über


KeQueryInterruptTimePrecise-Funktion (wdm.h)

Die KeQueryInterruptTimePrecise Routine gibt den aktuellen Wert des Systems Unterbrechungszeit Anzahl zurück, wobei die Genauigkeit innerhalb einer Mikrosekunden beträgt.

Syntax

ULONG64 KeQueryInterruptTimePrecise(
  [out] PULONG64 QpcTimeStamp
);

Parameter

[out] QpcTimeStamp

Ein Zeiger auf eine ULONG64 Variable, in die die Routine den Leistungsindikatorwert schreibt, der zum Interpolieren des Rückgabewerts verwendet wird.

Rückgabewert

Die aktuelle Unterbrechungszeitanzahl in 100 Nanosekundeneinheiten.

Bemerkungen

KeQueryInterruptTimePrecise gibt die aktuelle Unterbrechungszeit des Systems zurück, was die Zeit seit dem letzten Start des Betriebssystems ist. KeQueryInterruptTimePrecise ähnelt der KeQueryInterruptTime Routine, ist aber präziser.

Die von KeQueryInterruptTime gemeldete Unterbrechungszeit basiert auf dem neuesten Tick des Systemuhrzeitgebers. Der Zeitgeber ist der Hardwaretimer, der regelmäßig Unterbrechungen für die Systemuhr generiert. Der einheitliche Zeitraum zwischen Zeitgeberunterbrüchen wird als Systemuhrstrich bezeichnet und liegt in der Regel im Bereich von 500 Mikrosekunden bis 15,625 Millisekunden, je nach Hardwareplattform. Der von KeQueryInterruptTime abgerufene Unterbrechungszeitwert ist innerhalb eines Systemuhrstrichs genau.

Um einen Unterbrechungszeitwert bereitzustellen, der präziser als der von KeQueryInterruptTimeist, verwendet KeQueryInterruptTimePrecise den Systemleistungszähler, um die verstrichene Zeit seit dem letzten Zeitgeberunterbrechung zu messen, und fügt diese Zeit der Unterbrechungszeit hinzu, die der aktuellen Uhrzeit zugeordnet ist. Die von KeQueryInterruptTimePrecise gemeldete Unterbrechungszeit ist innerhalb einer Mikrosekunden genau.

Auf einigen Hardwareplattformen ist ein KeQueryInterruptTimePrecise Aufruf möglicherweise langsamer als ein KeQueryInterruptTime-Aufruf. Der Grund dafür ist, dass KeQueryInterruptTimePrecise den Leistungsindikator liest, der eine zusätzliche Verzögerung darstellen kann. Weitere Informationen finden Sie unter KeQueryPerformanceCounter.

Rufen Sie die KeQueryTimeIncrement Routine auf, um die Größe eines Systemuhrstrichs zu bestimmen.

Präzise Unterbrechungszeit kann verwendet werden, um sehr differenzierte Dauer zu messen, während das System ausgeführt wird, da Vorgänge, die die Systemzeit festlegen oder zurücksetzen, keine Auswirkungen auf die Zeitanzahl der Systemunterbrechungen haben.

Änderungen des Energieverwaltungszustands wirken sich jedoch auf die Anzahl der Unterbrechungszeit des Systems aus. Die Wartung der Unterbrechungszeitanzahl wird während des Ruhezustands des Systems angehalten. Wenn ein späterer Wachzustandsübergang auftritt, fügt das System der Unterbrechungszeitanzahl einen "Bias"-Wert hinzu, um die geschätzte Dauer eines solchen Ruhezustands auszugleichen. Die Unterbrechungszeitanzahl, die von KeQueryInterruptTimePrecise zurückgegeben wird, schließt diesen Bias-Wert ein. Verwenden Sie die KeQueryUnbiasedInterruptTime-, um eine unvoreingenommene Unterbrechungszeit zu erhalten. Eine genaue Version der unvoreingenommenen Unterbrechungszeitanzahl ist zurzeit nicht verfügbar.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.1.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Beliebige Ebene

Siehe auch

Abrufen von hochauflösenden Zeitstempeln

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime