Mac OS X получает доступ к устройствам с одинаковым идентификатором поставщика и разными идентификаторами продукта - PullRequest
1 голос
/ 08 декабря 2008

Я пишу приложение, которое открывает USB-устройства и передает некоторые данные. Я следую примеру UsbSimpleNotification из примеров разработчиков. В этом примере добавляются уведомления и назначаются обратные вызовы для уникального идентификатора поставщика и идентификатора продукта. Но для моего приложения у меня есть несколько PID и один VID. Как добавить словарную запись с одним Vid и несколькими PID? Если я использую CFDictionarySetValue с 2 PID, вызов 2nd Pid перезаписывает первое значение словаря. Я не могу сопоставить обратные вызовы IOServiceAddMatchingNotification должным образом из-за этого. Какие еще варианты я могу попробовать?

Ответы [ 2 ]

1 голос
/ 07 февраля 2009

Почему бы вам не попробовать добавить только идентификатор поставщика?

Тогда ваши совпадения должны включать все идентификаторы продукта.

0 голосов
/ 20 марта 2014

6 лет с опозданием ... извините.

Вот как вы это делаете:

CFMutableDictionaryRef  matchingDict = IOServiceMatching ( kIOUSBDeviceClassName );
if ( matchingDict )
{
    UInt32        usbVendor = k_MyVendorID;
    CFNumberRef   refVendorId = CFNumberCreate ( kCFAllocatorDefault, kCFNumberIntType, &usbVendor );
    CFDictionarySetValue ( matchingDict, CFSTR ( kUSBVendorID ), refVendorId );
    CFRelease ( refVendorID );
    CFDictionarySetValue ( matchingDict, CFSTR ( kUSBProductID ), CFSTR ( "*" ) );   // This is a wildcard, so we find any device.
}

Обратите внимание на подстановочный знак.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...