ATA命令到USB驱动器

Windows 7的
C编程
Visual C ++ 2008(在VMWare中)

我想用DeviceIOContro l将一些ATA命令(IDENTIFY DEVICE,READ NATIVE MAX ADDRESS,SET MAX ADDRESS)发送到USB硬盘。 所以我有一些问题。

据我所知,USBSTOR不能直接处理ATA命令(使用IOCTL_ATA_PASS_THROUGH )。 我试过这个,它与本地IDE硬盘驱动器,但不是与USB。

  1. 应用程序向设备发送SCSI命令并将它们转发到设备是否正确? 所以我需要创build一个SCSI命令与相应的ATA命令封装?

  2. 用什么dwIoControlCode可以做到这一点? 我用IOCTL_SCSI_MINIPORT试过,但是错误是ERROR_NOT_SUPPORTED 。 它可以与minport一起工作吗? 微型端口仍然是最新的?

Solutions Collecting From Web of "ATA命令到USB驱动器"

看这个链接:

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

问:如何发送ATA规格 命令到USB硬盘?

答:只限于USB-> ATA后挡板(桥接)芯片支持。 如果你控制桥,你可以实现任何你想要的。 如果你不这样做,你将不得不要求桥牌供应商透露他们的支持。 有关更多信息,请参阅我在1394-> ATA on NTDEV上的回复。

问:还有一个问题:是否可能访问SCSI RAID中的每个人磁盘?

答:不。

您只能将USB命令发送到USB电缆末端的网桥/机箱。 如何将它们转换为ATA命令 – 不在您的控制之下。

我假设El Cheapo机箱只翻译重要的SCSI命令。 在这种情况下,您将只有1)通过ATA IDENTIFY仿真的SCSI查询2)通过ATA标识仿真的SCSI读取容量2)读取和写入3)验证。

就这样。 在这种情况下,您将没有机会发送任何非平凡的ATA命令,因为另一端的USB-to-ATA桥没有提供这种方式。