Задача средствами C узнать дату изготовления биоса, версию, тип компьютера и тому подобное. Знаю раньше в Turbo C была функция peekb() для чтения адреса и ею можно было все узнать в MS-DOS, а сейчас как? Пишу в C++Builder XE под Windows 7.
Dmitry_Milk ну вообще там MS-DOS, с ним проблем нет, но мне для себя интересно как такое сделать под виндами
Pavia Есть примеры кода? Как например прочитать адрес CA777? И где взять информацию про адреса, где что находиться? Погуглил немного, насчет даты создания BIOS, в разных материнских платах она находиться по разных адресах? _sheva740 Ассемблерной вставкой? Это конечно решение, но я знаком только с ассемблером процессора i8080...
klzlk мне, к сожалению, ваше сообщение ничего не сказало =) Код (Text): double CPUSpeed(void) { DWORD dwTimerHi, dwTimerLo; double dRes; asm { DW 0x310F mov dwTimerLo, EAX mov dwTimerHi, EDX } Sleep (500); asm { DW 0x310F sub EAX, dwTimerLo sub EAX, dwTimerHi mov dwTimerLo, EAX mov dwTimerHi, EDX } dRes = dwTimerLo/(1000.0*500); return dRes; } Вот нашел что-то такое для скорости процессора. Можно подобным способом вытянуть дату создания BIOS?
AlexSun Если просто посмотреть ))), то Пуск -> Выполнить -> cmd -> debug.exe ... Не уверен, но думаю помочь может доступ к памяти из ring 0 http://www.wasm.ru/article.php?article=drvw2k03 Это кажется то о чем klzlk говорил.
AlexSun Нет) DW 0x310F это инструкция RDTSC, количество тактов процессора, алгос его подсчитывает за фиксированное время 500 мс, так узнает скорость.
AlexSun Сказанного про эту секцию достаточно, чтобы найти в сурсах ядра ссылки на имя секции и её использование: Проецирование для NTVDM: VdmpInitialize(). Получение версии и даты BIOS("SystemBiosDate" etc.): CmpInitializeMachineDependentConfiguration() и ссылки на CmpMatchDateRule(). В отличие от MmMapIoSpace(), секция доступна в юзермоде(выше XP хз).