1

Windows7C
プログラミング
VisualC++ 2008(VMWare内)

いくつかのATAコマンド(デバイスの識別、ネイティブの最大アドレスの読み取り、最大アドレスの設定)をDeviceIOControlとともにUSBハードドライブに送信したいと思います。したがって、いくつか質問があります。

私が理解したように、USBSTORはATAコマンドを直接(でIOCTL_ATA_PASS_THROUGH)処理することはできません。これを試してみましたが、ネイティブIDEハードドライブでは機能しましたが、USBでは機能しませんでした。

  1. アプリケーションがSCSIコマンドをデバイスに送信し、それらがデバイスに転送されるのは正しいですか?では、それぞれのATAコマンドをカプセル化してSCSIコマンドを作成する必要がありますか?

  2. dwIoControlCodeでそれができますか?で試してみましたIOCTL_SCSI_MINIPORTが、エラーはでしたERROR_NOT_SUPPORTED。minportで動作しますか?ミニポートはまだ最新ですか?

4

1 に答える 1

1

Look at this link:

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

Q: howto send ATA spec. command to USB HDD?

A: You are limited to whatever the USB->ATA tailgate (bridge) chip supports. If you control the bridge, you can implement whatever you want. If you don't, you'll have to ask the bridge vendor to reveal what they do support. See my replies in the thread on 1394->ATA on NTDEV for more information.

Q: Once more question: whether probably to get access to everyone disk in SCSI RAID?

A: No.

You can only send SCSI commands to the bridge/enclosure at the end of the USB cable. How they are translated to ATA commands - is not under your control.

I assume El Cheapo enclosures to only translate the essential SCSI commands. In this case, you will only have 1) SCSI INQUIRY emulated by ATA IDENTIFY 2) SCSI READ CAPACITY emulated by ATA IDENTIFY 2) READ and WRITE 3) VERIFY.

And that's all. In this case, you will have zero chances sending any non-trivial ATA commands, since the USB-to-ATA bridge on other side provides no ways of doing such.

于 2013-01-12T18:50:12.567 に答える