В настоящее время я разрабатываю приложение для 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