Freigeben über


KeQueryInterruptTimePrecise-Funktion (wdm.h)

Die KeQueryInterruptTimePrecise-Routine gibt den aktuellen Wert der Anzahl der Systemunterbrechungszeit mit einer Genauigkeit innerhalb einer Mikrosekunde zurück.

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 Interruptzeitanzahl in 100 Nanosekundeneinheiten.

Hinweise

KeQueryInterruptTimePrecise gibt die aktuelle Interruptzeit des Systems zurück, d. h. die Zeitspanne seit dem letzten Start des Betriebssystems. KeQueryInterruptTimePrecise ähnelt der KeQueryInterruptTime-Routine , ist aber genauer.

Die von KeQueryInterruptTime gemeldete Interruptzeit basiert auf dem letzten Tick des Systemuhrtimers. Der Zeitgeber ist der Hardwaretimer, der regelmäßig Interrupts für die Systemuhr generiert. Der einheitliche Zeitraum zwischen Unterbrechungen des Zeitgebers wird als Systemuhrtakt bezeichnet und liegt je nach Hardwareplattform in der Regel im Bereich von 500 Mikrosekunden bis 15,625 Millisekunden. Der von KeQueryInterruptTime abgerufene Interruptzeitwert ist innerhalb eines Systemuhrtakts genau.

Um einen Interruptzeitwert bereitzustellen, der genauer als keQueryInterruptTime ist, verwendet KeQueryInterruptTimePrecise den Systemleistungsindikator, um die seit dem letzten Zeitgeberunterbrechung verstrichene Zeit zu messen, und fügt diese Zeit der Interruptzeit hinzu, die der letzten Uhrzeit zugeordnet ist. Die von KeQueryInterruptTimePrecise gemeldete Interruptzeit ist innerhalb einer Mikrosekunde 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, was zu einer zusätzlichen Verzögerung führen kann. Weitere Informationen finden Sie unter KeQueryPerformanceCounter.

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

Die genaue Unterbrechungszeit kann verwendet werden, um sehr differenzierte Dauer während der Systemausführung zu messen, da Vorgänge, die die Systemzeit festlegen oder zurücksetzen, keine Auswirkungen auf die Anzahl der Systemunterbrechungszeiten haben.

Änderungen des Energieverwaltungszustands wirken sich jedoch auf die Anzahl der Systemunterbrechungszeiten aus. Die Wartung der Interruptzeitanzahl wird während des Systemzustands im Ruhezustand angehalten. Wenn ein nachfolgender Aktivierungszustandsübergang auftritt, fügt das System der Interruptzeitanzahl einen "Bias"-Wert hinzu, um die geschätzte Dauer eines solchen Ruhezustands zu kompensieren. Die Interruptzeitanzahl, die von KeQueryInterruptTimePrecise zurückgegeben wird, enthält diesen Biaswert. Verwenden Sie KeQueryUnbiasedInterruptTime, um eine unvoreingenommene Interruptzeitanzahl zu erhalten. Eine genaue Version der Unvoreingenommenen Interruptzeitanzahl ist derzeit nicht verfügbar.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.1.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

Abrufen von Zeitstempeln mit hoher Auflösung

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime