Систематическое моделирование нехватки ресурсов

Параметр Систематическое моделирование нехватки ресурсов внедряет сбои ресурсов в драйверы режима ядра. Этот параметр проникает в пути обработки ошибок драйвера. Тестирование этих путей исторически было очень трудным. Параметр Систематическое моделирование нехватки ресурсов позволяет прогнозировать сбои ресурсов, что делает проблемы, которые он считает воспроизводимыми. Так как пути ошибок легко воспроизвести, это также упрощает проверку исправлений для этих проблем.

Чтобы помочь определить первопричину ошибки, предоставляется расширение отладчика, которое может точно указать, какие сбои были внедрены и в каком порядке.

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

Примечание Для Windows 8.1 функция внедрения сбоев на основе стека, которая была доступна в WDK 8, была интегрирована в средство проверки драйверов. На компьютерах под управлением Windows 8.1 используйте параметр Имитация систематического нехватки ресурсов.

Если для определенного драйвера включен параметр Систематическое моделирование нехватки ресурсов, он перехватывает некоторые вызовы от этого драйвера к ядру и Ndis.sys. Систематическое моделирование нехватки ресурсов рассматривает стек вызовов, в частности, часть стека вызовов, которая поступает из драйвера, в который он включен. Если этот стек встречается впервые, вызов завершится ошибкой в соответствии с семантикой этого вызова. В противном случае, если он видел этот вызов ранее, он будет передавать его через нетронутый. Систематическое моделирование нехватки ресурсов содержит логику, связанную с тем фактом, что драйвер можно загружать и выгружать несколько раз. Он распознает, что стек вызовов одинаков, даже если драйвер перезагружается в другое расположение памяти.

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

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

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

    Windows 11

    В командной строке имитация систематического минимума ресурсов представлена проверяющей /rc 19 36 или проверяющей /dif 19, оба из которых включают требуемый режим DIF.

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

    Windows 10 и ниже

    В командной строке имитация систематического нехватки ресурсов представлена проверятелем /flags 0x040000 (бит 18). Для систематического моделирования нехватки ресурсов используйте значение флага 0x040000 или добавьте 0x040000 к значению флага. Пример:

    verifier /flags 0x040000 /driver MyDriver.sys
    

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

    Общие сведения

    При включении параметра Имитация систематического нехватки ресурсов можно использовать параметр командной строки /faultssystematicOPTION для дальнейшего управления имитацией систематического снижения ресурсов.

    OPTION Описание

    enableboottime

    Включает внедрение ошибок при перезагрузке компьютера.

    disableboottime

    Отключает внедрение ошибок при перезагрузке компьютера (это параметр по умолчанию).

    recordboottime

    Включает внедрение ошибок в режиме "что если " при перезагрузке компьютера.

    resetboottime

    Отключает внедрение ошибок при перезагрузке компьютера и очищает список исключений стека.

    enableruntime

    Динамически включает внедрение ошибок.

    disableruntime

    Динамически отключает внедрение ошибок.

    recordruntime

    Динамически включает внедрение ошибок в режиме "что если ".

    resetruntime

    Динамически отключает внедрение ошибок и очищает список ранее неисправных стеков.

    querystatistics

    Отображает текущую статистику внедрения ошибок.

    incrementcounter

    Увеличивает значение счетчика тестового прохода, используемого для определения момента внедрения ошибки.

    getstackid COUNTER

    Извлекает указанный идентификатор внедренного стека.

    excludestack STACKID

    Исключает стек из внедрения ошибок.

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

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

Отладка проверок ошибок, вызванных систематическим моделированием нехватки ресурсов

Большинство проблем, обнаруженных при имитации систематического нехватки ресурсов, приводят к проверке ошибок. Чтобы определить причину этих ошибок в коде, средства отладки для Windows предоставляют расширение отладчика (kdexts.dll) и необходимые символы.

Запуск расширения отладчика

  • В командной строке отладчика введите следующую команду:

    !verifier 0x800
    

Это приведет к дампу сведений в отладчик, в котором отображаются стеки вызовов из последних внедренных сбоев.