Получение списка устройств хранения OS X с помощью IOServiceGetMatchingServices - PullRequest
1 голос
/ 28 ноября 2010

Мне нужно получить список физических устройств хранения в системе OS X. IOServiceGetMatchingServices, использующий ключ kIOStorageClass, дает мне список всех томов, а не всех аппаратных устройств хранения. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 09 мая 2013

Чтобы получить список физических устройств хранения, вы можете сопоставить kIOATABlockStorageDeviceClass.Следующий код получает итератор для блочных устройств хранения.

IOReturn        error       = kIOReturnSuccess;
io_iterator_t   iter        = MACH_PORT_NULL;
error = IOServiceGetMatchingServices (  kIOMasterPortDefault,
                                      IOServiceMatching ( kIOATABlockStorageDeviceClass ),
                                      &iter );
0 голосов
/ 29 октября 2011

Вопрос немного двусмысленный (хотите целые диски, разделы, все вышеперечисленное?), Я предлагаю запустить утилиту IORegistryExplorer (поставляется с XCode) и выяснить, какой класс устройствты хочешь.Я могу сказать вам, что каждый целый диск обычно соответствует IOBlockStorageDriver, так что, возможно, это класс, который вы хотите соответствовать.Тогда у него будет IOMedia клиент, представляющий все устройство.У него, в свою очередь, будет клиент схемы разделов, в котором для каждого раздела будет IOMedia клиент, если только он не разделен.

...