OS X上的USB设备枚举

时间:2012-08-06 21:47:55

标签: macos usb driver kernel-extension

我有一个无代码kext用于连接USB单芯片设备(CSR BC4) - 效果很好。如果我将多个设备连接到外部集线器,它仍然可以正常工作。

在我的info.plist的IOKitPersonalities字典中,对于设备和接口词典,我一直在IOBluetoothFamily.kext中的CSR驱动程序上使用CFBundleIdentifier进行匹配,该CFBundleIdentifier引用该CSR kext和该包中的IOClass。

快进到在内部集线器上使用多个CSR BC7芯片的新设备。长话短说,我无法让该设备正确匹配设备中的所有芯片。 Apple驱动程序通常会抓住两个芯片。如果我插入两个设备,我将从一个芯片获得所有芯片,而从另一个芯片获得芯片。随后挖了几天。我一直在Apple列表上看到有关使用“com.apple.kernel.iokit”或“com.apple.kpi.iokit”的CFBundleIdentifier和IOClass“IOService”

的参考资料

我尝试了com.apple.kernel.iokit并没有给我的设备带来任何好运。由于我在64位平台上,我决定尝试com.apple.kpi.iokit - 宾果游戏!这两种设备都像魅力一样。

我的问题是我真正匹配的是什么?我可以理解将设备与现有驱动程序匹配,但在这种情况下我匹配的是什么?我无法从Apple那里找到任何确切告诉我自己在做什么的确切知识。

任何帮助表示赞赏!

初始人格的例子:

MyCsrDevice  
  CFBundleIdentifier    com.apple.driver.CSRUSBBluetoothHCIController  
  IOClass               CSRUSBBluetoothHCIController  
  IOProviderClass       IOUSBDevice  
  idProduct             32  
  idVendor              vvvv  

MyCsrInterface  
  CFBundleIdentifier    com.apple.driver.CSRUSBBluetoothHCIController  
  IOClass               CSRUSBBluetoothHCIController  
  IOProviderClass       IOUSBInterface  
  idProduct             32  
  idVendor              vvvv 
  bInterfaceNumber      0  
  bConfigurationValue   1  

当前人格的例子:

MyCsrDevice  
  CFBundleIdentifier    com.apple.kpi.iokit  
  IOClass               IOService  
  IOProviderClass       IOUSBDevice  
  idProduct             32  
  idVendor              vvvv 

MyCsrInterface  
  CFBundleIdentifier    com.apple.kpi.iokit  
  IOClass               IOService  
  IOProviderClass       IOUSBInterface  
  idProduct             32  
  idVendor              vvvv 
  bInterfaceNumber      0  
  bConfigurationValue   1    

0 个答案:

没有答案