Funzione KeQueryInterruptTimePrecise (wdm.h)
La routine KeQueryInterruptTimePrecise restituisce il valore corrente del tempo di interruzione, con accuratezza entro un microsecondo.
Sintassi
ULONG64 KeQueryInterruptTimePrecise(
[out] PULONG64 QpcTimeStamp
);
Parametri
[out] QpcTimeStamp
Puntatore a una variabile ULONG64 in cui la routine scrive il valore del contatore delle prestazioni utilizzato per interpolare il valore restituito.
Valore restituito
Conteggio del tempo di interrupt corrente in unità di 100 nanosecondi.
Osservazioni
KeQueryInterruptTimePrecise restituisce l'ora di interruzione corrente del sistema, ovvero la quantità di tempo trascorsa dall'ultimo avvio del sistema operativo. KeQueryInterruptTimePrecise è simile alla routine KeQueryInterruptTime, ma è più precisa.
L'ora di interruzione segnalata da KeQueryInterruptTime si basa sul tick più recente del timer dell'orologio di sistema. Il timer dell'orologio è il timer hardware che genera periodicamente interrupt per l'orologio di sistema. Il periodo uniforme tra gli interrupt timer di clock viene definito tick del clock di sistema ed è in genere compreso nell'intervallo di 500 microsecondi a 15,625 millisecondi, a seconda della piattaforma hardware. Il valore dell'ora di interrupt recuperato da KeQueryInterruptTime è accurato all'interno di un tick dell'orologio di sistema.
Per fornire un valore di ora di interrupt più preciso rispetto a quello di KeQueryInterruptTime, KeQueryInterruptTimePrecise usa il contatore delle prestazioni di sistema per misurare il tempo trascorso dall'ultimo interrupt timer dell'orologio e aggiunge questa ora all'ora di interruzione associata all'ora dell'orologio più recente. Il tempo di interrupt segnalato da KeQueryInterruptTimePrecise è accurato all'interno di un microsecondo.
In alcune piattaforme hardware, una chiamata KeQueryInterruptTimePrecise potrebbe essere più lenta rispetto a una chiamata KeQueryInterruptTime. Il motivo è che KeQueryInterruptTimePrecise legge il contatore delle prestazioni, che può introdurre un ritardo aggiuntivo. Per altre informazioni, vedere KeQueryPerformanceCounter.
Chiamare la routine KeQueryTimeIncrement per determinare le dimensioni di un tick dell'orologio di sistema.
Il tempo di interruzione preciso può essere usato per misurare durate molto fine mentre il sistema è in esecuzione perché le operazioni che impostano o reimpostano l'ora di sistema non hanno alcun effetto sul conteggio dei tempi di interruzione del sistema.
Tuttavia, le modifiche dello stato di risparmio energia influiscono sul conteggio dei tempi di interruzione del sistema. La manutenzione del conteggio dei tempi di interruzione viene sospesa durante gli stati di sospensione del sistema. Quando si verifica una successiva transizione dello stato di riattivazione, il sistema aggiunge un valore di "distorsione" al conteggio dei tempi di interruzione per compensare la durata stimata di tale stato di sospensione. Il numero di tempo di interrupt restituito da KeQueryInterruptTimePrecise include questo valore di distorsione. Per ottenere un conteggio tempo di interrupt non distorto, usare il KeQueryUnbiasedInterruptTime. Una versione precisa del conteggio tempo di interruzione non distorto non è attualmente disponibile.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8.1. |
piattaforma di destinazione | Universale |
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | Qualsiasi livello |