Domanda

Ho riscontrato un problema interessante in Windows che mi permette di far funzionare velocemente l'orologio di Windows (ma non gli orologi hardware) - fino a 8 secondi al minuto. Sto facendo alcune ricerche di base per capire come Windows calcola e aggiorna il suo tempo interno (non come si sincronizza con un server NTP). Qualsiasi informazione che qualcuno ha o qualsiasi documento tu possa indicarmi sarebbe molto apprezzato!

Inoltre, se qualcuno sa come funziona _ftime, per favore fatemelo sapere.

È stato utile?

Soluzione

Questo articolo di MSDN offre breve descrizione di come viene gestita l'ora di sistema: " Quando il sistema si avvia per la prima volta, imposta l'ora di sistema su un valore basato sull'orologio in tempo reale del computer e quindi aggiorna regolarmente l'ora. " ; Un'altra funzione interessante è GetSystemTimeAdjustment , che ha questo da dire:

  

Un valore di TRUE [per lpTimeAdjustmentDisabled] indica che la regolazione periodica del tempo è disabilitata. Ad ogni interruzione dell'orologio, il sistema aggiunge semplicemente l'intervallo tra gli interrupt dell'orologio all'ora del giorno. Il sistema è libero, tuttavia, di regolare l'orologio del giorno usando altre tecniche. Tali altre tecniche possono far sì che l'orologio dell'ora del giorno salti notevolmente quando vengono apportate modifiche.

Infine, per quanto riguarda _ftime, sembra essere implementato usando GetSystemTimeAsFileTime . Quindi si avvolgerebbe direttamente sulle stesse strutture temporali integrate che verrebbero utilizzate ovunque.

Altri suggerimenti

Per quanto riguarda il modo in cui _ftime() funziona:

Se hai installato Microsoft Visual C ++, probabilmente hai installato anche l'origine runtime C. %ProgramFiles%\Microsoft Visual Studio <version>\VC\crt\src\ftime.c è definito in ftime64.c e <=>.

_ftime non utilizza affatto GetSystemTimeAsFileTime. Basta leggere il codice sorgente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top