我已经查看了DADiskCopyDescription和从IOKit枚举IOUSBDevice,但两者都无法提供我需要的USB硬盘序列号。后者提供的是USB序列号,与其硬盘序列号不相同。我该如何获取它(使用c/c++,而非通过shell)?
您基本上在问“我如何通过USB直接与硬盘通信?” 答案是:这取决于USB控制器。并非所有控制器都支持您的请求。 必须满足以下条件: USB桥必须支持ATA穿透(如果是ATA) 主机操作系统必须支持SCSI 操作系统必须提供SCSI穿透API(Windows和Linux上有,MacOS X上没有) 另一个因素产生了:一些控制器支持独立于驱动器制造商的穿透,但有些控制器根据它们正在控制的硬盘支持不同的命令。这还取决于连接的驱动器是PATA、SATA/SAS还是SCSI。 至少支持上述其中一个条件的控制器包括Sunplus SPIF215/6、SPIF225/6;JMicron JM20329、JM20335-39;以及Cypress CY7C68300B/C(AT2LP)、CY7C68310(ISD-300LP)。 希望我能给您带来更好的消息。
IOUSBDevice
。也就是说,它只提供了 USB 串口,而不是硬盘序列号。 - chacham15