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 |