Проверка SCSI

Функция проверки 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.

Нарушения памяти такого рода обычно приводят к 0xD1 проверки ошибок (DRIVER_IRQL_NOT_LESS_OR_EQUAL).

Активация этого параметра

Процедура активации параметра проверки SCSI отличается от процедур активации других параметров средства проверки драйверов.

Активация проверки SCSI

  1. С помощью диспетчера проверки драйверов или командной строки Verifier.exe запустите проверку драйвера мини-порта. Так как проверка SCSI не будет доступна в качестве параметра, необходимо выбрать хотя бы один другой вариант средства проверки драйверов. Дополнительные сведения см. в разделах Выбор параметров средства проверки драйверов и Выбор проверяемых драйверов .

  2. Откройте реестр с помощью regedit.exe. В разделеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ScsiPort добавьте подраздел с именем Verifier. В этом разделе добавьте запись REG_DWORD с именем VerifyLevel. Значение, присвоенное этой записи, определяет, какие тесты проверки SCSI будут активны. Значение 0x1 обеспечит максимальную проверку.

  3. Перезагрузите компьютер.

Если значение VerifyLevel не существует или равно 0xFFFFFFFF, проверка SCSI будет отключена.

Отдельные биты в значении VerifyLevel можно использовать для точного управления тем, какие тесты будут выполняться. Бит ноль (0x1) позволяет выполнять определенные тесты; Биты 28, 29, 30 и 31 отключают определенные тесты. Таким образом, максимальную проверку можно получить, используя значение 0x00000001.

Результат каждого бита выглядит следующим образом:

bit Значение Действие

0

0x1

Средство проверки драйверов будет отслеживать доступ драйвера минипорта к памяти и проверка на неправильное использование буферов памяти.

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 без перезагрузки компьютера.