我正在学习如何编写过滤器驱动程序,并尝试在现有的HID驱动程序(鼠标或键盘)上安装一个用于练习。根据我的理解,我至少应该在硬件注册表项中添加一个 UpperFilters 键。还有什么我应该做的吗?
当我使用regedit手动将 UpperFilters 键添加到目标USB鼠标设备时,regedit说它无法创建密钥。我怀疑regedit不允许修改Windows提供的设备驱动程序堆栈注册表。是否有其他方法可以将我的过滤器驱动程序安装到现有的设备堆栈中?
答案 0 :(得分:4)
默认情况下,Windows 7不允许对除SYSTEM系统以外的任何人HKLM\SYSTEM\CurrentControlSet\Enum
层次结构进行修改(即使不是管理员),因此手动向特定设备添加UpperFilters
密钥并不容易。但是,从INF内部来看应该很容易。
但是,如果要过滤所有鼠标,则应将UpperFilters
键添加到鼠标设备类 - 即HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}
。即使在Windows 7上也应该不受阻碍,但通常也可以通过INF来实现。
编写INF时,可以在AddReg部分添加FLG_ADDREG_APPEND(0x00000008)标记,以便将过滤器添加到鼠标设备类的任何其他过滤器上。