我有一个小程序来查找所有连接到Mac的USB设备的供应商ID和产品ID。该程序使用IOServiceNameMatching和IOServiceGetMatchingServices分别获得匹配的字典和服务迭代器,如下所示:
matchingDictionary = IOServiceNameMatching("AppleUSBCDC");
IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDictionary, &serviceIterator);
然后,我遍历serviceIterator来枚举和提取所有连接的USB设备的ID。过去,在OSX10.10之前,这个程序非常好,但是IOServiceGetMatchingServices返回OSX10.11中的空迭代器。为什么它只在OSX10.11上返回空迭代器,即使USB设备是连接的?在OSX10.11中是否有获得设备列表的替代方法?
发布于 2015-11-10 07:29:42
El Capitan更改了USB堆栈的底层名称/体系结构,我认为服务名称现在是不同的,但我没有方便检查的USB CDC设备。使用IORegistryExplorer (包括在硬件IO工具中)查看您想要匹配的设备nubs,并查看它们具有哪些属性(以及您可以尝试使用IOServiceNameMatching
或IOServiceMatching
搜索什么)。
发布于 2015-11-10 16:07:19
我使用"IOUSBHostInterface“而不是"AppleUSBCDC”,现在能够枚举和获取所有连接的USB设备的供应商ID和产品ID。看来苹果不再承认"AppleUSBCDC“了。
https://stackoverflow.com/questions/33620946
复制相似问题