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


Расширенная проверка ввода-вывода

Эта функция доступна только в Windows XP и более поздних версиях операционной системы Windows.

В Windows 7 и более поздних версиях операционной системы Windows улучшенная проверка ввода-вывода автоматически активируется при выборе проверки ввода-вывода. Он недоступен и не требуется выбирать его в качестве отдельного параметра.

При активации расширенной проверки ввода-вывода средство проверки драйверов отслеживает вызовы нескольких подпрограмм диспетчера I/O и выполняет стресс-тестирование PnP IRP, power IRP и WMI IRP.

В Windows Vista и Windows XP расширенная проверка ввода-вывода активируется независимо от проверки ввода-вывода, но выбор обоих вариантов обеспечивает более полный тест методов интерфейса ввода-вывода в драйвере.

Функции расширенной проверки ввода-вывода

Средство проверки драйверов добавляет следующие проверки при активации расширенной проверки ввода-вывода.

  • Отслеживает все IRPs, чтобы убедиться, что драйвер возвращает STATUS_PENDING, если и только если он вызвал IoMarkIrpPending.

  • Отслеживает использование IoDeleteDevice, чтобы убедиться, что драйвер не удаляет одно и то же устройство более одного раза, а также для обнаружения неуместного отсоединения и удаления объектов устройства.

  • Проверяет, правильно ли драйвер выполняет все вызовы IoSkipCurrentIrpStackLocation.

К новым стрессам и тестам относятся:

  • Перемешивание порядка перечисленных устройств, чтобы гарантировать, что драйверы Plug and Play (PnP) не делают предположений о порядке запуска устройств.

  • Настройка состояния PnP и Power IRPs при их завершении, чтобы обнаружить драйверы, возвращающие неверное состояние из диспатчерских подпрограмм.

  • Отправка поддельных Power IRP для тестирования на наличие ошибок в коде драйвера.

  • Отправка поддельных IRP WMI для проверки ошибок в путях кода драйвера.

  • Вставка поддельных фильтров в каждый стек WDM.

Отображение расширенных ошибок проверки ввода-вывода

Ошибки драйвера, пойманные расширенной проверкой ввода-вывода, отображаются таким же образом, как и при проверке ввода-вывода уровня 2.

На синем экране эти ошибки отмечаются сообщением ОШИБКА ПРОВЕРКИ СИСТЕМЫ ВВОДА-ВЫВОДА и строкой WDM DRIVER ERRORXXX, где XXX — код ошибки ввода-вывода.

В файле аварийного дампа эти ошибки отмечаются сообщением BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION), а также кодом ошибки ввода-вывода. В этом случае код ошибки ввода-вывода отображается как первый параметр проверки ошибки 0xC9.

В отладчике ядра (KD или WinDbg) эти ошибки отмечаются сообщением WDM DRIVER ERROR и описательной текстовой строкой. Если отладчик ядра активен, можно игнорировать ошибки уровня 2 и возобновить системную операцию. (Это невозможно при любых других проверках ошибок.)

Синий экран, файл аварийного дампа и отладчик ядра отображают дополнительные сведения. Полное описание всех сообщений об ошибках уровня ввода-вывода 2 см. в разделе "Проверка ошибок" 0xC9.

Активация этого параметра

Вы можете активировать функцию расширенной проверки ввода-вывода для одного или нескольких драйверов с помощью диспетчера проверки драйверов или командной строки Verifier.exe. Дополнительные сведения см. в разделе "Выбор параметров средства проверки драйвера".

Заметка В Windows 7 и более поздних версиях операционной системы Windows улучшенная проверка ввода-вывода автоматически активируется при выборе проверки ввода-вывода. Он недоступен и не требуется выбирать его в качестве отдельного параметра.

  • В командной строке

    В командной строке параметр расширенной проверки ввода-вывода представлен битом 6 (0x40). Чтобы активировать расширенную проверку ввода-вывода, используйте значение флага 0x40 или добавьте 0x40 в значение флага. Рассмотрим пример.

    verifier /flags 0x40 /driver MyDriver.sys
    

    Функция будет активна после следующей загрузки.

    В Windows Vista и более поздних версиях Windows можно также активировать и отключить расширенную проверку ввода-вывода без перезагрузки компьютера, добавив в команду параметр /volatile . Рассмотрим пример.

    verifier /volatile /flags 0x40 /adddriver MyDriver.sys
    

    Этот параметр действует немедленно, но теряется при завершении работы или перезагрузке компьютера. Для получения подробной информации см. Использование изменяемых параметров.

  • Использование диспетчера проверки драйверов

    1. Запустите диспетчер проверки драйверов. В окне командной строки введите средство проверки .
    2. Выберите "Создать настраиваемые параметры" (для разработчиков кода) и нажмите кнопку "Далее".
    3. Выберите отдельные параметры из полного списка.
    4. Выберите (проверьте) расширенную проверку ввода-вывода.

    Функция проверки DMA также включена в стандартные параметры. Чтобы использовать эту функцию, в диспетчере проверки драйверов нажмите кнопку "Создать стандартные параметры".