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


Проверка логотипа статических инструментов

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

Сведения о тесте

   
Спецификации
  • Device.DevFund.StaticTools.StaticAnalysisForDrivers
Платформы
  • Клиент Windows 11 (x64)
  • Windows 11, клиент (ARM64)
  • Windows Server
Поддерживаемые выпуски
  • Клиент Windows 11 (x64)
  • Windows 11, клиент (ARM64)
  • Windows Server
Ожидаемое время выполнения (в минутах) 5
Категория Разработка
Время ожидания (в минутах) 0
Требуется перезагрузка false
Требуется специальная конфигурация false
Тип automatic

Статический анализ для сертификации клиентов Windows

CodeQL — это мощная статическое средство анализа для защиты программного обеспечения. Сочетание обширного набора высокозначных запросов безопасности и надежной платформы делает его бесценным инструментом для защиты кода сторонних драйверов.

В попытке повысить уровень безопасности экосистемы Windows корпорация Майкрософт добавила это требование в программу совместимости оборудования Windows, которая утверждает, что все отправки драйверов должны использовать подсистему CodeQL в исходном коде драйвера и исправить все запросы, которые считаются "Must-Fix".

Это требование применяется тестом логотипа статических инструментов.

Дополнительные сведения о том, как скачать и запустить CodeQL в исходном коде драйвера, см. в codeQL и в тестовом коде статических инструментов . После этой страницы вместе с разделом "Создание КодаQL и DVL" ниже убедитесь, что проверка логотипа статических инструментов правильно использует результаты выполнения CodeQL в исходном коде драйвера в рамках теста логотипа статических инструментов.

К каким типам драйверов применяются кодQL и тест на логотип статических средств?

В настоящее время для проверки логотипа статических инструментов требуется запустить CodeQL и набор запросов "Must-Fix" для всех драйверов в режиме ядра, за исключением графических драйверов. Обратите внимание, что выполнение CodeQL на графических драйверах настоятельно рекомендуется, хотя в настоящее время оно не требуется. Некоторые запросы также могут найти полезные дефекты в компонентах пользовательского режима.

Мы ожидаем, что расширение теста и его запросов требует результатов для графических драйверов, драйверов пользовательского режима и компонентов драйверов и других компонентов пакета драйверов в будущем. Если вы столкнулись с непредвиденным поведением или ложными срабатываниями, работающими под управлением CodeQL на графических драйверах или драйверах пользовательского режима, отправьте проблему в репозитории Windows-Driver-Developer-Supplemental-Tools.

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

Новые возможности статического анализа для сертификации Windows Server

Для сертификации Windows Server 2025 CodeQL станет обязательным инструментом для тестирования логотипов статических инструментов, это означает, что все отправки драйверов должны быть по крайней мере передавать все правила "должны исправить", чтобы быть приемлемыми для WHCP. Однако если вы сертифицируются для Windows Server 2022 и ниже; Можно использовать ЦС, SDV и CodeQL. Используйте сборки WDK с соответствующими версиями выпуска ОС.

Сведения о скачивании различных версий WDK см. в разделе "Скачать комплект драйверов Windows(WDK)". Присоединитесь к программе предварительной оценки Windows, чтобы скачать сборки WDK Insider Preview (https://aka.ms/wipwdk).

Создание журнала проверки кода и драйвера (DVL)

Корпорация Майкрософт применяет требование выполнения запросов CodeQL с помощью проверки логотипа статических средств. Для сбора результатов из различных статических анализов, выполняемых в исходном коде драйвера, используется журнал проверки драйвера (DVL ). Затем этот DVL анализируется в рамках проверки логотипа статических инструментов с помощью теста HLK.

Результаты CodeQL будут соответствовать той же модели использования DVL, чтобы показать, что драйвер, сертифицированный, выполнил соответствующие запросы CodeQL для передачи теста HLK для сертификации.

Поместите SARIF-файл в тот же каталог, что и файл .vcxproj, для которого создается DVL. Точное имя не имеет значения, пока файл заканчивается ".sarif".

Дополнительная документация

Тесты в этой области функций могут содержать дополнительную документацию, включая предварительные требования, настройку и устранение неполадок, которые можно найти в следующих разделах:

Выполнение теста

Перед выполнением теста необходимо создать журнал проверки драйвера (DVL), выполнив следующие действия.

  1. Запустите CodeQL, средство проверки статических драйверов и средство анализа кода при необходимости в исходном коде драйвера.

  2. Запустите программу, которая создает DVL-файл. Дополнительные сведения о создании файла журнала проверки драйвера для включения в отправку см. в разделе "Создание журнала проверки драйвера".

  3. Скопируйте DVL-файл с компьютера, который использовался для создания DVL-файла на тестовый компьютер, который используется при запуске теста логотипа статических средств. Скопируйте файл в каталог %systemdrive%\DVL на тестовом компьютере. Перед копированием нового журнала проверки драйвера необходимо удалить содержимое каталога на тестовом компьютере.

  4. Запустите тест на логотип статических средств. Если тест не заполняется в HLK, убедитесь, что драйвер подписан (см. ниже). Кроме того, если вы не отправляете файл .sys в составе пакета, ожидается, что тест не заполняется.

Примечание.

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

Чтобы устранить эту проблему в Windows 24H2, мы переехали в модель, в которой проверка проверка подпись драйвера для устройства. При этом изменении драйверы windows в папке "Входящие" не будут помечены тестом. Кроме того, чтобы разблокировать разработчиков, выполняющих тестирование HLK на устройствах другого стороннего производителя, тест также позволит избежать перетаскивания результатов для драйверов, подписанных WHCP.

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

Примечание.

Для проверки логотипа статических средств требуется только DVL-файл, чтобы показать, что был запущен код QL. Тест не требует передачи всех правил. Кроме того, это задание должно выполняться на сервере с рабочим столом. Если тест HLK завершается сбоем с использованием серверной ядра (с сообщением об ошибке "не удалось найти RoMetadata.dll"), решением является запуск на сервере с рабочим столом, а затем слияние пакета с пакетом, содержащим результаты из server Core. Сведения о слиянии пакетов см. здесь: /windows-hardware/test/hlk/user/merge-packages.

Устранение неполадок

Общие сведения об устранении неполадок тестов HLK см. в разделе "Устранение неполадок тестов Windows HLK".

Дополнительные сведения

Синтаксис команд

Параметр команды Description

TE.exe /inproc /enablewttlogging /appendwttlogging Devfund_DvlTest.dll /p:WDKClass=[WDKClass] /p:DeviceClass=[DeviceClass] /p:QueryDriverNames=[QueryDriverNames]

Выполняет тест.

Примечание.

Для справки командной строки для этого тестового двоичного файла введите /?.

Список файлов

Файлы Расположение

Devfund_DvlTest.dll

<testbinroot\OSBinRoot>

Microsoft.StaticToolsLogo.ObjectModel.dll

<testbinroot\OSBinRoot>

TE.exe

<testbinroot\OSBinRoot>

Параметры

Наименование параметра Описание параметра
WDKClass Класс устройства
DeviceClass Параметр класса устройства
QueryDriverNames Ожидаемые имена драйверов.