Подскажите методику как определить наличие (и параметры) жестких дисков (USB, IEEE1394 и т.п. пока в стороне).
Я использую функции int13h биоса — с дисками IDE/SATA трудностей не возникло, так же без проблем вижу рейд-диски от IDE-контроллера (и зеркальные и страйп-диски), но вот трудности возникли с SATA-RAID — не определяются ни зеркало ни страйп (просто нету). Возможно будут проблемы и со SCSI-RAID, пока не столкнулся с этими контроллерами.
Из параметров мне достаточно увидеть размер диска (и модель, если это не рейд).
Обычный fdisk из win98 понимает диски на SATA-RAID, хотелось бы достичь этого результата.
Здравствуйте, chy, Вы писали:
chy>Подскажите методику как определить наличие (и параметры) жестких дисков (USB, IEEE1394 и т.п. пока в стороне).
chy>Я использую функции int13h биоса — с дисками IDE/SATA трудностей не возникло, так же без проблем вижу рейд-диски от IDE-контроллера (и зеркальные и страйп-диски), но вот трудности возникли с SATA-RAID — не определяются ни зеркало ни страйп (просто нету). Возможно будут проблемы и со SCSI-RAID, пока не столкнулся с этими контроллерами.
chy>Из параметров мне достаточно увидеть размер диска (и модель, если это не рейд).
chy>Обычный fdisk из win98 понимает диски на SATA-RAID, хотелось бы достичь этого результата.
Классический int13 здесь вряд ли поможет. Надо смотреть в сторону
edd.
Здравствуйте, DOOM, Вы писали:
DOO>Классический int13 здесь вряд ли поможет. Надо смотреть в сторону edd.
Все правильно, я использую расширения int13, иначе с современными дисками невозможно работать (BIOS Enhanced Disk Drive Services-3 (EDD-3)
отсюда). Однако я нашел только одну функцию, выдающую количество дисков в системе и она не относится к расширениям биос — ah=0x08 Get Drive Parameters: output dl=количество дисков.
Здравствуйте, chy, Вы писали:
chy>Все правильно, я использую расширения int13, иначе с современными дисками невозможно работать (BIOS Enhanced Disk Drive Services-3 (EDD-3) отсюда). Однако я нашел только одну функцию, выдающую количество дисков в системе и она не относится к расширениям биос — ah=0x08 Get Drive Parameters: output dl=количество дисков.
Есть функция get parameters table, а также соглашение, что номера дисков 0x01,2,3.. — это съемные носители (но не все), 0x79,78... — это CD(DVD) и т.п., а 0x80,81... — это жесткие диски... Деление очень условное и поэтому предполагается, что программа переборов (255 вариантов это не так много) определит поддержку EDD (и соответственно всю информацию) при помощи функции Check Extensions Present (0x41). Если в результате вызова ошибка — то дибо такого диска в системе нет, либо он не поддерживает EDD.