如果在引导时连接了加密狗,则我的USB功能驱动程序无法加载

时间:2017-11-18 00:22:00

标签: macos usb driver iokit xnu

今天这是新的。它现在已经运作了一段时间。

正常运行时,驱动程序将匹配USB设备 产品和供应商ID,然后将加载和运行。

它是一个USB视频适配器,因此在正常操作下,人们会看到模糊 桌面图像直到登录,然后你得到第二个屏幕 与显示首选项一起正常工作。

但就在今天,如果加密狗在启动时连接,则驱动程序不会 负载和USB连接的显示器不显示图像。

如果我拔下加密狗,然后将其重新插入,则可以正常工作。

如果在启动过程中未连接加密狗,则在插入后插入 到达桌面,它的工作原理。

如果在启动过程中连接了加密狗,我稍后会使用kextutil 加载它,kextutil报告成功,但它没有加载。

我推测这是一个匹配的问题,但不明白什么 可能出错了。

这是一个签名的驱动程序,现在位于/Library/Extensions;以前它在/System/Library/Extensions中未签名,禁用了系统完整性保护。

产品中还有另外两个不是USB功能驱动程序的驱动程序。他们装得很好。所有三个驱动程序一起工作以创建虚拟帧缓冲区然后显示它。

1 个答案:

答案 0 :(得分:1)

这可能是由一堆不同的东西造成的。一些建议:

  1. 您是否确认未在您的驱动程序类中调用::probe()::start()?如果他们返回NULL / false,则会导致行为,如上所述。
  2. 当您的驱动程序无法为冷插拔设备加载时,IORegistry的情况如何?您匹配的小块是否有任何客户端对象?
  3. 您是否排除了kext缓存问题? (例如,当OS重新生成kext缓存和预链接内核时是否有任何错误?)
  4. 发布您的Info.plist也可能会有所帮助 - 问题就在那里。