Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma rotina de temporizador do sistema normalmente permite que o chamador especifique um tempo de expiração absoluto ou relativo para um temporizador. Por exemplo, consulte KeWaitForSingleObject, KeSetTimer ou KeDelayExecutionThread. A precisão com que o sistema operacional pode medir os tempos de expiração é limitada pela granularidade do relógio do sistema.
A hora do sistema é atualizada a cada tique do relógio do sistema, sendo precisa apenas até o tique mais recente. Se o chamador especificar um tempo de expiração absoluto, a expiração do temporizador será detectada durante o processamento do primeiro tique do relógio do sistema que ocorre após o horário especificado. Assim, o temporizador pode expirar até um período de relógio do sistema posterior ao tempo de expiração absoluto especificado. Se um intervalo de temporizador ou tempo de expiração relativo for especificado, a expiração poderá ocorrer até um período anterior ou um período posterior à hora especificada, dependendo de onde exatamente os horários de início e término desse intervalo caem entre os tiques do relógio do sistema. Independentemente de uma hora absoluta ou relativa ser especificada, a expiração do temporizador poderá não ser detectada até mais tarde se o processamento de interrupção para o relógio do sistema for atrasado pelo processamento de interrupção para outros dispositivos.
Quando o chamador especifica um tempo de expiração relativo, a rotina do temporizador adiciona o tempo de relógio do sistema atual ao tempo de expiração relativo especificado para calcular o tempo de expiração absoluto a ser usado para o temporizador. Como a hora do sistema é precisa apenas para o tique mais recente do relógio do sistema, o tempo de expiração calculado pode ser até um período de relógio do sistema anterior ao tempo de expiração esperado pelo chamador. Se um tempo de expiração relativo especificado for próximo ou menor que o período do relógio do sistema, o temporizador poderá expirar imediatamente, sem atraso.
Uma maneira possível de dar suporte mais preciso a tempos de expiração mais curtos é diminuir o tempo entre os tiques do relógio do sistema, mas isso provavelmente aumentará o consumo de energia. Além disso, a redução do período do relógio do sistema pode não atingir com confiabilidade uma granularidade mais precisa do relógio do sistema, a menos que seja garantido que o processamento de interrupções para os outros dispositivos na plataforma não irá atrasar o processamento de interrupções do relógio do sistema.
A partir do Windows 8, KeDelayExecutionThread usa uma técnica mais precisa para calcular o tempo de expiração absoluto de um tempo de expiração relativo especificado pelo chamador. Primeiro, para obter uma estimativa mais precisa do tempo atual do sistema, a rotina usa o contador de desempenho do sistema para medir o tempo decorrido desde o último tique do relógio do sistema. Em seguida, a rotina adiciona essa estimativa mais precisa do tempo do sistema ao tempo de expiração relativo para calcular o tempo de expiração absoluto. O tempo de expiração absoluto calculado por essa técnica é preciso em um microssegundo. Como resultado, o temporizador não expirará antes que o tempo de expiração relativo especificado se esgote. O temporizador ainda pode expirar até um período de relógio do sistema posterior à hora especificada e poderá expirar ainda mais tarde se o processamento da interrupção do relógio do sistema for adiado pelo processamento de interrupção para outros dispositivos.
Se o tempo do sistema for alterado antes de um temporizador expirar, um temporizador relativo não será afetado, mas o sistema ajustará cada temporizador absoluto. Um temporizador relativo sempre expira após o número especificado de unidades de tempo decorrido, independentemente do tempo absoluto do sistema. Um temporizador absoluto expira em um horário específico do sistema, portanto, uma alteração no tempo do sistema altera a duração da espera de um temporizador absoluto.