Как работает _ftime / внутреннее время Windows? - PullRequest
3 голосов
/ 17 октября 2008

Я обнаружил интересную проблему в Windows, которая позволяет заставить часы Windows (но не аппаратные часы) работать быстро - целых 8 секунд каждую минуту. Я делаю некоторые предварительные исследования, чтобы выяснить, как Windows вычисляет и обновляет свое внутреннее время (а не как оно синхронизируется с NTP-серверами). Будем весьма благодарны за любую информацию, которая есть у кого-либо, или любые документы, на которые вы можете указать мне!

Также, если кто-нибудь знает, как работает _ftime, сообщите мне.

Ответы [ 3 ]

3 голосов
/ 18 октября 2008

Относительно того, как _ftime() работает:

Если у вас установлен Microsoft Visual C ++, возможно, у вас также установлен источник среды выполнения C. _ftime() определяется в %ProgramFiles%\Microsoft Visual Studio <version>\VC\crt\src\ftime.c и ftime64.c.

3 голосов
/ 18 октября 2008

Эта статья MSDN дает очень краткое описание того, как обрабатывается системное время: «Когда система запускается впервые, она устанавливает системное время в значение, основанное на часах реального времени компьютера. а затем регулярно обновляет время. " Еще одна интересная функция - GetSystemTimeAdjustment , которая имеет следующее:

Значение TRUE [для lpTimeAdjustmentDisabled] указывает, что периодическая регулировка времени отключена. При каждом прерывании часов система просто добавляет интервал между прерываниями часов к часам времени суток. Однако система может свободно настраивать время суток, используя другие методы. Такие другие методы могут привести к заметному скачку часов времени, когда производятся корректировки.

Наконец, что касается _ftime, похоже, что оно реализовано с использованием GetSystemTimeAsFileTime . Таким образом, он будет напрямую связан с теми же встроенными средствами времени, которые будут использоваться везде.

0 голосов
/ 18 октября 2008

_ftime вообще не использует GetSystemTimeAsFileTime. Просто прочитайте исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...