Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция проверки SCSI средства проверки драйверов отслеживает взаимодействие между драйвером минипорта SCSI и драйвером порта. Если минипорт-драйвер неправильно использует подпрограмму, некорректно отвечает на запрос от драйвера порта или требуется чрезмерно много времени для ответа на запрос, инициируется проверка на наличие ошибок.
Этот параметр средства проверки драйверов доступен только в Windows XP и более поздних версиях.
Нарушения, обнаруженные проверкой SCSI
Параметр проверки SCSI может обнаружить несколько неправильно используемых процедур SCSI. Кроме того, можно отключить некоторые из этих проверок по отдельности.
Когда драйвер минипорта SCSI фиксирует одно из следующих нарушений, средство проверки драйверов выдает проверку ошибок 0xF1.
Минипорт-драйвер передает недопустимый аргумент ScsiPortInitialize.
Драйвер минипорта вызывает ScsiPortStallExecution и задает задержку более 0,1 секунды, останавливая процессор на чрезмерно длительное время.
Драйвер порта вызывает подпрограмму драйвера минипорта, и драйвер минипорта выполняет ее более 0,5 секунды. (Подпрограмма FindAdapter исключена, а подпрограмма HwInitialize допускается 5 секунд.)
Минипорт-драйвер завершает запрос несколько раз.
Минипорт-драйвер завершает подпрограмму с недопустимым состоянием SRB.
Драйвер минипорта вызывает SCSIPortNotification , чтобы запросить NextLuRequest, но неактивный запрос по-прежнему активен.
Драйвер минипорта передает недопустимый виртуальный адрес SCSIPortGetPhysicalAddress. (Обычно это означает, что указанный адрес не соответствует общей буферной области.)
Период удержания сброса шины заканчивается, но у драйвера минипорта по-прежнему остаются невыполненные запросы.
Полный список параметров проверки ошибок см. в разделе проверки ошибок 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION).
Помимо этих нарушений, проверка SCSI также отслеживает доступ к памяти драйвера минипорта в случае неправильного использования. Два распространённых нарушения памяти, которые допускают драйверы минипорта, — это обращение к расширению SRB после завершения запроса и обращение к DataBuffer SRB, когда драйверы минипорта не указали MapBuffers.
Нарушения памяти такого рода обычно приводят к вызову Bug Check 0xD1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL).
Активация этого параметра
Процедура активации параметра проверки SCSI отличается от процедур активации других параметров проверки драйверов.
Активация проверки SCSI
С помощью диспетчера проверки драйверов или командной строки Verifier.exe запустите проверку минипорта драйвера. Так как проверка SCSI не будет доступна в качестве параметра, необходимо выбрать по крайней мере один другой параметр проверки драйвера. Дополнительные сведения см. в разделе "Выбор параметров проверки драйверов " и "Выбор драйверов " для проверки.
Откройте реестр с помощью regedit.exe. В ключе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ScsiPort добавьте вложенный ключ с именем Verifier. В этом ключе добавьте запись REG_DWORD с именем VerifyLevel. Значение, назначенное этой записи, определяет, какие тесты проверки SCSI будут активными. Значение 0x1 даст максимальную проверку.
Перезагрузите компьютер.
Если значение VerifyLevel не существует или равно 0xFFFFFFFF, проверка SCSI будет отключена.
Отдельные биты в значении VerifyLevel можно использовать для управления точной выполнением тестов. Бит ноль (0x1) включает определенные тесты; биты 28, 29, 30 и 31 отключают определенные тесты. Поэтому максимальную проверку можно получить с помощью значения 0x00000001.
Эффекты каждого бита приведены следующим образом:
| Бит | Ценность | Эффект |
|---|---|---|
0 |
0x1 |
Средство проверки драйверов отслеживает доступ к памяти драйвера miniport и проверяет неправильное использование буферов памяти. |
28 |
0x10000000 |
Средство проверки драйверов не выдает сбой, когда подпрограмма HwAdapterControl занимает более 0,5 секунды. |
29 |
0x20000000 |
Средство проверки драйверов не будет выдавать сообщение о сбое, когда период удержания сброса заканчивается, если в логической единице по-прежнему остаются невыполненные запросы. |
30 |
0x40000000 |
Средство проверки драйверов не выполняет проверку ошибок, когда драйвер минипорта вызывает ScsiPortNotification с параметром NextLuRequest, пока неклассифицированный запрос все еще активен. |
31 |
0x80000000 |
Средство проверки драйверов не выдает проверку ошибок, когда подпрограмма HwInitialize занимает более 5 секунд. |
В большинстве случаев рекомендуемый параметр 0xD0000001. Это позволяет выполнять все тесты проверки SCSI , за исключением ограничения времени на HwAdapterControl, ограничение времени на HwInitialize и запрет на несколько запросов к логическому блоку. Эти три теста часто слишком жесткие.
Если отладчик ядра подключен, можно изменить уровень проверки SCSI после цикла загрузки. Для этого используйте команду отладчика:
kd> ed scsiport!SpVrfyLevel Level
Эта команда позволяет задать новое значение для level. С помощью этого метода можно в любое время изменить высокие биты (0x10000000 через 0x8000000). Однако если вы хотите изменить низкий бит (0x1), необходимо сделать это во время загрузки (в начальной точке останова отладчика ядра).
Аналогичным образом, если вы хотите полностью отключить проверку SCSI, необходимо задать уровень 0xFFFFFFFF в начальной точке останова.
Заметка Значение 0xF0000000 отключит все тесты, но модули проверки SCSI по-прежнему будут загружены. Используйте это значение, если вы хотите отключить проверку, но планируете включить высокоскоростные тесты позже. С другой стороны, значение 0xFFFFFFFF предотвращает загрузку модулей полностью; Если это значение используется во время загрузки, невозможно включить проверку SCSI без перезагрузки.
Активация без перезагрузки
Как правило, невозможно активировать или отключить проверку SCSI без перезапуска (перезагрузки) компьютера в любой операционной системе Windows. Драйвер ScsiPort.sys считывает запись реестра VerifyLevel только при загрузке, которая обычно выполняется во время загрузки. Однако если драйвер ScsiPort.sys не загружается при добавлении записи реестра или если он выгружается и перезагружается, можно включить проверку SCSI в Windows XP и более поздних версиях Windows, не перезагрузив компьютер.