Поделиться через


Обзор 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 средства можно получить список DDIs, которые были вызваны определенным драйвером KMDF и ожидают события WMI, которое срабатывает каждый раз, когда внедрение ошибки DDI завершается успешно.