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


Набор правил VirtualStorport (Storport)

Используйте эти правила, чтобы убедиться, что драйвер правильно вызывает DDIs, которые представляют особый интерес для драйверов виртуального мини-порта (VMiniport) Storport.

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

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

DoubleExFreePool

Это правило проверяет, не пытается ли драйвер дважды освободить один и тот же блок памяти пула.

DoubleKeSetEvent

Это правило проверяет, что KeSetEvent не вызывается дважды для одного и того же объекта события. Если тот же объект события передается в подпрограмму, драйвер завершает работу с ошибкой правила.

IoFreeIrp

Это правило проверяет, что IRP, выделенный IoAllocateIrp , будет освобожден IoFreeIrp или его подпрограмма завершения будет задана IoSetCompletionRoutine.

StorPortVirtualDevice

Это правило проверяет, что при выходе из подпрограммы HwStorFindAdapter для поля VirtualDevice в структуре PORT_CONFIGURATION_INFORMATION (Storport) задано значение FALSE. Правило применяется только к физическим минипортам StorPort.

StorPortVirtualDevice2

Это правило проверяет, что при выходе из подпрограммы HwStorFindAdapter для поля VirtualDevice в структуре PORT_CONFIGURATION_INFORMATION (Storport) задано значение TRUE. Правило применяется только к виртуальным минипортам StorPort.

WithinCriticalRegion

Это правило проверяет, что вызовы драйвера к определенным функциям синхронизации выполняются только при отключении обычной доставки APC ядра.

ZwRegistryCreate

Это правило проверяет, правильно ли будет использоваться дескриптор раздела реестра, созданного с помощью ZwCreateKey , другими подпрограммами ZwXxx . Подпрограмма ZwOpenKey не должна вызываться для уже открытого дескриптора. Подпрограммы ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose и ZwDeleteKey не должны вызываться для неоткрытого дескриптора. Перед возвратом дескриптор также должен быть закрыт.

ZwRegistryOpen

Это правило проверяет, правильно ли будет использоваться дескриптор раздела реестра, открытого с помощью ZwOpenKey , другими подпрограммами ZwXxx. Подпрограммы ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose и ZwDeleteKey не должны вызываться для неоткрытого дескриптора. Перед возвратом дескриптор также должен быть закрыт.

Выбор набора правил VirtualStorport

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

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

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

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

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