У меня есть небольшая программа, чтобы узнать идентификатор поставщика и идентификатор продукта всех USB-устройств CDC, подключенных к Mac. Программа использует IOServiceNameMatching и IOServiceGetMatchingServices, чтобы получить словарное соответствие и обслуживание итератор соответственно, как показано на фрагменте кода ниже:IOServiceGetMatchingServices, возвращающий пустой итератор в OSX 10.11 El Capitan
matchingDictionary = IOServiceNameMatching("AppleUSBCDC");
IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDictionary, &serviceIterator);
Я тогда перебирать serviceIterator для перечисления и извлечения идентификаторов всех подключенных устройств USB CDC. Это отлично работает до OSX 10.10, но IOServiceGetMatchingServices возвращает пустой итератор в OSX 10.11. Почему он возвращает пустой итератор только на OSX 10.11, хотя USB-устройства CDC подключены? Есть ли альтернативный способ получить список устройств в OSX 10.11?