WdfFiTester 概述

可以将 WdfFiTester 配置为使任何 KMDF 设备驱动程序接口 (返回 NTSTATUS 代码的 DDI) 函数调用失败。 KMDF 版本 1.11 中有 190 个系统提供的函数返回 NTSTATUS 代码。 有关这些函数的列表,请参阅 返回 NSTATUS 代码的 KMDF 函数

处理 KMDF 函数调用的代码通常采用以下代码示例中显示的模式:

//
// Create the device object.
//
status = WdfDeviceCreate(
                         &DeviceInit,
                         &attributes,
                         &device
                         );
if (!NT_SUCCESS(status)) {
 return status;
    }

KMDF 函数返回 NTSTATUS 代码,驱动程序在继续之前检查返回代码。 但是,由于返回代码的检查缺失或不正确,导致许多驱动程序问题。 这些错误可能会导致驱动程序出现意外行为,或者可能导致 bug 检查。

例如,如果函数具有 (__out) 指针参数,该参数预期在函数退出时有效,但改为为 NULL,则可能会出现 bug 检查。 如果驱动程序使用 参数,并且驱动程序未正确检查函数调用的返回状态,则可能会出现 bug 检查。

对于已为故障注入配置的每个 DDI,WdfFiTester 工具将返回STATUS_UNSUCCESSFUL的 NTSTATUS 代码。 驱动程序应处理故障。

由于该工具使用 WMI 接口,因此可以从脚本 (vbscript 或 jscript) 或任何其他可调用 WMI 的用户模式应用程序 (C、C++或 C# ) 运行它。

除了其他操作,使用该工具的 WMI 接口,你可以获取由特定 KMDF 驱动程序调用的、等待每次 DDI 故障注入成功完成时触发的 WMI 事件的 DDI 列表。