Condividi tramite


Funzione KeQueryInterruptTimePrecise (wdm.h)

La routine KeQueryInterruptTimePrecise restituisce il valore corrente del numero di tempo di interruzione del sistema, con accuratezza all'interno di 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 usato per interpolare il valore restituito.

Valore restituito

Numero di interruzioni correnti in 100-nanosecondi.

Commenti

KeQueryInterruptTimePrecise restituisce il tempo di interruzione corrente del sistema, ovvero la quantità di tempo trascorso dall'ultimo avvio del sistema operativo. KeQueryInterruptTimePrecise è simile alla routine KeQueryInterruptTime , ma è più precisa.

L'ora di interruzione segnalata da KeQueryInterruptTime è basata sul segno di spunta più recente del timer dell'orologio di sistema. Il timer dell'orologio è il timer hardware che genera periodicamente interruzioni per l'orologio di sistema. Il periodo uniforme tra i timer dell'orologio viene definito un segno di spunta dell'orologio di sistema ed è in genere compreso nell'intervallo di 500 microsecondi a 15,625 millisecondi, a seconda della piattaforma hardware. Il valore del tempo di interruzione recuperato da KeQueryInterruptTime è accurato all'interno di un segno di spunta dell'orologio di sistema.

Per fornire un valore di tempo di interruzione più preciso di quello di KeQueryInterruptTime, KeQueryInterruptTimePrecise usa il contatore delle prestazioni del sistema per misurare il tempo trascorso dall'ultimo interruzione timer dell'orologio e aggiunge questa ora all'ora di interruzione associata all'ora dell'orologio più recente. Il tempo di interruzione segnalato da KeQueryInterruptTimePrecise è accurato all'interno di un microsecondo.

In alcune piattaforme hardware, una chiamata KeQueryInterruptTimePrecise potrebbe essere più lenta di 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 orologio di sistema.

Il tempo di interruzione preciso può essere usato per misurare durate molto granulari mentre il sistema è in esecuzione perché le operazioni che impostano o reimpostano il tempo di sistema non hanno alcun effetto sul numero di tempo di interruzione del sistema.

Tuttavia, le modifiche dello stato di risparmio energia influiscono sul conteggio dei tempi di interruzione del sistema. La manutenzione del numero di tempo di interruzione viene sospesa durante gli stati di sospensione del sistema. Quando si verifica una transizione successiva dello stato di riattivazione, il sistema aggiunge un valore di "pregiudizio" al conteggio tempo di interruzione per compensare la durata stimata di tale stato di sospensione. Il numero di tempo di interruzione restituito da KeQueryInterruptTimePrecise include questo valore di pregiudizio. Per ottenere un conteggio tempo di interruzione non crittografato, usare KeQueryUnbiasedInterruptTime. Non è attualmente disponibile una versione precisa del conteggio tempo di interruzione non crittografato.

Requisiti

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

Vedi anche

Acquisizione di timestamp ad alta risoluzione

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime