Maison >développement back-end >C++ >**Comment GetSystemTimeAdjustment représente-t-il de manière erronée les incréments de temps système ?**

**Comment GetSystemTimeAdjustment représente-t-il de manière erronée les incréments de temps système ?**

DDD
DDDoriginal
2024-11-02 20:59:30969parcourir

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

Comment GetSystemTimeAdjustment induit en erreur sur les incréments d'heure système

Bien que la fonction GetSystemTimeAdjustment fournisse des informations sur les ajustements d'heure système, elle ne reflète pas avec précision l'heure réelle intervalle et incrément utilisés pour mettre à jour l'horloge système, comme en témoignent les observations empiriques.

Validité de l'hypothèse

Votre hypothèse selon laquelle les horodatages renvoyés par GetSystemTimeAsFileTime ne devraient présenter aucun changement ni multiple de l'incrément récupéré par GetSystemTimeAdjustment est correct, à condition que l'heure du système soit synchronisée périodiquement.

Raison de l'écart

L'écart provient du fait que la résolution de 10 ns de GetSystemTimeAsFileTime est loin dépasse la période de mise à jour réelle de l’horloge système. Sur les systèmes modernes, l'horloge est généralement incrémentée par incréments de 0,0025 secondes, et non par les 0,0156 secondes signalées par GetSystemTimeAdjustment.

Cette inadéquation se produit car GetSystemTimeAsFileTime enregistre les changements dans l'heure du système à sa résolution supérieure à celle de la mise à jour réelle de l'horloge. . Par conséquent, les changements observés ne correspondent pas à l'incrément signalé.

Implications et alternatives

Plutôt que de vous fier à GetSystemTimeAdjustment, utilisez NtQueryTimerResolution pour déterminer la période de mise à jour réelle. du temps système en unités de 100 ns. Notez que la valeur renvoyée par NtQueryTimerResolution peut être définie à l'aide de NtSetTimerResolution ou de l'interface de minuterie multimédia. Cependant, ce paramètre peut avoir un impact sur les valeurs observées, en particulier lorsque les applications multimédias sont actives.

Pour capturer avec précision les transitions temporelles du système, surveillez les valeurs FILETIME renvoyées par GetSystemTimeAsFileTime. En regardant la différence entre les appels consécutifs, vous pouvez mesurer l'incrément de temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn