我遇到了監視USB總線更改的應用程序的問題。具體而言,如果我想獲得連接的USB服務列表,我正在使用下面的代碼。奇怪的是,一些用戶(和nautally不是我的機器)沒有看到一個或兩個設備。 這些設備會顯示在IORegistryExplorer中,並顯示已註冊。IOServiceGetMatchingServices在某些Mac上找不到某些設備
這不工作的機器也運行10.6,也是MacBook Pro。
CFMutableDictionaryRef service_properties = CFDictionaryCreateMutable(NULL,0,NULL,NULL); CFMutableDictionaryRef child_props = CFDictionaryCreateMutable(NULL,0,NULL,NULL);
kr = IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
if(kr != KERN_SUCCESS)
exit(1);
while((io_service= IOIteratorNext(io_objects)))
{
kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions);
io_iterator_t iter;
kr = IORegistryEntryGetChildIterator(io_service, kIOServicePlane, &iter);
io_registry_entry_t child;
while((child = IOIteratorNext(iter)))
{
kr = IORegistryEntryCreateCFProperties(child, &child_props, kCFAllocatorDefault, kNilOptions);
NSLog(@"%@",child_props);
}
IOObjectRelease(io_service);
}