Compartilhar via


Função KeQueryInterruptTimePrecise (wdm.h)

A rotina KeQueryInterruptTimePrecise retorna o valor atual da contagem de tempo de interrupção do sistema, com precisão para dentro de um microssegundo.

Sintaxe

ULONG64 KeQueryInterruptTimePrecise(
  [out] PULONG64 QpcTimeStamp
);

Parâmetros

[out] QpcTimeStamp

Um ponteiro para uma variável ULONG64 na qual a rotina grava o valor do contador de desempenho usado para interpolar o valor retornado.

Retornar valor

A contagem atual de tempo de interrupção em unidades de 100 nanossegundos.

Comentários

KeQueryInterruptTimePrecise retorna o tempo de interrupção atual do sistema, que é a quantidade de tempo desde que o sistema operacional foi iniciado pela última vez. KeQueryInterruptTimePrecise é semelhante à rotina KeQueryInterruptTime , mas é mais preciso.

O tempo de interrupção relatado por KeQueryInterruptTime baseia-se no tique mais recente do temporizador do relógio do sistema. O temporizador de relógio é o temporizador de hardware que gera periodicamente interrupções para o relógio do sistema. O período uniforme entre interrupções do temporizador de relógio é conhecido como um tique de relógio do sistema e normalmente está no intervalo de 500 microssegundos a 15.625 milissegundos, dependendo da plataforma de hardware. O valor de tempo de interrupção recuperado por KeQueryInterruptTime é preciso dentro de um tique de relógio do sistema.

Para fornecer um valor de tempo de interrupção mais preciso do que o de KeQueryInterruptTime, KeQueryInterruptTimePrecise usa o contador de desempenho do sistema para medir o tempo decorrido desde a última interrupção do temporizador do relógio e adiciona esse tempo ao tempo de interrupção associado à hora mais recente do relógio. O tempo de interrupção relatado por KeQueryInterruptTimePrecise é preciso em um microssegundo.

Em algumas plataformas de hardware, uma chamada KeQueryInterruptTimePrecise pode ser mais lenta do que uma chamada KeQueryInterruptTime . O motivo é que KeQueryInterruptTimePrecise lê o contador de desempenho, o que pode introduzir um atraso adicional. Para obter mais informações, consulte KeQueryPerformanceCounter.

Chame a rotina KeQueryTimeIncrement para determinar o tamanho de um tique de relógio do sistema.

O tempo de interrupção preciso pode ser usado para medir durações muito refinadas enquanto o sistema está em execução porque as operações que definem ou redefinem o tempo do sistema não têm efeito na contagem de tempo de interrupção do sistema.

No entanto, as alterações de estado de gerenciamento de energia afetam a contagem de tempo de interrupção do sistema. A manutenção da contagem de tempo de interrupção é suspensa durante os estados de suspensão do sistema. Quando ocorre uma transição de estado de ativação subsequente, o sistema adiciona um valor "bias" à contagem de tempo de interrupção para compensar a duração estimada desse estado de suspensão. A contagem de tempo de interrupção retornada por KeQueryInterruptTimePrecise inclui esse valor de viés. Para obter uma contagem de tempo de interrupção imparcial, use KeQueryUnbiasedInterruptTime. Uma versão precisa da contagem de tempo de interrupção imparcial não está disponível no momento.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.1.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível

Confira também

Aquisição de carimbos de data/hora de alta resolução

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime