Здравствуйте, brokensword, Вы писали:
B>какой-то вопрос неправильный... из ntvdm что ли?
Меня интересует INT 1Ah BIOS. Пробовал вызывать из драйвера режима ядра, но срабатывает исключение. Ведь наверняка Win NT имеет механизмы доступа к функциям BIOS. Хотелось бы про это где-нибудь узнать.
> Меня интересует INT 1Ah BIOS. Пробовал вызывать из драйвера режима > ядра, но срабатывает исключение. Ведь наверняка Win NT имеет механизмы > доступа к функциям BIOS. Хотелось бы про это где-нибудь узнать. >
Во-первых функции BIOS'а расчитывают на 16-разрядный код и реальный режим, а винда работает с 32-х разрядным кодом и в защищёном режиме!!! Во-вторых (из-за во-первых) вызов INT 1Ah произойдёт по-разному: в реальном режиме регистр IDTR содержит базу таблицы векторов прерываний равную нулю, а в защищённом режиме база таблицы "векторов" (на самом деле дескрипторов) прерываний может находиться где угодно и прописаны в ней уже далеко не векторы BIOS'овских обработчиков, да ищё в ход вступает то, что первые 32 прерывания зарезервированы под исключения проца и прерывание 10h в реальном и защищёном режимах имеют принципиально разное значение!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
S>в реальном режиме регистр IDTR содержит базу таблицы векторов прерываний равную нулю
вопрос-шутка: если зр появился только в 286, то где хранилась база таблицы векторов в 1086 ?)
********************************************* www.k-medulla.com
Best software protection system on the market
Здравствуйте!
16 или 32 разрядный режим, таблица дескрипторов IDTR — всё это понятно. Но ведь должна быть какая-то возможность доступа к функциям BIOS. Наверняка значения таблицы прерываний реального режима где-то сохраняются в Windows. Или есть какой-нибудь другой способ. К примеру в Win 9x доступ к функциям DOS можно получить черезVWIN32 VxD. А как быть с функциями BIOS под Win NT?. Я думаю что это можно сделать с помощью 16-разрядной DOS программы. Они же корректно работают под Windows, но хотелось бы всётаки сделать это средствами Windows. Дело в том, что мне требуется считывать и устанавливать некоторые значения CMOS, арасположение этих параметров на различных материнских платах с различными версиями BIOS может различаться. Для доступа к этим значениям как я думаю нужно пользоваться функциями BIOS, уж она то точно знает где-что находится. Может я вчём-то и не прав.
> Я думаю что это можно сделать с помощью 16-разрядной DOS программы. Они же корректно работают под Windows >
Они работают в режиме витуального 8086 и всю ответственность за их работу (как мне кажется) несёт NTVDM (наверное NT Virtual DOS Machine)!!!
> Дело в том, что мне требуется считывать и устанавливать некоторые значения CMOS, > арасположение этих параметров на различных материнских платах с > различными версиями BIOS может различаться. >
А что именнно нужно?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, Stanky, Вы писали:
S>Они работают в режиме витуального 8086 и всю ответственность за их работу (как мне кажется) несёт NTVDM (наверное NT Virtual DOS Machine)!!!
Вполне возможно. Но где об этом взять информацию?
S>А что именнно нужно?
В CMOS есть параметр включения компьютера по времени. На сколько я понял на разных мат платах он записывается в различных значениях CMOS. Доступ к нему может быть осуществлён через INT 1ah. Эту проблему я и хотел бы решить во-первых, а во-вторых всё же стало интересно как осуществить доступ к функциям BIOS.
> Вполне возможно. Но где об этом взять информацию? >
Без понятия!!!
Может у Microsoft'а?
> В CMOS есть параметр включения компьютера по времени. На сколько я > понял на разных мат платах он записывается в различных значениях CMOS. > Доступ к нему может быть осуществлён через INT 1ah. Эту проблему я и > хотел бы решить во-первых >
Эта тема поднималась в "низкоуровневом программировании" — глянь!!!
> а во-вторых всё же стало интересно как осуществить доступ к функциям BIOS. >
Ну и это там заодно спроси!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!