1) Возможно ли добраться до биоса и изменить его из винды? 2) Где взять официальные доки (очень люблю первоисточник) на все прерывания и функции биоса, клавиатура мышь и прочяя переферия? 3) Все фызовы функций api в виндовз сводятся к обращению соответствующих функций в биосе?
ajak 1) Да. 2) В интернете. Если тебе нужены дока на биос, то ищи "PhoenixBIOS 4.0 Programmer’s Guide Version 1.0". Все биосы похожи, но единого стандарта нет. Так что помимо этой доки лучше взять не официальные "Help" и "Interrupt List" от Ralf Brown 3) Нет. Это обсалютная чушь. api это набор функций они не обязаны вызывать прерывания. Идем в глубь. Для общения с драйверами используются прерывания (винндовское прерывание). Но это всего лишь точка для перехода между уровнями привелегий, между кольцами защиты. Сейчас есть специальные команды для этого, так что прерывания не используются. Идем в глубь что там делает драйвер? Он общается с портами ввода/вывода и физическами адресами в памяти. Биос там не используется. Вернее как сказать не используется. В win98 октивно использовались, а в WinNT(Его последователях) уже нет савсем нет. Вот на начальном этапи загрузки ОС там да используются прерывания.
А я кстати так и делал как говорит Pavia . Адрес загрузки и размер - прочитать можно из GDT, он постоянно находится в невыгружаемой памяти так что прочитать легко, и синька врят-ли будет. (Ищи cтраницы начинающиеся после адреса F0000000)
Vilco Да существуют Award (Award Bios 6.00Pg Source Code 1999) в исходных кодах и OpenBIOS . BIOS распологается 4ГБ- размер биоса 1 0000 0000h-n*4 0000h Обычно биос имеет размеры 256кб, 512кб, 1024кб. А вот если тебе перезаписать нужно то там хитрая система программирования. И зависит от материнки в том числе.
BIOS используется и в NT и последующих, но не для ввода-вывода, а для управления электропитанием (ACPI в некоторых случаях этого требует, APM вроде бы вообще через SMM реализуется). Однако если не заморачиваться со сном/пробуждением системы, то BIOS не нужен после окончания загрузки системы.
SII Я имел ввиду что прерывания не используются. Вернее почти не используются. Там BIOS используется только для заполнения таблиц ACPI. А дальше уже ОС разбирает таблицы и сама управляет энерго обеспичением и прочим. Так что тут опять биос учавствует только на начальном этапе загрузки ОС.
Pavia Если ОС использует ACPI -- то вроде бы да (лень глядеть в спецификацию; помню только, что при "поверхностном сне" BIOS вообще никак не нужен, поскольку при пробуждении просто возобновляется выполнение с точки, где процессор "заснул" -- он зацикливается на проверке какого-то разряда; а при "глубоком" BIOS используется, потому что процессор уходит в полное отключение и возобновляет работу с точки входа в BIOS по сбросу, но используется вроде только в процессе перезапуска ОС после сна, что фактически является разновидностью начальной загрузки). Вот если APM, то, вероятно, BIOS там используется и для перехода в сон, переключения режимов энергопотребления устройств и т.п., но утверждать не буду -- спецификацию APM смотрел давным-давно и ни разу на практике не использовал. Впрочем, в наши дни актуально только использование ACPI Кстати, вот ещё одна мысль. BIOS можно использовать и в процессе работы ОС при присоединении новых устройств PCI (если платформа поддерживает "горячее подключение"). Впрочем, думаю, проще всё это реализовать самому -- "ручной" доступ к конфигурационному пространству PCI проблем не составляет.
А почему вначале загрузки доступ к устройствам осуществляется через прерывания а почему нельзя напрямую через порты?
ajak Просто проще через BIOS. Да и надёжнее: BIOS точно знает, какие контроллеры на маме стоят и как с ними работать.