Средство проверки статических драйверов

Средство проверки статических драйверов (также известное как StaticDV или SDV) — это статическое средство проверки, которое систематически анализирует исходный код драйверов в режиме ядра Windows. SDV — это средство времени компиляции, которое может обнаруживать дефекты и проблемы проектирования в драйвере. На основе набора правил интерфейса и модели операционной системы SDV определяет, правильно ли драйвер взаимодействует с ядром операционной системы Windows.

Внимание

SDV больше не поддерживается, а SDV недоступен в выпусках Windows 24H2 WDK или EWDK. Он недоступен в WDKs более поздней сборки 26017 и не включен в windows 24H2 RTM WDK. SDV по-прежнему можно использовать, скачав Windows 11 версии 22H2 EWDK (выпущено 24 октября 2023 г.) с инструментами сборки Visual Studio 17.1.5 из скачивания комплекта драйверов Windows (WDK). Рекомендуется использовать только enterprise WDK для запуска SDV. Использование более старых версий стандартной WDK в сочетании с последними выпусками Visual Studio не рекомендуется, так как это, скорее всего, приведет к сбоям анализа.
В будущем CodeQL будет основным средством статического анализа драйверов. CodeQL предоставляет мощный язык запросов, который обрабатывает код как базу данных для запроса, что упрощает запись запросов для конкретных поведения, шаблонов и многого другого. Дополнительные сведения об использовании CodeQL см. в разделе CodeQL и проверка логотипа статических инструментов.

Установка средства проверки статических драйверов

Средство проверки статических драйверов доступно в составе комплекта драйверов Windows (WDK) как в полном интерфейсе WDK, так и в автономном корпоративном WDK. Кроме того, для запуска SDV требуются пакеты Распространяемый компонент Visual C++ для Visual Studio. См. следующие разделы:

Для версий SDV, доступных в WDK для Windows 10 версии 1809 или более ранних версий, необходимо установить пакеты Распространяемый компонент Visual C++ для Visual Studio 2012 вместо пакетов 2017.

Интеграция Visual Studio

Средство проверки статических драйверов интегрировано в Visual Studio. Вы можете выполнить статический анализ в проекте драйвера Visual Studio. Вы можете запустить, настроить и контролировать средство проверки статических драйверов из меню "Драйвер " в Visual Studio.

Документация по проверке статических драйверов

  • Известные проблемы с проверкой статических драйверов: перечислены последние известные проблемы для средства проверки статических драйверов
  • Использование средства проверки статических драйверов для поиска дефектов в драйверах: сообщает, что необходимо приступить к анализу кода драйвера в среде Visual Studio.
  • Команды средства проверки статических драйверов (MSBuild): перечисляет команды MSBuild для запуска SDV в окне командной строки Visual Studio.
  • Введение в средство проверки статических драйверов: предоставляет обзор средства статического анализа.
  • Использование средства проверки статических драйверов. Предоставляет сведения об использовании и настройке средства статического анализа.
  • Отчет о проверке статических драйверов: описывает средство просмотра, отображающее подробную трассировку анализа статического кода.
  • Правила проверки статических драйверов: правила определяют требования для правильного взаимодействия между моделью драйвера и интерфейсом ядра операционной системы.
  • Справочник по проверке статических драйверов. Предоставляет справочные сведения о типах ролей функций, файлах конфигурации SDV, сообщениях об ошибках и предупреждениях.

Поиск ошибок в коде драйвера Windows

Корпорация Майкрософт использует SDV для тестирования драйверов в режиме ядра, включенных в операционную систему Microsoft Windows, и для тестирования примеров драйверов в WDK. С помощью правил соответствия DDI для определенных моделей драйверов SDV может проверить правильное поведение драйвера. Например, SDV может проверить, что драйвер:

  • Вызывает функции по правильному IRQL
  • Получение и освобождение блокировок в правильной последовательности
  • Правильно использует функции, обрабатывающие пакеты запросов ввода-вывода (IRP)

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

Дополнительные ресурсы

Дополнительные сведения о драйверах, которые могут проверить SDV, см. в разделе "Поддерживаемые драйверы"

Дополнительные сведения и советы по использованию средства проверки статических драйверов см. в следующих статьях: