Здравствуйте, Chichikadze, Вы писали:
C>Пытаюсь определить наличие винчестеров на канале, но так и не пришел к однозначному ответу. Стандарт в этом плане несколько туманен: для идентификации предполагается команда EXECUTE_DEVICE_DIAGNOSTICS, но, к сожалению, она не дает полной информации. Более того, стандарт не определяет поведение для Device1 only конфигураций, а между тем такие конфигурации встречаются. Пытался раскопать исходники linux/BSD, но пока ни к чему конкретному не подобрался. Старый linux драйвер просто берет информацию из CMOS, с новым пока не разобрался. М.б. кто-то знает, как можно получить сведения о конфигурации, или ссылкой одарит хорошей?
ATA_IDENTIFY вам должно помочь. Во всяком случае для EIDE/ATA.
Для AT IDE имени IBM еще метод AnybodyHome подходит (но это только наличие).
Посмотрите исходники
http://alter.org.ua/soft/win/uniata, функции FindDevices(), CheckDevice(), UniataAnybodyHome(), IssueIdentify()