系统性低资源模拟

系统性低资源模拟选项会在内核模式驱动程序中注入资源故障。此选项渗透驱动程序错误处理路径。一直以来,这些路径的测试都十分复杂。系统性低资源模拟选项会以一种可预测的方式注入资源故障,使得其发现的问题可以重现。由于错误路径易于重现,因而这些问题的修复也易于验证。

为了帮助你确定错误的根本原因,我们提供了一个调试程序扩展,它可以准确地告知你以怎样的顺序注入了哪些故障。

小心  此选项不适用于在验证计算机上的所有(或大量)驱动程序时使用。 只有在对单个驱动程序或其附带的筛选器驱动程序进行针对性测试时,才应使用此选项。使用此选项同时测试大量驱动程序会导致不可预测的结果,并会导致与你测试的驱动程序无关的组件发生崩溃。

注意  对于 Windows 8.1,基于堆栈的故障注入功能(在 WDK 8 中提供)已集成到驱动程序验证程序。在运行 Windows 8.1 的计算机上,请使用系统性低资源模拟选项。

当对特定的驱动程序启用了系统性低资源模拟选项时,该选项会截获一些来自该驱动程序的调用,并将它们转至内核和 Ndis.sys。 系统性低资源模拟会查看调用堆栈 - 具体而言,查看来自启用它的驱动程序的调用堆栈部分。 如果这是它首次看到该堆栈,它将按照该调用的语义使其失败。否则,如果它曾看到过该调用,它将原封不动地传递该调用。系统性低资源模拟包含一种逻辑,用于应对驱动程序可多次加载和卸载的情况。即使驱动程序被重新加载到其他内存位置,基于堆栈的故障注入仍将识别出调用堆栈是相同的。

激活此选项

通过使用驱动程序验证程序管理器或 Verifier.exe 命令行,可以为一个或多个驱动程序激活系统性低资源模拟功能。有关详细信息,请参阅选择驱动程序验证程序选项。必须重启计算机才能激活或停用系统性低资源模拟选项。

  • 使用命令行

    在命令行,系统性低资源模拟由 verifier /flags 0x040000 (Bit 18) 表示。对于系统性低资源模拟,请使用标志值 0x040000 或将 0x040000 添加到该标志值。例如:

    
    verifier /flags 0x040000 /driver MyDriver.sys
    
    

    该功能将在下次启动时激活。

    启用系统性低资源模拟选项时,你可以使用 /faultssystematic OPTION 命令行选项进一步控制系统性低资源模拟。

    OPTION描述

    enableboottime

    启用经计算机重新启动进行故障注入。

    disableboottime

    禁用经计算机重新启动进行故障注入(这是默认设置)。

    recordboottime

    启用在 what if 模式下经计算机重新启动进行故障注入。

    resetboottime

    禁用经计算机重新启动进行故障注入并清除堆栈排除列表。

    enableruntime

    动态启用故障注入。

    disableruntime

    动态禁用故障注入。

    recordruntime

    what if 模式下动态启用故障注入。

    resetruntime

    动态禁用故障注入并清除以前的故障堆栈列表。

    querystatistics

    显示当前故障注入统计信息。

    incrementcounter

    增加所使用的测试通过次数以标识注入故障的时间。

    getstackid COUNTER

    检索指示的注入的堆栈标识符。

    excludestack STACKID

    从故障注入中排除堆栈。

     

  • Dn312130.wedge(zh-cn,VS.85).gif使用驱动程序验证程序管理器

    1. 启动驱动程序验证程序管理器。在“命令提示符”窗口中键入 Verifier
    2. 选择“创建自定义设置(供程序开发人员使用)”,然后单击“下一步”
    3. 选择“从一个完整的列表选择单个设置”
    4. 选择(选中)系统性低资源模拟
    5. 重新启动计算机。

调试由系统性低资源模拟导致的错误检查

使用系统性低资源模拟发现的多数问题都会导致错误检查。为帮助确定导致这些代码错误的原因,Windows 8.1 的 Windows 调试工具提供了调试程序扩展 (kdexts.dll) 和一些必需的符号。

Dn312130.wedge(zh-cn,VS.85).gif运行调试程序扩展的步骤

  • 在调试程序命令提示符下,键入以下命令:
    !verifier 0x800
    

此命令会向你的调试程序中转储一些显示最近所注入故障中调用堆栈的信息。

 

 

显示:
© 2014 Microsoft