Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
La característica comprobación SCSI del comprobador de controladores supervisa la interacción entre un controlador de miniporte SCSI y el controlador de puerto. Si el controlador de miniporte usa incorrectamente una rutina, responde incorrectamente a una solicitud del controlador de puerto o tarda un tiempo excesivo en responder a una solicitud, se emite una verificación de errores.
Esta opción Del comprobador de controladores solo está disponible en Windows XP y versiones posteriores.
Infracciones detectadas por la comprobación SCSI
La opción Comprobación SCSI puede detectar varios usos indebidos de rutinas SCSI. También es posible deshabilitar individualmente algunas de estas comprobaciones.
Cuando un controlador de miniporte SCSI confirma una de las siguientes infracciones, el comprobador de controladores emitirá la comprobación de errores 0xF1.
El controlador de miniporte pasa un argumento incorrecto a ScsiPortInitialize.
El controlador de miniport llama a ScsiPortStallExecution y especifica un retraso superior a 0,1 segundos, lo que detiene el procesador durante un período excesivo de tiempo.
El controlador de puerto llama a una rutina de controlador de minipuerto y el controlador de miniporte tarda más de 0,5 segundos en ejecutarlo. (La rutina FindAdapter está exenta y a la rutina HwInitialize se le permiten 5 segundos).
El controlador de miniport completa una solicitud más de una vez.
El controlador de miniporta completa una rutina con un estado SRB no válido.
El controlador de miniport llama a ScsiPortNotification para solicitar NextLuRequest, pero una solicitud sin etiqueta sigue activa.
El controlador de miniport pasa una dirección virtual no válida a ScsiPortGetPhysicalAddress. (Esto normalmente significa que la dirección proporcionada no se asigna al área de búfer común).
El período de suspensión del restablecimiento de bus finaliza, pero el controlador de miniporte todavía tiene solicitudes pendientes.
Consulte Comprobación de errores 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION) para obtener una lista completa de los parámetros de comprobación de errores.
Además de estas infracciones, la verificación SCSI también supervisa el acceso a memoria del controlador de miniport para detectar un uso incorrecto. Dos infracciones comunes de memoria realizadas por los controladores de miniporte son acceder a una extensión SRB una vez completada una solicitud, y acceder al DataBuffer de un SRB cuando el controlador de miniporte no ha especificado que MapBuffers.
Las infracciones de memoria de este tipo suelen dar lugar a la emisión de la verificación de errores 0xD1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL).
Activación de esta opción
El procedimiento para activar la opción comprobación SCSI es diferente de los procedimientos para activar otras opciones del comprobador de controladores.
Para activar la comprobación SCSI
Con el Administrador del comprobador de controladores o la línea de comandos Verifier.exe, inicie una comprobación del controlador de miniport. Dado que la comprobación SCSI no estará disponible como opción, debe seleccionar al menos otra opción del Verificador de controladores. Consulte Selección de opciones del comprobador de controladores y Selección de controladores que se van a comprobar para obtener más información.
Abra el Registro mediante regedit.exe. En la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ScsiPort , agregue una subclave denominada Comprobador. Dentro de esa clave, agregue una entrada de REG_DWORD denominada VerifyLevel. El valor asignado a esta entrada determinará qué pruebas de comprobación SCSI estarán activas. El valor 0x1 proporcionará la comprobación máxima.
Reinicia el ordenador.
Si el valor VerifyLevel no existe o es igual a 0xFFFFFFFF, se deshabilitará la comprobación SCSI.
Los bits individuales del valor VerifyLevel se pueden usar para controlar exactamente qué pruebas se realizarán. Bit cero (0x1) habilita determinadas pruebas; bits 28, 29, 30 y 31 deshabilitan determinadas pruebas. Por lo tanto, se puede obtener la comprobación máxima mediante el valor 0x00000001.
Los efectos de cada bit son los siguientes:
| bit | Importancia | Efecto |
|---|---|---|
0 |
0x1 |
El Comprobador de controladores supervisará el acceso a la memoria del controlador de miniporte y comprobará el uso incorrecto de los búferes de memoria. |
28 |
0x10000000 |
El Comprobador de controladores no emitirá una comprobación de errores cuando la rutina HwAdapterControl tarde más de 0,5 segundos en completarse. |
29 |
0x20000000 |
El Comprobador de controladores no realizará una verificación de errores cuando finalice un periodo de retención tras el restablecimiento y queden solicitudes pendientes en una unidad lógica. |
30 |
0x40000000 |
El comprobador de controladores no emitirá una comprobación de errores cuando el controlador de miniporta llame a ScsiPortNotification con NextLuRequest mientras una solicitud sin etiqueta todavía está activa. |
31 |
0x80000000 |
El Comprobador de controladores no emitirá una comprobación de errores cuando la rutina HwInitialize tarde más de 5 segundos en completarse. |
En la mayoría de los casos, la configuración recomendada es 0xD0000001. Esto habilita todas las pruebas del comprobador SCSI , excepto el límite de tiempo en HwAdapterControl, el límite de tiempo en HwInitialize y la prohibición de varias solicitudes a una unidad lógica. Estas tres pruebas suelen ser demasiado estrictas.
Si se adjunta un depurador de kernel, es posible cambiar el nivel de comprobación SCSI después del ciclo de arranque. Para ello, use el comando del depurador:
kd> ed scsiport!SpVrfyLevel Level
Este comando permite establecer un nuevo valor para Level. Con este método, puede cambiar los bits altos (0x10000000 a través de 0x8000000) en cualquier momento. Sin embargo, si desea cambiar el bit bajo (0x1), debe hacerlo durante el proceso de arranque (en el punto de interrupción inicial del depurador del kernel).
Del mismo modo, si desea desactivar completamente la comprobación SCSI, debe establecer Level en 0xFFFFFFFF en el punto de interrupción inicial.
Nota El valor 0xF0000000 deshabilitará todas las pruebas, pero los módulos de comprobación SCSI se seguirán cargando. Utilice este valor si desea deshabilitar la comprobación, pero tiene la intención de habilitar las pruebas de alto bit en el futuro. Por otro lado, el valor 0xFFFFFFFF impide que los módulos se carguen completamente; si este valor se usa durante el arranque, no será posible habilitar la comprobación SCSI sin reiniciar.
Activación sin reiniciar
En general, no se puede activar ni desactivar la comprobación SCSI sin reiniciar ("reiniciar") el equipo en cualquier sistema operativo Windows. El controlador ScsiPort.sys lee la entrada del Registro VerifyLevel solo cuando se carga, que suele ser durante el arranque. Sin embargo, si el controlador de ScsiPort.sys no se carga al agregar la entrada del Registro, o si se descarga y se vuelve a cargar, puede habilitar la comprobación SCSI en Windows XP y versiones posteriores de Windows sin reiniciar el equipo.