Набор правил предупреждений (WDM)
Используйте эти правила, чтобы убедиться, что драйвер может правильно обрабатывать IRP в различных контекстах и следовать рекомендациям Майкрософт.
В этом разделе
Раздел | Описание |
---|---|
Правило CheckDeviceObjectFlags указывает, что водитель автобуса должен проверка, что флаги объекта устройства для DO_POWER_PAGABLE и DO_POWER_INRUSH установлены согласованно для FDO и дочерних PDO. Это правило применяется только к водителям автобусов. |
|
Правило CompletionEventChecking указывает, что драйвер не вызывает IoMarkIrpPending и KeSetEvent в подпрограмме завершения для одного и того же IRP. |
|
Правило DeleteDevice указывает, что драйверы не должны полагаться на диспетчер ввода-вывода или диспетчер PnP, чтобы сохранить DeviceObject активным после вызова IoDeleteDevice. |
|
Правило MultRemoveLock проверяет, вызывается ли IoAcquireRemoveLock только с одной уникальной командой Remove Lock. Это правило предупреждений. |
|
Правило PagedCode указывает, что драйвер вызывает макрос PAGED_CODE только в том случае, если он выполняется в irQL <= APC_LEVEL. |
|
Правило PagedCodeAtPowerTrans указывает, что драйвер не должен вызывать PAGED_CODE при реагировании на системные IRP_MJ_POWER Irp (IRP_MN_SET_POWER) и устройства IRP_MJ_POWER Irp (IRP_MN_SET_POWER). |
|
Правило ReservedDIS проверяет, не вызывают ли драйверы зарезервированные функции. |
Выбор набора правил предупреждения
Выберите проект драйвера (VCXProj) в Microsoft Visual Studio. В меню Драйвер выберите Запуск средства проверки статических драйверов....
Перейдите на вкладку Правила . В разделе Наборы правил выберите Предупреждение.
Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите Warning.sdv с параметром /проверка. Пример:
msbuild /t:sdv /p:Inputs="/check:Warning.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Дополнительные сведения см. в разделах Использование статического средства проверки драйверов для поиска дефектов в драйверах и Команд средства проверки статических драйверов (MSBuild).