2017-11-18 150 views
1

今天刚刚发布。它现在一直在运行良好。如果在启动时连接了加密狗,我的USB功能驱动程序不会加载

当正常工作时,驱动器将匹配USB设备的 产品和供应商的ID,然后将加载和操作。

这是一个USB视频适配器,所以在正常情况下,人们看到桌面上的模糊图像 直到登录,那么你 工作正常获得第二个屏幕,显示首选项。

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

如果我拔掉加密狗然后再插上,它的工作原理。

如果在引导过程中未安装加密狗,然后插入 后达到的桌面,它的工作原理。

如果引导过程中加密狗连接,和我后来用kextutil到 加载它,kextutil报告成功,但它不会加载。

我猜测它是相匹配的问题,但不明白 可能出了问题。

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

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

回答

1

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

  1. 您是否验证了::probe()::start()不被称为你的驱动程序类?如果他们返回NULL/false,那将导致所描述的行为。
  2. 当您的驱动程序未能加载冷插设备时,IORegistry中的情况如何?你匹配的结点是否有客户端对象?
  3. 你排除了kext缓存问题吗? (例如,是否有任何错误时,OS重新生成的kext缓存和预链接内核?)

发布您的Info.plist也可能帮助 - 这是可能的,问题出在那里。

+0

谢谢。我正在其他地方工作,我的加密狗在工作。我明天会看看你的建议。 –

相关问题