Обзор WdfFiTester

Вы можете настроить WdfFiTester так, чтобы он намеренно вызывал сбой вызовов функций интерфейса драйвера устройства KMDF DDI, которые возвращают код NTSTATUS. В KMDF версии 1.11 есть 190 функций, возвращающих код NTSTATUS. Список этих функций см. в разделе "Функции KMDF", возвращающие коды NSTATUS.

Код, обрабатывающий вызов функции KMDF, обычно содержит шаблон, показанный в следующем примере кода:

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

Функция KMDF возвращает код NTSTATUS, а драйвер проверяет наличие возвращаемого кода перед продолжением. Однако многие проблемы с драйвером возникают из-за отсутствия или неправильной проверки возвращаемого кода. Эти ошибки могут вызвать непредвиденное поведение в драйвере или вызвать проверку ошибок.

Например, может возникнуть ошибка, если функция имеет параметр указателя (__out), который, как ожидается, будет допустимым при выходе функции, но вместо этого имеет значение NULL. Проверка ошибок может происходить, если драйвер использует параметр и не проверяет состояние возврата из вызова функции правильно.

Для каждого DDI (иерархии драйверов), настроенного для внедрения ошибок, средство WdfFiTester возвращает код NTSTATUS STATUS_UNSUCCESSFUL. Ожидается, что драйвер будет обрабатывать сбой.

Так как средство использует интерфейс WMI, его можно запустить из скрипта (vbscript или jscript) или любого другого приложения пользовательского режима (C, C++или C#), которое может вызывать WMI.

Помимо других операций, с использованием интерфейса WMI данного инструмента можно получить список вызовов DDI, которые были инициированы определенным драйвером KMDF и ожидают события WMI, срабатывающего каждый раз при успешном завершении инъекции ошибки DDI.