针对驱动程序的固定 MDL 检查

面向驱动程序的固定 MDL 检查选项用于监控每个驱动程序是如何处理固定 MDL 缓冲区的。 此选项可检测是否对固定 MDL 缓冲区进行了非法修改。 若要使用此选项,你必须在至少一个驱动程序上启用 I/O 验证。

注意此选项从 Windows 8 开始可用。

与堆栈的固定 MDL 检查选项相比,“固定 MDL 检查”选项执行固定 MDL 检查 的更密集的形式。 当驱动程序的固定 MDL 检查处于活动状态时,每次调用 IoCallDriverIoCompleteRequest 例程时,都会验证缓冲区不变性。

每次使用 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
    

    下次启动后,该功能将处于活动状态。

  • 使用驱动程序验证程序管理器

    1. 启动驱动程序验证程序管理器。 在命令提示符窗口中键入 验证程序
    2. 选择“ ) 为代码开发人员创建自定义设置 ( ”,然后单击“ 下一步”。
    3. 从完整列表中选择“选择单个设置”。
    4. 选择“ (检查) I/O 验证”和“驱动程序的固定 MDL 检查”。
    5. 重新启动计算机。