Я пытаюсь извлечь список всех устройств AppleUSBCDCACMData IOClass на моем Mac, используя следующий фрагмент кода (только некоторые небольшие изменения в примере кода Apple).Устройство представляет собой USB-модем, который создает 7 узлов устройства /dev/cu.usbmodemx.
error = IOMasterPort(MACH_PORT_NULL, &masterPort);
if(error){
return ;
}
else{
matchingDict = IOServiceMatching("AppleUSBCDCACMData");
IOServiceGetMatchingServices(masterPort,matchingDict,&modem_iterator);
while(usbDevice = IOIteratorNext(modem_iterator))
{
}
Мое наблюдение состоит в том, что итератор, возвращаемый IOServiceGetMatchingServices, пуст (т. Е. Ничего итерировать)Но если я передаю «AppleUSBCDCACMControl» в качестве параметра IOServiceMatching, я получаю итератор списка из 7 элементов, что соответствует представлению IORegistryExplorer.Смотрите скриншот IORegistryExplorer здесь, http://tumblr.deepak.dk/post/1666218968/ioregistryexplorer Похоже, что невозможно запросить IORegistry с произвольными строками имен IOClass?Так как я столкнулся с такими же проблемами с некоторыми нестандартными проприетарными IOClasses, а также.Это можно воспроизвести с помощью любого USB-модема (3g / HSDPA), который загружает драйвер AppleUSBCDC.
Что я делаю не так?