【发布时间】:2021-01-19 23:49:57
【问题描述】:
我们有一个可编程的专有 USB 加密狗(不是存储设备),我们将它插入运行 Windows CE7 的机器中。有了加密狗,我们可以使用一个 API。一个简单的 API 函数是“checkIfDongleInserted”函数。
USB加密狗插入运行机器时被识别,即它在HKLM\Drivers\Active下的Wince注册表中列出,我们可以通过checkIfDongleInserted函数找到它。
但是,如果我们在加密狗仍然插入的情况下重新启动机器,则设备将不再被识别,即它不会出现在注册表中并且 API 函数会失败。如果我们手动重新插入加密狗,那么它会再次被识别。
有趣的是,其他设备(USB 记忆棒、USB 键盘、USB 鼠标)可以正常工作,并且在机器重新启动后可以很好地识别,而这些设备仍处于插入状态。
在检查 USB 加密狗的驱动程序后,我发现它实现了 USBInstallDriver 接口。研究这个界面让我找到了https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms923254(v=msdn.10),在评论中它说
USB驱动模块在无法识别时调用该函数 设备已连接到 USB 端口
所以我的猜测是,在机器运行时重新启动这个“USB 驱动程序模块”(从客户端应用程序)可能是识别 USB 加密狗的一个想法。虽然我没有从客户端应用程序中看到这种情况。
这个特定设备在插入时在引导时未被检测到的原因可能是什么? 有没有不用手动重新插入就能识别的方法?
【问题讨论】:
-
尝试在其他机器上检查设备。如果它在其他机器上运行,那么最好的猜测是驱动程序已损坏。删除驱动程序并重新安装。
标签: windows-ce