В настоящее время я разрабатываю приложение на 10.6.7, которое должно получать уведомления при подключении нового USB-устройства. Я обнаружил, что есть функция IOKit, которая обрабатывает такие вещи, как IOServiceAddMatchingNotification. Поскольку возвращаемое значение из этой конкретной функции равно 0, я думаю, что проблема, возможно, в моем соответствующем словаре, который передается в эту функцию. Я провозглашаю Словарь таким образом:
CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
Поскольку я не хочу получать уведомления для каждого устройства, я не знаю, является ли это правильным способом создания этого конкретного словаря.
Мой полный код выглядит так:
ioKitNotificationPort = IONotificationPortCreate(kIOMasterPortDefault);
notificationRunLoopSource = IONotificationPortGetRunLoopSource(ioKitNotificationPort);
CFRunLoopAddSource(CFRunLoopGetCurrent(), notificationRunLoopSource, kCFRunLoopDefaultMode);
CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
addMatchingNotificationResult = IOServiceAddMatchingNotification(ioKitNotificationPort,
kIOPublishNotification,
matchingDict,
deviceAdded,
NULL,
У кого-нибудь есть идеи, почему это не сработает?
(Примечание: функция обратного вызова является статической функцией void c, а остальные
я класс Obj-C).
Спасибо
Xcode 4, 10.6.7