【问题标题】:Serial Mouse device crashes using virtual desktop串行鼠标设备使用虚拟桌面崩溃
【发布时间】:2016-01-17 07:17:03
【问题描述】:

我有一些旧的基于串行的 USB 触摸屏系统,用新硬件替换会很昂贵。

它们以下列方式连接:

串口鼠标 -> 串口转 USB 适配器 -> 瘦客户端 -> 虚拟机

在一个问题上一切都很好。我遇到了驱动程序崩溃,所有用户都注销、关闭或重新启动。当前的解决方法是在注销之前禁用串行鼠标设备,这真的很痛苦。只要设备被禁用,一切正常。

我通过对崩溃虚拟机进行内存转储对这个问题进行了大量研究。

似乎当用户注销时,USB 设备突然断开连接,然后 Windows 尝试优雅地禁用该设备并等待它被确认,从而永远挂起。在汇编中,它似乎调用了一个永远不会返回的 .sys 文件。

有什么办法可以解决这样的问题吗?您可以更改设备关机顺序吗?或者可能告诉 Windows 不确保即插即用设备已关闭?我怀疑供应商是否愿意更换他们的驱动程序。

【问题讨论】:

  • 也许作为一种解决方法,您可以在注销脚本中自动禁用设备?
  • 我实际上尝试过使用组策略,但不幸的是它看起来像 Windows 崩溃了。

标签: windows crash serial-port driver freeze


【解决方案1】:

我为此问题编写了一个自定义解决方案。

应用程序使用 ShutdownBlockReasonCreate API 调用来阻止 Windows 关闭。然后,它使用 WM_QUERYENDSESSION API 调用侦听重新启动或注销。当它得到这个时,它会禁用设备,然后销毁创建的关闭块。

真正的痛苦,但它有效

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 1970-01-01
    • 2011-01-18
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    相关资源
    最近更新 更多