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


Набор правил использования DDI (WDM)

Используйте эти правила, чтобы убедиться, что драйвер правильно использует WDM DIS.

В этом разделе

Раздел Описание

DebugBreakUsage

Правило DebugBreakUsage указывает, что драйвер не должен вызывать DbgBreakPoint или DbgBreakPointWithStatus. Это правило применяется только при создании не отладочной версии драйвера.

DoubleFetch

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

NullCheck

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

  • Существует назначение NULL, которое разыменовывается позже.
  • Существует глобальный параметр или параметр процедуры в драйвере, который может иметь значение NULL, который позже разыменовывается, и в драйвере есть явное проверка, предполагающее, что начальное значение указателя может иметь значение NULL.

При нарушениях правил NullCheck наиболее релевантные операторы кода выделяются в области дерева трассировки. Дополнительные сведения о работе с выходными данными отчета см. в разделах Отчет о средстве проверки статических драйверов и Основные сведения о средстве просмотра трассировки.

SafeStrings

Правило SafeStrings указывает, что драйвер вызывает только те функции управления строками, которые защищают систему от непреднамеренного или вредоносного вторжения. Эти безопасные строковые функции для драйверов определены в ntstrsafe.h.

УстаревшиеDIs

Правило ObsoleteDDIs указывает, что драйверы не должны вызывать FsRtlPrivateLock. Эта функция является устаревшей. Вместо этого используйте FsRtlFastLock .

Выбор набора правил использования DDI

  1. Выберите проект драйвера (VCXProj) в Microsoft Visual Studio. В меню Драйвер выберите Запуск средства проверки статических драйверов....

  2. Перейдите на вкладку Правила . В разделе Наборы правил выберите DDIUsage.

    Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите DDIUsage.sdv с параметром /проверка. Пример:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Дополнительные сведения см. в разделах Использование статического средства проверки драйверов для поиска дефектов в драйверах и Команд средства проверки статических драйверов (MSBuild).