【问题标题】:My USB Function Driver Doesn't Load If Dongle Is Attached At Boot如果在启动时连接了加密狗,我的 USB 功能驱动程序不会加载
【发布时间】:2017-11-18 00:21:59
【问题描述】:

这是今天的新内容。一段时间以来,它一直运行良好。

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

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

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

如果我拔下加密狗,然后重新插入,它可以工作。

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

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

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

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

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

【问题讨论】:

    标签: macos usb driver iokit xnu


    【解决方案1】:

    这可能是由许多不同的事情引起的。一些建议:

    1. 您是否验证过您的驱动程序类没有调用::probe()::start()?如果他们返回 NULL/false,将导致上述行为。
    2. 当您的驱动程序无法为冷插拔设备加载时,IORegistry 中的情况是什么?您匹配的 nub 是否有任何客户端对象?
    3. 您是否排除了 kext 缓存问题? (例如,操作系统重新生成 kext 缓存和预链接内核时是否有任何错误?)

    发布您的 Info.plist 也可能会有所帮助 - 问题可能出在此处。

    【讨论】:

    • 谢谢。我正在家里做其他事情,我的加密狗在工作。我明天会看看你的建议。
    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多