2011-04-24 63 views
2

我正在學習如何編寫過濾器驅動程序,並試圖在現有HID驅動程序(鼠標或鍵盤)的頂部安裝一個用於練習的過濾器驅動程序。據我所知,我至少應該在硬件註冊表項中添加一個UpperFilters密鑰。還有什麼我該做的?將過濾器驅動程序安裝到現有設備

當我使用regedit手動添加UpperFilters鍵到我的目標USB鼠標設備時,註冊表說它不能創建密鑰。我懷疑註冊表不允許修改Windows提供的設備驅動程序堆棧註冊表。有沒有其他方法可以將我的過濾器驅動程序安裝到現有的設備堆棧中?

+0

聽起來像我需要提供我自己的INF文件,並在更新驅動程序嚮導中選擇HAVE DISK來使用我自己的INF文件。 – JavaMan 2011-04-24 12:28:11

回答

4

默認情況下,Windows 7不允許修改HKLM\SYSTEM\CurrentControlSet\Enum層次結構中除SYSTEM帳戶(即使不是管理員)以外的任何人的修改,因此手動添加UpperFilters密鑰並不容易。但是,從INF內部應該很容易。

但是,如果要過濾所有鼠標,您應該將UpperFilters鍵添加到鼠標設備類 - 即HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}。即使在Windows 7上,這也應該是不受阻礙的,但通常你也可以通過INF來完成。

編寫INF時,您可以在AddReg部分添加FLG_ADDREG_APPEND(0x00000008)標誌,以便您的篩選器將添加到鼠標設備類上的任何其他篩選器。

+0

如何通過INF將UpperFilters添加到設備類?或者,我應該更好地說明如何修改mouseclass的UpperFilters,因爲它已經有了一個上層過濾器mouclass.sys。有沒有樣本INF可供下載? – JavaMan 2011-05-05 08:53:07

+0

它會是一些INF部分,如下所示:[VBoxMouse_AddReg] HKLM,System \ CurrentControlSet \ Control \ Class \ {4D36E96F-E325-11CE-BFC1-08002BE10318},UpperFilters,0x00010000,「VBoxMouse」,「mouclass」。 (這是我發現VirtualBox用來修改虛擬機上的guest虛擬機win安裝的鼠標類上層過濾器的那個) – JavaMan 2011-05-05 09:48:54

+0

VBoxMouse的INF看起來就是一個很好的例子。使用0x00010008標誌,以便將過濾器附加到列表中,而不是替換它。 – Ilya 2011-05-06 12:46:42