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。
应用程序向设备发送SCSI命令并将它们转发到设备是否正确?所以我需要创建一个SCSI命令,并封装相应的ATA命令?
我能用dwIoControlCode
做什么?我使用IOCTL_SCSI_MINIPORT
进行了尝试,但错误为ERROR_NOT_SUPPORTED
。它可以与minport一起使用吗?微型端口仍然是最新的吗?
答案 0 :(得分:1)
请看这个链接:
问:如何发送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网桥不提供 这样做的方式。