현재 새 USB 장치가 연결될 때 알림을 받아야하는 10.6.7의 응용 프로그램을 개발 중입니다. 이러한 장치를 처리하는 IOKit 기능이 있음을 알게되었습니다 물건 'IOServiceAddMatchingNotification'. 이 특정 함수의 반환 값이 0이기 때문에 아마도이 함수에 주어진 내 일치 사전에 문제가 있다고 생각합니다. 나는 각 장치에 대한 알림을받을 수 wan't이 때문에이 특정 사전을 만들 수있는 올바른 방법 인 경우연결된 장치에 대한 IOKit (CoreFoundation)의 알림 수신 문제
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 클래스 에 래핑됩니다.)
감사
엑스 코드 4, 10.6.7
아직 IOKit의 사용자 공간 측면에 익숙하지는 않지만 커널 측에서는 가장 구체적인 일치하는 사전에 대해 먼저 일치가 발생합니다. 실패한 경우보다 일반적인 일치가 시도됩니다. 이미 기존 드라이버와 일치하는 장치로이 작업을 시도하고 있습니까? 또한 어쩌면이 도움이 될 것입니다 : http://developer.apple.com/library/mac/#qa/qa1076/_index.html – pmdj
나는 지금 몇 시간을 사용하고있는 USB 스틱으로 이것을 시도했습니다. Finder는 스틱을 발견하여 OS X의 드라이버 디렉토리에 항목을 작성할 필요가 없다고 생각합니다. 또한 이전에 결코 사용하지 못했던 스틱에 대한 알림을 받고 싶습니다. 따라서 처리 할 수있는 방법이 있어야합니다 이 ... 아직도 그 길을 찾을 수 없다 ... – Andi