使用IOServiceGetMatchingServices获取OS X存储设备列表

时间:2010-11-28 02:15:59

标签: macos iokit

我需要获取OS X系统上的物理存储设备列表。使用kIOStorageClass键的IOServiceGetMatchingServices为我提供了所有卷的列表,而不是所有硬件存储设备。我该怎么做?

2 个答案:

答案 0 :(得分:0)

问题有点含糊不清(你想要整个驱动器,分区,以上所有吗?),我建议启动 IORegistryExplorer 实用程序(随XCode一起提供)并找出哪个类你想要的设备。我可以告诉你,每个驱动器通常都对应一个IOBlockStorageDriver,所以也许这就是你要匹配的类。然后它将有一个代表整个设备的IOMedia客户端。它反过来将有一个分区方案客户端,每个分区都有一个IOMedia客户端,除非它没有被分区。

答案 1 :(得分:0)

要获取可以与kIOATABlockStorageDeviceClass匹配的物理存储设备列表。以下代码获取块存储设备的迭代器。

IOReturn        error       = kIOReturnSuccess;
io_iterator_t   iter        = MACH_PORT_NULL;
error = IOServiceGetMatchingServices (  kIOMasterPortDefault,
                                      IOServiceMatching ( kIOATABlockStorageDeviceClass ),
                                      &iter );