Я хотел бы иметь возможность сказать, сколько времени требуется от включения питания до запуска Windows. Есть ли способ определить это ретроспективно (т.е. после запуска Windows)? Сохраняет ли BIOS/CMOS время последней загрузки? Можно ли узнать из RDTSC, как долго работает машина, и вычесть время загрузки Windows?
Есть ли способ определить время от включения питания до запуска Windows?
Ответы (2)
Вы можете попробовать BootTimer или BootRacer, чтобы убедиться, что любой из них будет делать то, что вы хотите.
Я не верю, что вы можете определить это после запуска Windows. Я не знаю ни одного BIOS, сохраняющего время последней загрузки. Но на любой современной машине, если время между включением питания и вызовом загрузчика ОС (по сути, время, необходимое для запуска POST) занимает больше нескольких секунд, что-то не так.
Вы пытаетесь сделать это программно, чтобы получить точное количество времени, в течение которого машина была в сети и пригодна для использования? Неточность, возникающая из-за нескольких секунд, которые занимает POST, не кажется существенной. Если вы планируете бенчмаркинг или оптимизацию, вам подойдет любая из этих двух утилит.
Получите время с момента включения из GetTickCount(). Затем получите метку времени файла, к которому Windows прикасается при загрузке (например, windows\bootstat.dat). Код ниже. На моей машине написано 16 секунд, что звучит точно.
#include <stdio.h>
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
int main()
{
struct __stat64 st;
_stat64("c:\\windows\\bootstat.dat", &st);
return printf("%d\n", st.st_mtime - (time(NULL) - GetTickCount()/1000));
}