Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте эти правила, чтобы убедиться, что драйвер правильно обрабатывает запросы SRB.
В этом разделе
| Тема | Описание |
|---|---|
Это правило проверяет, находится ли этот мини-порт в полно дуплексном режиме. Любой драйвер, созданный в соответствии с моделью Минипорта StorPort, должен находиться в режиме полного дуплексного режима. При переносе существующего драйвера SCSI в StorPort следует использовать только половину дуплекса. |
|
Это правило проверяет, что ожидания или выделение данных не выполняются внутри StartIo. |
|
Это правило проверяет, что реализации драйвера HwStorFindAdapter и VirtualHwStorFindAdapter возвращают допустимое состояние. Допустимое состояние является одним из следующих: SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG или SP_RETURN_NOT_FOUND. |
|
Это правило проверяет, что минипорт не должен пытаться вызвать StorPortFreePool в освобожденном буфере. |
|
Это правило проверяет, что минипорт не должен пытаться вызвать StorPortAllocatePool в выделенном буфере без его первого размещения. |
|
Это правило проверяет, что если подпрограмма StorPortBuildIo минипорта StorPort возвращает 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 с параметром /check . Рассмотрим пример.
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32Дополнительные сведения см. в статье Использование средства проверки статических драйверов для поиска дефектов в драйверах и команды средства проверки статических драйверов (MSBuild).