Como é que _ftime / trabalho a tempo interno do Windows?
Pergunta
Eu encontrei um problema interessante em janelas que me permite fazer com que o relógio do Windows (mas não os relógios de hardware) para correr rápido - tanto quanto 8 segundos a cada minuto. Eu estou fazendo alguma pesquisa de fundo para trabalhar como calcula e atualizações do Windows é hora interna (não como ele sincroniza com um servidores NTP). Qualquer informação alguém tem ou quaisquer documentos que você pode apontar-me a seria muito apreciada!
Além disso, se alguém sabe como _ftime funciona por favor me avise.
Solução
Este artigo MSDN dá uma muito breve descrição de como a hora do sistema é tratado: "Quando pela primeira vez o sistema é iniciado, ele define a hora do sistema para um valor com base no relógio de tempo real do computador e, em seguida, atualiza regularmente o tempo todo." Outra função interessante é GetSystemTimeAdjustment , que tem que dizer isto:
Um valor de TRUE [para lpTimeAdjustmentDisabled] indica que o ajuste do tempo periódica é desativado. Em cada interrupção de relógio, o sistema apenas adiciona o intervalo entre as interrupções do relógio para o relógio de tempo-de-dia. O sistema é livre, no entanto, para ajustar seu relógio de hora do dia usando outras técnicas. Tais outras técnicas podem fazer com que o relógio de hora do dia para saltar visivelmente quando os ajustes são feitos.
Finalmente, em relação à _ftime, parece ser implementado usando GetSystemTimeAsFileTime . Por isso envolveria diretamente sobre as mesmas facilidades embutidas tempo que seria usado em qualquer outro lugar.
Outras dicas
A respeito de como _ftime()
funciona:
Se você tiver o Microsoft Visual C ++ instalado, você provavelmente tem a fonte de tempo de execução C instalado também. _ftime()
é definida em %ProgramFiles%\Microsoft Visual Studio <version>\VC\crt\src\ftime.c
e ftime64.c
.
_ftime não usar em tudo GetSystemTimeAsFileTime. Basta ler o código-fonte.