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


Прочий набор правил (WDM)

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

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

Тема Описание

AddDevice

Правило AddDevice указывает, что подпрограмма AddDevice драйвера вызывает IoAttachDeviceToDeviceStack только после вызова IoCreateDevice.

DanglingDeviceObjectReference

Правило DanglingDeviceObjectReference указывает, что драйвер вызывает ObDereferenceObject с тем же указателем объекта устройства, который возвращает IoGetAttachedDeviceReference.

PnpSameDeviceObject

Правило PnpSameDeviceObject указывает, что драйвер вызывает IoAttachDeviceToDeviceStack указателем на допустимый целевой объект устройства.

TargetRelationNeedsRef

Правило TargetRelationNeedsRef указывает, что при обработке запроса TargetDeviceRelation подпрограмма DispatchPnP драйвера вызывает одну из следующих функций, чтобы ссылаться на PDO дочернего устройства:

UnSafeAllocatePool

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

ZwRegistryCreate

Правило ZwRegistryCreate указывает, что после вызова ZwCreateKey драйвер может вызывать следующие функции реестра только при наличии открытого дескриптора к разделу реестра (то есть перед вызовами ZwClose или ZwDeleteKey , чтобы закрыть или удалить дескриптор к разделу реестра):

ZwRegistryOpen

Правило ZwRegistryOpen указывает, что после вызова ZwOpenKey драйвер вызывает следующие функции реестра только при сохранении открытого дескриптора к разделу реестра (то есть перед вызовом ZwClose или ZwDeleteKey):

Чтобы выбрать набор правил "Прочие"

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

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

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

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

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