собственно, сабж. Мучил любыми способами. Во всех мануалах по SATA рассказывается про команды (они не сильно отличаются от PATA команд), а вот куда их посылать нигде не описано. Проги для ремонта (типа MHDD) требуют включения режима эмуляции IDE в биосе, но допустим это невозможно. Виндовс сам же как то их посылает! Кто занимался подобным, подскажите пожалуйста. И еще, возможно ли послать команду контроллеру винта, подключенному через USB переходник?
explosion В WinXP Открываешь драйвер диска "\\.\PhysicalDrive0" где 0-номер диска Посылаешь команду диску используя DeviceIoControl ключь DFP_SEND_DRIVE_COMMAND. Команды одинаковые что у SATA что у PATA. Если не ошибаюсь должно работать и если у тебя через USB подключен диск. Что касается куда посылаются данные виндоусом. Виндоус находит контроллер дисков и читает данные о портах и конфигурационного пространства PCI. Надо сразу сказать, что контроллер(IDE/SATA) может находиться в одном из двух состояний: устаревшем - Legacy. родном - Native. Также для встроенных SATA-контроллеров есть режим совместимости (Сompatibility) когда он вместе с IDE-контроллером делит два канала в Legacy-режиме. И, при этом, в конфигурационном пространстве PCI будет виден только один контроллер. Если контролер работает в устаревшем режиме (Legacy), то для доступа к каналам используются следующие порты: Код (Text): Первичный канал: порты команд 01F0h-01F7h Порт контроля 03F4h+2 03F4h - база а сам порт по смещению 2 прерывание IRQ14 Вторичный канал: порты команд 0170h-0177h порт контроля 0374h+2 0374h- база а сам порт по смещению 2 прерывание IRQ15 А вот для USB там труднее, вернее там я не разбирался. http://wiki.osdev.ru/index.php/Работа_с_жесткими_дисками_и_их_контроллерами
При подключении к USB команды другие, используется SCSI2 - больше похоже на ATAPI. Даже если подключается обычный IDE винчестер в "коробке", контроллер который стоит в этой коробке будет преобразовывать SCSI2-команды в ATA-команды. Работа ничем не отличается от флешек - команды SCSI2 посылаются в USB пакетах. Но под Windows если открывать устройство как написал Pavia через \\.\PhysicalDriveX возможно работать будет и с USB дисками.
Набор команд такой Читать тут: www.t10.org, а конкретно http://www.t10.org/ftp/t10/drafts/s2/s2-r10l.pdf (6.1M)
Версия стандарта. Может команды новые добавили - я сравнением не занимался. В USB Mass Storage Bulk Only Transport specification сказано SCSI-2, значит лучше именно его и использовать.