devcon工具使用
+ -

DevCon ClassFilter命令

2022-01-28 56 0

添加、删除、显示和更改设备安装程序类的筛选器驱动程序的顺序。 仅在本地计算机上有效。

devcon classfilter class {upper | lower} [ = | @driver | -driver | +driver | !driver ]...

参数

指定设备安装程序类。
指示指定的驱动程序是高等级筛选器驱动程序。
指示指定的驱动程序是低级别筛选器驱动程序。

=
将光标移到筛选器驱动程序列表的开头, (驱动程序之前) 。

@
将光标定位到指定驱动程序的下一个实例上。

-
添加之前。 将指定的驱动程序插入到光标位于的驱动程序之前。

如果光标未定位在驱动程序上,DevCon 在列表的开头插入指定的驱动程序。 子命令完成后,光标将定位到新添加的驱动程序上。

+
添加后。 将指定的驱动程序插入到光标位于的驱动程序之后。

如果光标未定位在驱动程序上,DevCon 在列表末尾插入指定的驱动程序。 子命令完成后,光标将定位到新添加的驱动程序上。

从列表中删除指定驱动程序的下一个匹配项。

子命令完成后,游标将占用已删除的驱动程序的位置。 后续 +- 或子命令在光标位置插入新驱动程序。

备注

DevCon ClassFilter命令可以包含一个或多个子命令,这些子命令由运算符 (、 @-+@) 和筛选器驱动程序名称。 DevCon 按照子命令在命令中的显示顺序执行这些子命令。

如果没有子命令 ,DevCon ClassFilter 命令将显示指定类中的上部或较低筛选器驱动程序。 例如 ,devcon classfilter net lower 在 Net 安装程序类中显示较低的筛选器驱动程序。

DevCon ClassFilter操作使用虚拟游标在类的筛选器驱动程序列表中移动。 光标从筛选器驱动程序列表的开头开始,在列表中的第一个驱动程序之前。 除非返回到起始位置,否则在 DevCon 执行子命令时,游标始终通过筛选器驱动程序列表向前移动。

DevCon 不会将筛选器驱动程序添加到类,除非驱动程序作为服务安装,也就是说 ,HKLM\SYSTEM\CurrentControlSet\Services 注册表项中必须有驱动程序的注册表子项。 此安全措施可防止意外添加不存在的筛选器驱动程序,从而使系统无法启动。

由于筛选器驱动程序更改要求重启设备,因此请使用DevCon Restart命令,或在DevCon ClassFilter命令中包括/r (条件重启) 参数。

示例用法

devcon classfilter mouse upper
devcon /r classfilter mouse upper !mouclass +newmou
devcon /r classfilter net lower @netfltr -testfltr
devcon /r classfilter volume upper !volsnap =!volsnap2

显示安装程序类的筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作显示 DiskDrive 安装程序类的筛选器驱动程序。 由于此命令不包含任何 classfilter 运算符,因此 DevCon 显示类的筛选器驱动程序,但不更改它们。

devcon classfilter DiskDrive upper

在响应中,DevCon 显示 DiskDrive 类的筛选器的筛选器驱动程序,并确认其没有更改。 在这种情况下,将显示 DiskDrive 安装程序类中的设备使用 PartMgr.sys 的筛选器驱动程序。

Class filters unchanged.
    PartMgr

向安装程序类添加筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作向 DiskDrive 安装程序类的上层筛选器驱动程序列表中添加虚构筛选器 Disklog.sys。

此命令使用 “外接程序 (“ +) ClassFilter “运算符在 PartMgr 驱动程序之后加载 Disklog 驱动程序,以便接收 PartMgr.sys 已经处理的数据。

命令启动时,虚拟游标位于第一个筛选器驱动程序之前。 因为它没有定位在特定的驱动程序上,所以 DevCon 会将 Disklog 驱动程序添加到筛选器驱动程序列表的末尾。

该命令还使用 /r 参数,如果需要使类筛选器更改生效,则会重新启动系统。

devcon /r classfilter DiskDrive upper +Disklog

在响应中,DevCon 显示 DiskDrive 类的当前筛选器驱动程序。

Class filters changed. Class devices must be restarted for changes to take effect.
    PartMgr
    Disklog

如果驱动程序名称拼写有误,或者尝试添加未安装在系统上的驱动程序,则该命令将失败。 除非驱动程序已注册为服务,否则 DevCon 不会添加驱动程序,也就是说,除非该驱动程序在 “服务” 注册表子项 (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services) 中具有子项。

以下命令测试此安全功能。 它尝试将 “Disklgg” (而不是 “Disklog” ) 添加到 DiskDrive 类的上层筛选器列表。 输出表明该命令失败。

devcon /r classfilter DiskDrive upper +Disklgg
devcon failed.

