2011-09-24 156 views
0

我在使用虚拟HID驱动程序,出于某种原因,我无法禁用并无法卸载设备管理器中的驱动程序。驱动程序开发:卸载Windows驱动程序

devcon.exe remove也会报错。在“控制面板”中的“游戏控制器”对话框中删除设备会告诉我转到设备管理器以删除设备。

任何想法可能导致这种情况发生?什么可能导致Windows认为它无法删除驱动程序?


小更新。

将计算机置于待机状态允许我卸下设备。

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

但是,我想知道究竟出了什么问题。什么锁定了驱动程序,因此无法卸载?

+0

什么是确切的错误信息? – ewall

+0

错误是通用的,如下所示:“转到设备管理器以删除此设备”和“无法卸载设备”。真的,没有具体说的。 –

回答

0

任何可能使用该驱动程序的进程都可能将其打开。一种方法是使用Sysinternals' Process Explorer并使用“Handles”菜单下的“Find”命令来搜索与驱动程序相关的任何DLL的名称。

因此,许多关闭相关进程的驱动程序很容易,但对于与文件系统相关的驱动程序可能更具挑战性。例如,即使关闭虚拟设备上的所有映射或挂载,任何Windows资源管理器进程(包括登录shell)都可能已加载驱动程序。再次,PROCEXP有助于找出这一些...

0

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

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

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