【问题标题】:Driver development: Uninstalling Windows driver驱动开发:卸载Windows驱动
【发布时间】:2011-09-24 17:55:42
【问题描述】:

我正在破解虚拟 HID 驱动程序,由于某种原因,我无法在设备管理器中禁用和卸载该驱动程序。

devcon.exe remove 也会引发错误。在控制面板的游戏控制器对话框中删除设备告诉我去设备管理器删除设备。

知道是什么原因导致这种情况发生吗?什么可能导致 Windows 认为它​​无法删除驱动程序?


小更新。

将计算机置于待机状态允许我移除设备。

删除部分 HID 报告描述符(例如多点触控报告、鼠标报告和键盘报告,我都没有使用过)也解决了这个问题。

但是,我想了解到底出了什么问题。是什么锁定了驱动程序,无法卸载?

【问题讨论】:

  • 确切的错误信息是什么?
  • 错误是一般性的,如下所示:“转到设备管理器以删除此设备”和“无法卸载该设备”。真的,没有具体说明。

标签: windows driver device-driver hid


【解决方案1】:

任何可能正在使用驱动程序的进程都可能将其保持打开状态。一种查看方法是使用Sysinternals' Process Explorer 并使用“句柄”菜单下的“查找”命令来搜索与驱动程序相关的任何 DLL 的名称。

因此,对于许多驱动程序而言,关闭相关进程很容易,但对于与文件系统相关的进程而言,它可能更具挑战性。例如,即使您关闭了虚拟设备上的所有映射或挂载,任何 Windows 资源管理器进程(包括登录 shell)也可能已加载驱动程序。同样,PROCEXP 有助于弄清楚其中的一些...

【讨论】:

    【解决方案2】:

    它是一个内核模式驱动程序,所以你不能“仅仅”禁用它。要成功卸载驱动程序,I/O 管理器必须在没有其他句柄等待处理或关闭时发送清理请求。

    如果是 PnP 驱动程序,PnP 管理器必须向 I/O 管理器发送IRP_MJ_SHUTDOWN 请求,以便 I/O 管理器可以启动卸载回调例程。

    强制禁用它的一种方法是,您可以调试机器的内核。通过这样做,您可以查看哪些进程正在向此驱动程序发送请求,然后手动卸载驱动程序(它可能会产生严重影响,因为所有保持驱动程序打开的打开句柄必须由 I/O 管理器关闭)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 2010-11-03
      相关资源
      最近更新 更多