我无法从英特尔处理器的 macOS Monterey 12 Bate4 获取 USB bsdname:我使用“IORegistryEntrySearchCFProperty”函数获取 io_service_t 的 bsdName,它在 macOS Big Sur 的 M1 和 Intel MBP 上运行良好。它在 macOS Monterey App M1 上也运行良好。但它在 macOS Monterey Intel MBP 上总是返回 nil。它涉及以下代码:
void getBsdName(io_service_t usbDevice)
{
CFStringRef bsdName = NULL;
for(int i = 0; i < 500; i++)
{
bsdName = (CFStringRef)IORegistryEntrySearchCFProperty(usbDevice,
kIOServicePlane,
CFSTR( kIOBSDNameKey ),
kCFAllocatorDefault,
kIORegistryIterateRecursively );
if(!bsdName) {
// If don't get a bsd name, keep waiting in 5s.
usleep(10000);
continue;
}
printf("[%s]: Found bsd name for device %d.\n”, __func__, usbDevice);
break;
}
}
有人知道为什么会这样吗?如何使其在 MacOS 12 英特尔处理器上运行?或者有没有其他方法可以做到这一点?
我也将同样的问题上传到苹果论坛,请查看此链接:Apple_forum_thread_686377