2013-04-27 84 views
5

我曾看过DADiskCopyDescription并列举了IOKit中的IOUSBDevice,它们都没有提供USB硬盘驱动器的序列号。后者提供的USB序列号不等同于其硬盘序列号。我如何得到(在c/C++中,而不是通过shell)?如何获得OS X上USB驱动器的硬盘序列号?

+1

[获取USB HDD的序列号(Mac OS)]的可能的副本(http://stackoverflow.com/questions/10348318/get-serial-number-of-usb-hdd-mac-os) – 2013-04-27 04:37:58

+1

@JohnZwinck不,这个解决方案是我在问题中引用的'IOUSBDevice'。即它只给出USB串行,而不是HD串行。 – chacham15 2013-04-27 10:05:37

回答

5

你基本上问的是“我如何通过USB直接与硬盘通信?”

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

下列条件必须存在:

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

另一个因素出现了:一些控制器支持独立于驱动器制造商的passthroughs,但有些支持不同的命令在他们正在控制的硬盘上。这也取决于连接的驱动器是PATA,SATA/SAS还是SCSI。

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

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

+0

有趣。 Windows设法给我正确的(驱动器)序列号,没有任何特殊的工作。即没有任何通过我的部分。有没有类似的OS X?那么,你是说在OS X上不可能? – chacham15 2013-06-02 19:34:59

+0

我怀疑你的USB控制器将串行#请求传递给驱动器。回复:MacOSX:没有什么是不可能的,但它可能涉及更多的工作。要开始使用,请查看:http://comments.gmane.org/gmane.linux.utilities.smartmontools/6812 '在最新版本的smartmontools(5.39)之前,SMART through USB在Mac OS上不可行X,因为Mac OS X内核不支持SCSI传递...' – 2013-06-02 19:54:34