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


Набор правил 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

Это правило проверяет, что если подпрограмма StorPort Miniport StorPortBuildIo возвращает ЗНАЧЕНИЕ 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 с параметром /проверка. Например:

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

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