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 列表。