Heim > Artikel > Backend-Entwicklung > **Wie stellt GetSystemTimeAdjustment Systemzeitinkremente falsch dar?**
Wie GetSystemTimeAdjustment zu Systemzeitinkrementen führt
Die GetSystemTimeAdjustment-Funktion bietet zwar Einblicke in Systemzeitanpassungen, spiegelt jedoch nicht genau die tatsächlichen wider Intervall und Inkrement, das zum Aktualisieren der Systemuhr verwendet wird, wie durch empirische Beobachtungen belegt.
Gültigkeit der Annahme
Ihre Annahme, dass von GetSystemTimeAsFileTime zurückgegebene Zeitstempel keine Änderung oder ein Vielfaches davon aufweisen sollten Das von GetSystemTimeAdjustment abgerufene Inkrement ist korrekt, vorausgesetzt, die Systemzeit wird regelmäßig synchronisiert.
Grund für die Diskrepanz
Die Diskrepanz ergibt sich aus der Tatsache, dass die 10-ns-Auflösung von GetSystemTimeAsFileTime weit entfernt ist überschreitet den tatsächlichen Aktualisierungszeitraum der Systemuhr. Auf modernen Systemen wird die Uhr normalerweise in Schritten von 0,0025 Sekunden erhöht, nicht in den von GetSystemTimeAdjustment gemeldeten 0,0156 Sekunden.
Diese Nichtübereinstimmung entsteht, weil GetSystemTimeAsFileTime die Änderungen der Systemzeit mit einer höheren Auflösung aufzeichnet als die tatsächliche Uhraktualisierung . Daher stimmen die beobachteten Änderungen nicht mit dem gemeldeten Inkrement überein.
Implikationen und Alternativen
Anstatt sich auf GetSystemTimeAdjustment zu verlassen, verwenden Sie NtQueryTimerResolution, um den tatsächlichen Aktualisierungszeitraum zu bestimmen der Systemzeit in 100-ns-Einheiten. Beachten Sie, dass der von NtQueryTimerResolution zurückgegebene Wert mithilfe von NtSetTimerResolution oder der Multimedia-Timer-Schnittstelle festgelegt werden kann. Diese Einstellung kann sich jedoch auf die beobachteten Werte auswirken, insbesondere wenn Multimediaanwendungen aktiv sind.
Um Systemzeitübergänge genau zu erfassen, überwachen Sie die von GetSystemTimeAsFileTime zurückgegebenen FILETIME-Werte. Indem Sie die Differenz zwischen aufeinanderfolgenden Anrufen betrachten, können Sie die tatsächliche Zeitverlängerung messen.
Das obige ist der detaillierte Inhalt von**Wie stellt GetSystemTimeAdjustment Systemzeitinkremente falsch dar?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!