ATA命令到USB驱动器

时间:2013-01-12 18:44:41

标签: windows ide scsi ata miniport

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命令并将它们转发到设备是否正确?所以我需要创建一个SCSI命令,并封装相应的ATA命令?

  2. 我能用dwIoControlCode做什么?我使用IOCTL_SCSI_MINIPORT进行了尝试,但错误为ERROR_NOT_SUPPORTED。它可以与minport一起使用吗?微型端口仍然是最新的吗?

1 个答案:

答案 0 :(得分:1)

请看这个链接:

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

  

问:如何发送ATA规范。命令到USB HDD?

答:您受限于USB-> ATA后挡板(桥接)芯片支持的任何内容。 如果您控制桥,您可以实现任何您想要的。如果你 不要,你必须要求桥梁供应商透露他们支持的内容。 有关详细信息,请参阅NTDEV上1394-> ATA主题中的回复。

  问:再次提问:是否可能获得访问所有人的磁盘   在SCSI RAID?

答:没有。

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

我假设El Cheapo机箱仅翻译基本的SCSI命令。在 在这种情况下,您将只有1)SCSI INQUIRY由ATA IDENTIFY 2)SCSI模拟 ATA IDENTIFY模拟的阅读能力2)阅读和写入3)验证。

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