Написание драйвера ATA LBA28 перепутано с LBA48

В настоящее время я пытаюсь заставить LBA работать для моего драйвера ATA, но у меня есть проблема.

мой identify функция возвращает ОК и word 83;bit 10 возвращенных идентификационных данных установлено, поэтому мое устройство поддерживает LBA48. Но когда я пытаюсь получить общее количество секторов LBA48 (слова конфигурации 100-103), это дает мой ноль. В виртуальной машине у меня установлено 1 ГБ диска, но это поле все еще равно нулю. Я также пытался получить количество секторов LBA28 => это правильный.

Интересно, что когда я распечатываю heads * cylinders * sectors_per_track, значение почти такое же, как значение всех секторов LBA28, расположенных на словах 60-61. Это 2097152 для всего LBA28 и 2096640 для h * c * s, Разница этих двух значений 512,

Кто-нибудь знает, что я делаю не так? Есть ли другой способ получить размер жесткого диска?

0 ответов

Другие вопросы по тегам