Frage

Ich habe ein interessantes Problem in Windows gefunden, die mir die Windows-Uhr verursachen kann (aber nicht die Hardware-Uhren) schnell laufen - so viel wie 8 Sekunden pro Minute. Ich mache einige Hintergrundinformationen Forschung zu erarbeiten, wie Windows berechnet und aktualisiert es interne Zeit (nicht, wie es synchronisiert mit einem NTP-Server). Alle Informationen, jemand hat oder irgendwelche Dokumente, die Sie mir zeigen können würde sehr geschätzt werden!

Auch, wenn jemand weiß, wie _ftime funktioniert lass es mich wissen.

War es hilfreich?

Lösung

Dieser MSDN-Artikel gibt eine sehr kurze Beschreibung, wie die Systemzeit umgegangen wird: „Wenn das System zum ersten Mal gestartet wird, die Systemzeit auf einen Wert setzt auf der Echtzeituhr des Computers basierte und aktualisiert regelmäßig die Zeit“ Eine weitere interessante Funktion ist GetSystemTimeAdjustment , die dies hat zu sagen:

  

Ein Wert TRUE [für lpTimeAdjustmentDisabled] gibt an, dass periodische Zeiteinstellung deaktiviert. Bei jedem Takt Interrupt fügt das System lediglich das Intervall zwischen dem Takt an den Taktzeit-Tag unterbricht. Das System ist frei, aber seine Zeit-of-day einzustellen Uhr andere Techniken. Solche anderen Techniken, um die Time-of-Tage-Uhr springen kann dazu führen, merklich, wenn Anpassungen vorgenommen werden.

Schließlich, im Hinblick auf _ftime, es implementiert zu sein scheint mit GetSystemTimeAsFileTime . So wäre es direkt auf die gleichen eingebauten Zeiteinrichtungen wickelt wie es sonst überall verwendet werden.

Andere Tipps

In Bezug auf, wie _ftime() funktioniert:

Wenn Sie Microsoft Visual C ++ installiert haben, haben Sie wahrscheinlich die C-Laufzeitquelle als auch installiert. _ftime() wird in %ProgramFiles%\Microsoft Visual Studio <version>\VC\crt\src\ftime.c und ftime64.c definiert.

_ftime verwendet nicht bei allen GetSystemTimeAsFileTime. Lesen Sie einfach den Quellcode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top