2011-09-24 153 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管理器關閉)