6

我已经查看DADiskCopyDescription并从 IOKit 枚举IOUSBDevice并没有向我提供 USB 硬盘驱动器的序列号。后者提供了一个与其硬盘驱动器序列号不同的 USB 序列号。我如何得到它(在 c/c++ 中,而不是通过 shell)?

4

1 回答 1

5

您基本上要问的是“我如何通过 USB 直接与硬盘驱动器通信?”

答案是:这取决于 USB 控制器。并非所有控制器都支持您的请求。

必须存在以下条件:

  1. USB 桥接器必须支持 ATA 直通(如果是 ATA)
  2. 主机操作系统必须支持 SCSI
  3. 操作系统必须提供 SCSI 直通 API(Windows 和 Linux 上是,MacOS X 上否)

另一个因素出现了:一些控制器支持独立于驱动器制造商的直通,但一些控制器支持基于它们所控制的硬盘驱动器的不同命令。这还取决于连接的驱动器是 PATA、SATA/SAS 还是 SCSI。

支持上述至少一种的控制器示例包括 Sunplus SPIF215/6、SPIF225/6;智微JM20329、JM20335-39;和赛普拉斯 CY7C68300B/C (AT2LP)、CY7C68310 (ISD-300LP)。

希望我有更快乐的消息给你。

于 2013-06-02T18:43:04.677 回答