Compartilhar via


Função KeQueryInterruptTimePrecise (wdm.h)

A rotina KeQueryInterruptTimePrecise retorna o valor atual do sistema contagem de de tempo de interrupção, com precisão em 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.

Valor de retorno

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

Observações

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 de KeQueryInterruptTime, mas é mais precisa.

O tempo de interrupção relatado pelo 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 de 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 interrupção do temporizador do último relógio e adiciona essa hora ao tempo de interrupção associado ao horário do relógio mais recente. 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 de "viés" à 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 o KeQueryUnbiasedInterruptTime . Uma versão precisa da contagem de tempo de interrupção imparcial não está disponível no momento.

Requisitos

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

Consulte também

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

KeQueryInterruptTime

KeQueryTimeIncrement

KeQueryUnbiasedInterruptTime