在类列表中插入筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作将虚构筛选器驱动程序(MyFilter.sys)添加到 DiskDrive 安装程序类的上层筛选器驱动程序列表中。 命令会在加载顺序中将 PartMgr.sys 和 Disklog.sys 之间 MyFilter.sys。

devcon /r classfilter DiskDrive upper @Disklog -MyFilter

下面的列表显示提交命令之前的 DiskDrive 类的筛选器驱动程序。

PartMgr
Disklog

@Disklog的第一个子命令使用定位运算符 () 将虚拟光标放置在 Disklog 筛选器驱动程序上。 第二个子命令( MyFilter)使用 “外接程序运算符” () 在 Disklog.sys 之前添加 MyFilter.sys。

该命令还使用 /r 参数,如果需要使类筛选器更改生效,则会重新启动系统。

在此示例中,定位运算符是必不可少的。 在 DevCon 处理任何 classfilter 子命令之前,虚拟游标位于列表的开头,并且不位于任何筛选器驱动程序上。 如果在 + 游标不在驱动程序上时使用 “外接程序 () “ 运算符,则 DevCon 会将驱动程序添加到列表的开头。 如果在 - 游标不位于驱动程序上时使用 “外接程序 (“) 运算符,则会将该驱动程序添加到列表的末尾。

在响应中,DevCon 显示 DiskDrive 类的当前筛选器驱动程序。

Class filters changed. Class devices must be restarted for changes to take effect.
    PartMgr
    MyFilter
    Disklog

你还可以使用以下命令添加 MyFilter 驱动程序并将其放置在 PartMgr 和 Disklog 之间。 在此示例中,第一个子命令 @PartMgr将虚拟游标定位到 PartMgr 筛选器驱动程序。 第二个子命令 + MyFilter使用 “外接程序” 运算符 (+) 在 PartMgr 后添加 MyFilter.sys。

devcon /r classfilter DiskDrive upper @PartMgr +MyFilter

替换筛选器驱动程序

以下命令使用 DevCon ClassFilter 操作将 MyFilter.sys 的原始副本替换为 DiskDrive 安装程序类的筛选器驱动程序列表中的新的和改进的 MyNewFilter.sys 版本。

devcon /r classfilter DiskDrive upper !MyFilter +MyNewFilter

下面的列表显示提交命令之前的 DiskDrive 类的筛选器驱动程序。

    PartMgr
    MyFilter
    Disklog

第一个子命令使用 delete 运算符 (!) 从 DiskDrive 类的上层筛选器驱动程序列表中删除 MyFilter。 (它不会影响 C:\ Windows \System32\Drivers 目录中的 MyFilter.sys 文件。 )

第二个子命令使用 “外接程序运算符” (+) 将新筛选器驱动程序置于已删除驱动程序的位置。 由于 delete 运算符将光标置于已删除的筛选器所占用的位置,因此 (-) 和外接 (+) 运算符具有相同的效果。 )

该命令还使用 /r 参数,如果需要使类筛选器更改生效,则会重新启动系统。

在响应中,DevCon 显示了 DiskDrive 类的新类筛选器配置。

Class filters changed. Class devices must be restarted for changes to take effect.
    PartMgr
    MyNewFilter
    Disklog

更改筛选器驱动程序的顺序

以下命令使用 DevCon ClassFilter 操作来更改 DiskDrive 安装程序类的筛选器驱动程序的顺序。 具体而言,它将反转第二个和第三个筛选器驱动程序的顺序。

devcon /r classfilter DiskDrive upper !Disklog =@PartMgr +Disklog

下面的列表显示提交命令之前的 DiskDrive 类的筛选器驱动程序。 它还显示该命令的预期结果。

以前 之后
PartMgr PartMgr
MyNewFilter Disklog
Disklog MyNewFilter

第一个子命令使用 delete 运算符 (! ) 从列表中删除 Disklog。 第二个子命令使用 start 运算符 (=) 将虚拟光标移回起始位置,然后使用定位运算符 (@ ) 将光标放在 PartMgr 驱动程序中。 启动运算符是必需的,因为虚拟游标仅在列表中向前移动。 最后一个子命令使用 “外接程序” 运算符 (+) 在 PartMgr 之后添加 Disklog。

在响应中,DevCon 显示了 DiskDrive 类的新类筛选器配置。

Class filters changed. Class devices must be restarted for changes to take effect.
    PartMgr
    Disklog
    MyNewFilter

0 篇笔记 写笔记

DevCon ClassFilter命令
添加、删除、显示和更改设备安装程序类的筛选器驱动程序的顺序。 仅在本地计算机上有效。devcon classfilter class {upper | lower} [ = | @driver | -driver | +driver | !driver ]...参数指定设备安装程序类。指示指定的......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!