Heim  >  Artikel  >  Backend-Entwicklung  >  **Wie stellt GetSystemTimeAdjustment Systemzeitinkremente falsch dar?**

**Wie stellt GetSystemTimeAdjustment Systemzeitinkremente falsch dar?**

DDD
DDDOriginal
2024-11-02 20:59:30967Durchsuche

**How Does GetSystemTimeAdjustment Misrepresent System Time Increments?**

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn