OSDev
http://osdev.su/

int 13h все диски
http://osdev.su/viewtopic.php?f=6&t=813
Страница 1 из 1

Автор:  scuter [ 26 окт 2013, 18:22 ]
Заголовок сообщения:  int 13h все диски

скажите как узнать какие диски есть на компьютере
особо интересует CD USB.

Автор:  pavia [ 26 окт 2013, 19:05 ]
Заголовок сообщения:  Re: int 13h все диски

Int 13h для данной задачи не годится его основная цель вернуть параметры загрузочного диска.
Конечно можно попытаться выполнить перебор по DL, но скорее всего у вас не получиться.
Плюс к тому же некоторые устройства такие как то USB, CD-ROM, RAID, SCSI, LAN могут эммулировать загрузочный диск подменяя 0h,1h, 80h, 81h

Автор:  scuter [ 26 окт 2013, 19:19 ]
Заголовок сообщения:  Re: int 13h все диски

pavia писал(а):
Int 13h для данной задачи не годится его основная цель вернуть параметры загрузочного диска.
Конечно можно попытаться выполнить перебор по DL, но скорее всего у вас не получиться.
Плюс к тому же некоторые устройства такие как то USB, CD-ROM, RAID, SCSI, LAN могут эммулировать загрузочный диск подменяя 0h,1h, 80h, 81h

ну а загрузчик с USB, CD-ROM как тогда писать, в boot драйвер не поместится же.

Автор:  pavia [ 26 окт 2013, 19:57 ]
Заголовок сообщения:  Re: int 13h все диски

scuter писал(а):
ну а загрузчик с USB, CD-ROM как тогда писать, в boot драйвер не поместится же.

Что непонятного в фразе :?:
Цитата:
его основная цель вернуть параметры загрузочного диска.
:?:
BIOS передаёт тебе номер диска. Его подставляешь в 13h для получения геометрии и выполняешь чтения секторов с диска.

Описание int 13h можно прочитать здесь
http://yadi.sk/d/0cSvG2WT2gSBs

http://ru.osdev.wikia.com/wiki/Расширенный_дисковый_сервис_(EDD)

Описание того как работает загрузка можешь прочитать в
specsbbs101.pdf

Для CD добавляется следующее
specscdrom.pdf
wpbootcd.pdf

USB просто эмулирует либо Floppy либо HDD диск (80h).
Делает согласно specsbbs101.pdf

Автор:  phantom-84 [ 26 окт 2013, 20:02 ]
Заголовок сообщения:  Re: int 13h все диски

scuter писал(а):
ну а загрузчик с USB, CD-ROM как тогда писать, в boot драйвер не поместится же.
В BIOS есть функция перечисления дисков, но в общем pavia прав. Полного перечисления дисков с ее помощью не сделаешь. В лучшем случае сгодится для вторичного загрузчика.

Когда с USB, CD-ROM выполняется загрузка, BIOS делает диск "видимым" и передает его номер в загрузчик в регистре dl. Этого достаточно.

Автор:  scuter [ 29 окт 2013, 18:04 ]
Заголовок сообщения:  Re: int 13h все диски

кстати на счёт загрузки с жёсткого диска,
адресное пространство LBA в современных дисках больше чем 4гб, а MBR рассчитан на нечто меньшее,
так вот какой MBR в современных жёстких дисках, то есть формат портишена.

Автор:  phantom-84 [ 29 окт 2013, 18:41 ]
Заголовок сообщения:  Re: int 13h все диски

4 гига секторов, ты хотел сказать, а то кто-нибудь подумает, что тебя только что выпустили из пещеры :) Так вот эти 4 гига секторов дают 2 тб пространства (если отбросить всякие опасные форматы, когда раздел начинается далеко не в начале диска, но все равно имеет размер около 2 тб). Для большинства современных дисков пока этого хватает, но ты прав, не сегодня, так завтра MBR-разметка уступит свое место GPT-разметке на большинстве дисков.

Местоположение загрузчика не меняется, но теперь он должен обрабатывать GPT, а не таблицу в конце MBR. Естественно, речь идет не об EFI-загрузке, а о BIOS-загрузке.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/