Condividi tramite


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

Vedere anche

Acquisizione di timestamp ad alta risoluzione

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime