2011-04-24 62 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