ATA команды на USB-накопитель

Windows 7
Программирование на С
Visual C++ 2008 (в VMWare)

Я хотел бы отправить некоторые команды ATA (ОПРЕДЕЛИТЬ УСТРОЙСТВО, ПРОЧИТАТЬ НАТИВНЫЙ МАКС. АДРЕС, УСТАНОВИТЬ МАКС. АДРЕС) с DeviceIOControл на жесткий диск USB. Поэтому у меня есть несколько вопросов.

Как я понял, USBSTOR не может обрабатывать ATA-команды напрямую (с помощью IOCTL_ATA_PASS_THROUGH). Я попробовал это, и он работал с родным жестким диском IDE, но не с USB.

  1. Верно ли, что приложения отправляют SCSI-команды на устройство, и они перенаправляются на устройство? Итак, мне нужно создать команду SCSI с инкапсулированной соответствующей командой ATA?

  2. С чем dwIoControlCode могу ли я сделать это? Я попробовал это с IOCTL_SCSI_MINIPORT но ошибка была ERROR_NOT_SUPPORTED, Может ли это работать с minport? Мини-порт еще актуален?

1 ответ

Посмотрите на эту ссылку:

http://www.mombu.com/microsoft/windows-programmer-nt-kernel-mode/t-howto-send-ata-spec-command-to-usb-hdd-1646752.html

Q: как отправить спецификации ATA. подать команду на USB HDD?

A: Вы ограничены тем, что поддерживает чип USB-> ATA задней двери (моста). Если вы управляете мостом, вы можете реализовать все, что захотите. Если вы этого не сделаете, вам придется попросить продавца моста рассказать, что они поддерживают. Смотрите мои ответы в теме на 1394->ATA на NTDEV для получения дополнительной информации.

Q: Еще раз вопрос: возможно ли получить доступ к каждому диску в SCSI RAID?

A: Нет.

Команды SCSI можно отправлять только на мост / корпус на конце кабеля USB. Как они переводятся в команды ATA - не под вашим контролем.

Я предполагаю, что вложения El Cheapo переводят только основные команды SCSI. В этом случае у вас будет только 1) запрос SCSI, эмулируемый ATA IDENTIFY 2) емкость чтения SCSI, эмулируемая ATA IDENTIFY 2) READ и WRITE 3) VERIFY.

И это все. В этом случае вы будете иметь нулевые шансы на отправку любых нетривиальных команд ATA, так как мост USB-ATA на другой стороне не предоставляет способов сделать это.

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