从插入设备的IOKit(CoreFoundation)接收通知的问题
我正在开发一个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,
有谁知道为什么这不起作用?
(注意:Callback函数是一个静态void c函数,其余部分包含在内
ide一个Obj-C类)。
谢谢
Xcode 4,10.6.7
没有找到相关结果
已邀请:
4 个回复
亲奋漏
诞胃
搁手
另一件事 - 在调用IOServiceAddMatchingNotification成功之后,您需要使用在调用中设置的迭代器调用设备添加的处理程序。这将触发通知并检查现有设备。
玖料萄