我有一个无代码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