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


Набор правил предупреждений (WDM)

Используйте эти правила, чтобы убедиться, что драйвер может правильно обрабатывать IRP в различных контекстах и следовать рекомендациям Майкрософт.

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

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

CheckDeviceObjectFlags

Правило CheckDeviceObjectFlags указывает, что водитель автобуса должен проверка, что флаги объекта устройства для DO_POWER_PAGABLE и DO_POWER_INRUSH установлены согласованно для FDO и дочерних PDO. Это правило применяется только к водителям автобусов.

CompletionEventChecking

Правило CompletionEventChecking указывает, что драйвер не вызывает IoMarkIrpPending и KeSetEvent в подпрограмме завершения для одного и того же IRP.

DeleteDevice

Правило DeleteDevice указывает, что драйверы не должны полагаться на диспетчер ввода-вывода или диспетчер PnP, чтобы сохранить DeviceObject активным после вызова IoDeleteDevice.

MultRemoveLock

Правило MultRemoveLock проверяет, вызывается ли IoAcquireRemoveLock только с одной уникальной командой Remove Lock. Это правило предупреждений.

PagedCode

Правило PagedCode указывает, что драйвер вызывает макрос PAGED_CODE только в том случае, если он выполняется в irQL <= APC_LEVEL.

PagedCodeAtPowerTrans

Правило PagedCodeAtPowerTrans указывает, что драйвер не должен вызывать PAGED_CODE при реагировании на системные IRP_MJ_POWER Irp (IRP_MN_SET_POWER) и устройства IRP_MJ_POWER Irp (IRP_MN_SET_POWER).

ЗарезервированныеDIS

Правило ReservedDIS проверяет, не вызывают ли драйверы зарезервированные функции.

Выбор набора правил предупреждения

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

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

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

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

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