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

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

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

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

SpDuplex

Это правило проверяет, находится ли этот мини-порт в полно дуплексном режиме. Любой драйвер, созданный в соответствии с моделью Минипорта StorPort, должен находиться в режиме полного дуплексного режима. При переносе существующего драйвера SCSI в StorPort следует использовать только половину дуплекса.

SpNoWait

Это правило проверяет, что ожидания или выделение данных не выполняются внутри StartIo.

SpReturnValue

Это правило проверяет, что реализации драйвера HwStorFindAdapter и VirtualHwStorFindAdapter возвращают допустимое состояние. Допустимое состояние является одним из следующих: SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG или SP_RETURN_NOT_FOUND.

StorPortAllocatePool

Это правило проверяет, что минипорт не должен пытаться вызвать StorPortFreePool в освобожденном буфере.

StorPortAllocatePool2

Это правило проверяет, что минипорт не должен пытаться вызвать StorPortAllocatePool в выделенном буфере без его первого размещения.

StorPortBuildIo

Это правило проверяет, что если подпрограмма StorPortBuildIo минипорта StorPort возвращает FALSE, то соответствующий SRB не передается в StartIo. (В таких случаях драйвер минипорта должен завершить работу SRB путем вызова StorPortNotification с типом уведомления RequestComplete из StorPortBuildIo или другого места).

StorPortCompleteRequest

Это правило проверяет, что вызовы StorPortCompleteRequest не выполняются мини-портом. Использование StorPortCompleteRequest не рекомендуется; минипорты должны вместо этого вызывать StorPortNotification с уведомлениемType = RequestComplete.

StorPortEnablePassive

Это правило проверяет, что StorPortEnablePassiveInitialization не вызывается из любой подпрограммы драйвера miniport StorPort, отличной от HwInitialize.

StorPortFindAdapter

Подпрограмма HwStorFindAdapter должна задать поля MaximumTransferLength и NumberOfPhysicalBreaks в структуре PORT_CONFIGURATION_INFORMATION . По умолчанию значение обоих полей SP_UNINITIALIZED_VALUE. Если одно из этих полей по-прежнему имеет значение SP_UNINITIALIZED_VALUE при выходе из FindAdapter, драйвер завершает работу с правилом.

StorPortNotification2

Это правило проверяет, что вызовы StorPortNotification используют только разрешенные (например, документированные) типы уведомлений.

StorPortPassiveFromHwInit

StorPortEnablePassiveInitialization не следует вызывать в точке входа HW Initialization для драйверов Storport, если точку входа HW Initialization можно вызвать непосредственно из точки входа адаптера HW.

StorPortPerfOpts

Это правило проверяет, что параметр PerfConfigData , передаваемый в StorPortInitializePerfOpts , не имеет значения NULL.

StorPortStartIo

Ожидания или выделение данных никогда не должны выполняться в подпрограмме StartIo минипорта. Драйвер нарушает правило, если вызывает StorPortStallExecution или другую функцию, которая содержит операции, требующие много времени. Так как StartIo синхронизирован, эти вызовы в основном должны выполняться в BuildIo.

StorPortTimer

Подпрограмма HW_TIMER должна быть определена, если выполняется вызов StorPortNotification(RequestTimerCall).

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

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

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

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

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

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