针对驱动程序的固定 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 检查由 verifier /flags 0x00004000 (Bit 14) 表示。 若要激活驱动程序的不变量 MDL 检查,请使用标志值0x00004010或在标志值上添加0x00004010。 此值激活 I/O 验证(0x10)和驱动程序的不变 MDL 检查(0x00004000)。 例如:

    verifier /flags 0x00004010 /driver MyDriver.sys
    

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

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

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