Набор правил SrbProcessing (Storport)
Используйте эти правила, чтобы убедиться, что драйвер правильно обрабатывает запросы SRB.
В этом разделе
Раздел | Описание |
---|---|
Это правило проверяет, находится ли этот мини-порт в полно дуплексном режиме. Любой драйвер, созданный в соответствии с моделью Минипорта StorPort, должен находиться в режиме полного дуплексного режима. При переносе существующего драйвера SCSI в StorPort следует использовать только половину дуплекса . |
|
Это правило проверяет, что ожидания или выделение данных не выполняются внутри StartIo. |
|
Это правило проверяет, что реализации драйвера HwStorFindAdapter и VirtualHwStorFindAdapter возвращают допустимое состояние. Допустимое состояние является одним из следующих: SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG или SP_RETURN_NOT_FOUND. |
|
Это правило проверяет, что минипорт не должен пытаться вызвать StorPortFreePool в освобожденном буфере. |
|
Это правило проверяет, что минипорт не должен пытаться вызвать StorPortAllocatePool в выделенном буфере без его первого размещения. |
|
Это правило проверяет, что если подпрограмма StorPort Miniport StorPortBuildIo возвращает ЗНАЧЕНИЕ FALSE, SRB, который не передается в StartIo. (В таких случаях драйвер минипорта должен завершить работу SRB путем вызова StorPortNotification с типом уведомления RequestComplete из StorPortBuildIo или в другом месте). |
|
Это правило проверяет, что вызовы StorPortCompleteRequest не выполняются мини-портом. Использование StorPortCompleteRequest не рекомендуется; мини-порты должны вместо этого вызывать StorPortNotification с уведомлениемType = RequestComplete. |
|
Это правило проверяет, что StorPortEnablePassiveInitialization не вызывается из любой подпрограммы драйвера miniport StorPort, отличной от HwInitialize. |
|
Подпрограмма HwStorFindAdapter должна задать поля MaximumTransferLength и NumberOfPhysicalBreaks в структуре PORT_CONFIGURATION_INFORMATION. По умолчанию значение обоих полей SP_UNINITIALIZED_VALUE. Если одно из этих полей по-прежнему имеет значение SP_UNINITIALIZED_VALUE при выходе из FindAdapter, драйвер завершает работу с правилом. |
|
Это правило проверяет, что вызовы StorPortNotification используют только разрешенные (например, документированные) типы уведомлений. |
|
StorPortEnablePassiveInitialization не следует вызывать в точке входа HW Initialization для драйверов Storport, если точку входа HW Initialization можно вызвать непосредственно из точки входа адаптера HW. |
|
Это правило проверяет, что параметр PerfConfigData , передаваемый в StorPortInitializePerfOpts , не имеет значения NULL. |
|
Ожидания или выделение данных никогда не должны выполняться в подпрограмме StartIo минипорта. Драйвер завершается ошибкой правила, если он вызывает StorPortStallExecution или другую функцию, которая включает в себя операции, требующие много времени. Так как StartIo синхронизирован, эти вызовы в основном должны выполняться в BuildIo. |
|
Подпрограмма HW_TIMER должна быть определена, если выполняется вызов StorPortNotification(RequestTimerCall). |
Выбор набора правил SrbProcessing
Выберите проект драйвера (.vcxProj) в Microsoft Visual Studio. В меню "Драйвер" нажмите кнопку "Запустить средство проверки статического драйвера...".
Перейдите на вкладку "Правила ". В разделе "Наборы правил" выберите SrbProcessing.
Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите SrbProcessing.sdv с параметром /проверка. Например:
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Дополнительные сведения см. в статье "Использование средства проверки статических драйверов для поиска дефектов в драйверах и командах средства проверки статических драйверов( MSBuild)".