GPe*_*son 8 c# windows usb hid
情况: 我们有一个软件套件,可以与我们内部构建的设备进行交互.设备使用WinUSB进行通信,在固件更新期间在引导模式下使用EXCEPT.在引导模式下,设备使用不同的VendorID和ProductID,并使用HID进行通信.
问题: 要更新固件,我们发送命令并告诉设备进入引导模式.设备使用新的VID和PID重新枚举.在更新之前未连接设备的新机器上更新固件时,Windows会在引导加载程序出现时执行"安装驱动程序"跳舞.(没有安装驱动程序).软件获得DEVICE ATTACHED事件,因此我们开始固件更新.一旦Windows完成"安装"驱动程序,它就会取消枚举并重新枚举设备,在更新过程中关闭我们的文件句柄.
问题: 有没有办法检测Windows是否正在安装驱动程序,以便我们可以在开始更新过程之前等待重新枚举设备?我们可以在安装中做些什么来抢占这种行为吗?也许告诉Windows我们在连接到设备时不想允许安装驱动程序的方法?
也许有一种方法可以告诉 Windows 我们在连接到设备时不允许安装驱动程序?
Microsoft 的开发者网络有一个硬件开发部分。他们有一篇文章专门讨论这个问题。重要的是,该文档指出您的设备安装应用程序应“在执行安装之前确定是否有其他安装活动正在进行”(强调我的),并且 - 如果发现挂起的安装 - “应该退出”。
该声明的最后一部分似乎表明微软优先考虑已安装或待安装的设备应用程序安装。
如果您的问题陈述准确:
在之前未连接过处于启动模式的设备的新计算机上更新固件时,Windows 在引导加载程序出现时会执行“安装驱动程序”操作。
听起来您可能会运气不好 - 或者违反约定 - 尝试抢占驱动程序安装行为。
我将利用上述CMP_WaitNoPendingInstallEvents 功能,然后更新您的设备的固件。我认为VID/PID 在这里无关紧要,具体取决于固件更新代码的运行位置。看起来 OSR 在线论坛有一个相同性质的问题,并假定相同的优先级(驱动程序安装)。
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |