使用 IOServiceGetMatchingServices 获取 OS X 存储设备列表
我需要获取 OS X 系统上的物理存储设备列表。使用 kIOStorageClass 键的 IOServiceGetMatchingServices 为我提供了所有卷的列表,而不是所有硬件存储设备的列表。我该怎么做?
I need to get the list of physical storage devices on an OS X system. IOServiceGetMatchingServices using the kIOStorageClass key gives me a list of all volumes, not all hardware storage devices. How do I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题有点模棱两可(您想要整个驱动器、分区、以上所有内容吗?),我建议启动 IORegistryExplorer 实用程序(随 XCode 一起提供)并找出您想要哪种类型的设备。我可以告诉您,每个整个驱动器通常对应一个
IOBlockStorageDriver
,所以也许这就是您想要匹配的类。然后它将有一个代表整个设备的 IOMedia 客户端。反过来,它会有一个分区方案客户端,每个分区都有一个 IOMedia 客户端,除非它没有分区。The question is a little ambiguous (do you want whole drives, partitions, all of the above?), I suggest firing up the IORegistryExplorer utility (comes with XCode) and figuring out which class of device you want. I can tell you that each whole drive normally corresponds to an
IOBlockStorageDriver
, so maybe that's the class you want to match. It will then have anIOMedia
client representing the whole device. It in turn will have a partition scheme client, which has anIOMedia
client for each partition, unless it's not partitioned.要获取物理存储设备列表,您可以匹配 kIOATABlockStorageDeviceClass。以下代码获取块存储设备的迭代器。
To get list of physical storage device you can match for kIOATABlockStorageDeviceClass. Following code obtains iterator for block storage devices.