1
因此,我有一个USB大容量存储设备,它将两个磁盘暴露给macOS。 我得到检测用https://stackoverflow.com/users/1412808/rafael-baptista的文章第一个: https://oroboro.com/usb-serial-number-osx/获取所有USB大容量存储设备的列表
但是,使用代码我不能得到第二个:
io_registry_entry_t child;
io_iterator_t child_iterator = MACH_PORT_NULL;
kern_return_t kr;
kr = IORegistryEntryCreateIterator(usbDevice,
kIOServicePlane,
kIORegistryIterateRecursively,
&child_iterator);
if (kr != kIOReturnSuccess) {
return;
}
while ((child = IOIteratorNext(child_iterator)) != MACH_PORT_NULL) {
CFStringRef bsdName = NULL;
bsdName = (CFStringRef) IORegistryEntrySearchCFProperty(child, kIOServicePlane, CFSTR(kIOBSDNameKey), kCFAllocatorDefault, kIORegistryIterateRecursively);
if (bsdName) {
....
我会很感激的是我可以有任何指针或信息在这里做得更好。
谢谢。
你的'usbDevice'句柄来自哪里?当然,这是这个问题的关键。 – pmdj
它来自usbDevice = IOIteratorNext(iterator),它是检测到新匹配设备时获得的迭代器。我不认为它是一个问题。 – GregJaskiewicz
那么,你是否在迭代多个usbDevices?这部分工作吗? – pmdj