2

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

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

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

我尝试了 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    
4

0 回答 0