针对驱动程序的固定 MDL 检查
面向驱动程序的固定 MDL 检查选项用于监控每个驱动程序是如何处理固定 MDL 缓冲区的。 此选项可检测是否对固定 MDL 缓冲区进行了非法修改。 若要使用此选项,你必须在至少一个驱动程序上启用 I/O 验证。
注意此选项从 Windows 8 开始可用。
与堆栈的固定 MDL 检查选项相比,“固定 MDL 检查”选项执行固定 MDL 检查 的更密集的形式。 当驱动程序的固定 MDL 检查处于活动状态时,每次调用 IoCallDriver 和 IoCompleteRequest 例程时,都会验证缓冲区不变性。
每次使用 IRP 看到新的固定 MDL 缓冲区时,驱动程序验证程序都会计算缓冲区内容的签名,并将其存储在其内部数据库中。 当驱动程序验证程序遇到前面看到的固定 MDL 缓冲区时,它会通过将数据库中的签名与基于当前固定 MDL 缓冲区内容计算的签名进行比较,来验证缓冲区的内容是否未更改。
此选项是全局性的,某些驱动程序无法选择性地强制实施。
激活此选项
可以使用驱动程序验证程序管理器或Verifier.exe命令行激活一个或多个驱动程序的固定 MDL 检查驱动程序功能。 有关详细信息,请参阅 选择驱动程序验证程序选项。 必须重新启动计算机才能激活或停用“固定 MDL 检查驱动程序”选项。
若要激活 “堆栈的固定 MDL 检查 ”选项,还必须激活 I/O 验证。
在命令行
在命令行上,驱动程序的固定 MDL 检查由 验证程序 /flags 0x00004000 (位 14) 表示。 若要激活驱动程序的固定 MDL 检查,请使用标志值0x00004010或向标志值添加0x00004010。 此值激活 I/O 验证 (0x10) 和驱动程序的固定 MDL 检查 (0x00004000) 。 例如:
verifier /flags 0x00004010 /driver MyDriver.sys
下次启动后,该功能将处于活动状态。
使用驱动程序验证程序管理器
- 启动驱动程序验证程序管理器。 在命令提示符窗口中键入 验证程序 。
- 选择“ ) 为代码开发人员创建自定义设置 ( ”,然后单击“ 下一步”。
- 从完整列表中选择“选择单个设置”。
- 选择“ (检查) I/O 验证”和“驱动程序的固定 MDL 检查”。
- 重新启动计算机。