我有一个DriverKit扩展,它可以很好地匹配usb设备,但是如果我在重启时插入设备,AppleUSBAudio内核扩展就会匹配它。
拔掉插头并重新插入,然后加载我的dext。
这是意料之中的吗?是不是所有的系统扩展都有这个缺点?我该如何解决这个问题呢?
发布于 2021-04-15 04:12:15
在macOS 11上,如果苹果的某个kext与您的设备匹配,并且他们的驱动程序位于“启动”或“系统”集合中(请参阅man kmutil),那么他们的驱动程序将在与您的驱动程序的匹配中获胜,即使您的驱动程序的探测分数更高。
在macOS 10.15上,它应该取决于它们的kext是否在预链接的内核/kext缓存中。第三方kext也可以包括在这里,所以它至少更民主一点。不过,Dext不能在kextcache中。
我已经提交了关于这个问题的Apple DTS TSI,他们已经承认它是一个bug。我强烈建议你把它作为一个bug来归档,以增加它被修复的机会。
如果您的驱动程序没有设法获取它,那么您应该能够从用户空间守护进程通过explicitly force resetting the device以一种相当丑陋的方式解决它。这将导致它被USB子系统重新枚举,并重复I/O工具包匹配,在这一点上,您的dext希望设法获胜!
https://stackoverflow.com/questions/67096727
复制相似问题