現在、10.6.7 で、新しい USB デバイスが接続されたときに通知を受け取るアプリケーションを開発しています。「IOServiceAddMatchingNotification」などを処理する IOKit 関数があることがわかりました。この特定の関数からの戻り値は 0 であるため、問題はおそらく、この関数に渡される一致する Dictionary にあると思います。私は辞書をそのように宣言します:
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 関数は static void c 関数であり、残りは Obj-C クラスにラップされています)。
ありがとう
Xcode 4、10.6.7