Я пишу приложение, которое открывает USB-устройства и передает некоторые данные. Я следую UsbSimpleNotificationExample из примеров для разработчиков. В примере добавляются уведомления и назначаются обратные вызовы для уникального идентификатора поставщика и идентификатора продукта. Но для моего приложения у меня есть несколько PID и один VID. Как я могу добавить словарную запись с одним Vid и более чем одним PID? Если я использую CFDictionarySetValue с двумя PID, второй вызов Pid перезаписывает первое значение словаря. Из-за этого я не могу правильно сопоставить обратные вызовы IOServiceAddMatchingNotification. Какие еще варианты я могу попробовать?
Доступ Mac OS X к устройствам с одинаковым идентификатором поставщика и разными идентификаторами продукта
Ответы (2)
Почему бы вам не попробовать добавить только идентификатор поставщика?
Тогда ваши совпадения должны включать все идентификаторы продуктов.
person
Rhythmic Fistman
schedule
07.02.2009
Это верно. Расширьте область поиска и просмотрите результаты.
- person Azeem.Butt; 19.10.2009
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.
}
Обратите внимание на подстановочный знак.
person
Chris Marshall
schedule
20.03.2014
Для kUSBVendorID и kUSBProductID #include ‹IOKit/usb/USB.h›
- person Jerry Krinock; 28.01.2016