Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O recurso de Verificação SCSI do Verificador de Driver monitora a interação entre um driver de miniporto SCSI e o driver de porta. Se o driver de miniporto usar indevidamente uma rotina, responder incorretamente a uma solicitação do driver de porta ou levar um tempo excessivo para responder a uma solicitação, uma verificação de bug será emitida.
Essa opção Verificador de Driver só está disponível no Windows XP e posterior.
Violações detectadas pela verificação SCSI
A opção verificação SCSI pode detectar vários usos indevidos de rotinas SCSI. Também é possível desabilitar individualmente certas dessas verificações.
Quando um driver de miniporto SCSI comete uma das seguintes violações, o Verificador de Driver emitirá bug check 0xF1.
O driver de miniporto passa um argumento incorreto para ScsiPortInitialize.
O driver miniport chama ScsiPortStallExecution e especifica um atraso maior que 0,1 segundo, interrompendo o processador por um tempo excessivo.
O driver de porta chama uma rotina de driver de miniporto e o driver de miniporto leva mais de 0,5 segundo para executá-lo. (A rotina FindAdapter é isenta e a rotina HwInitialize tem permissão de 5 segundos.)
O driver miniport completa uma solicitação mais de uma vez.
O driver de miniporto conclui uma rotina com um status SRB inválido.
O driver de miniporto chama ScsiPortNotification para solicitar NextLuRequest, mas uma solicitação não registrada ainda está ativa.
O driver de miniporto passa um endereço virtual inválido para ScsiPortGetPhysicalAddress. (Isso geralmente significa que o endereço fornecido não é mapeado para a área de buffer comum.)
O período de retenção de redefinição de ônibus termina, mas o motorista do miniporto ainda tem solicitações pendentes.
Consulte Bug Check 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION) para obter uma lista completa dos parâmetros do Bug Check.
Além dessas violações, a Verificação SCSI também monitora o acesso à memória do driver de miniporto para uso inadequado. Duas violações comuns de memória feitas por drivers de miniporto são acessar uma extensão SRB após a conclusão de uma solicitação e acessar o DataBuffer de um SRB quando o driver de miniporto não especificou MapBuffers.
As violações de memória desse tipo geralmente resultarão na emissão de Verificação de Erro 0xD1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL).
Ativando essa opção
O procedimento para ativar a opção de Verificação SCSI é diferente dos procedimentos para ativar outras opções do Verificador de Driver.
Para ativar a verificação do SCSI
Usando o Driver Verifier Manager ou a linha de comando Verifier.exe, inicie uma verificação do driver de miniporto. Como a Verificação SCSI não estará disponível como uma opção, você deve selecionar pelo menos uma outra opção verificador de driver. Confira a seleção de opções do Verificador de Driver e a seleção de drivers a serem verificados para obter detalhes.
Abra o registro usando regedit.exe. Na chave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ScsiPort , adicione uma subchave chamada Verificador. Dentro dessa chave, adicione uma entrada de REG_DWORD chamada VerifyLevel. O valor atribuído a essa entrada determinará quais testes de Verificação SCSI estarão ativos. O valor 0x1 fornecerá verificação máxima.
Reinicialize o computador.
Se o valor VerifyLevel não existir ou for igual a 0xFFFFFFFF, a Verificação SCSI será desabilitada.
Os bits individuais no valor VerifyLevel podem ser usados para controlar exatamente quais testes serão executados. O bit zero (0x1) habilita determinados testes; bits 28, 29, 30 e 31 desabilitam determinados testes. Portanto, a verificação máxima pode ser obtida usando o valor 0x00000001.
Os efeitos de cada bit são os seguintes:
| bit | Valor | Efeito |
|---|---|---|
0 |
0x1 |
O Verificador de Driver monitorará o acesso à memória do driver de miniporto e verificará se há uso inadequado de buffers de memória. |
28 |
0x10000000 |
O Verificador de Driver não emitirá uma verificação de bug quando a rotina HwAdapterControl levar mais de 0,5 segundo para ser concluída. |
29 |
0x20000000 |
O Verificador de Driver não emitirá uma verificação de falha quando um período de espera de redefinição terminar e ainda houver solicitações pendentes em uma unidade lógica. |
30 |
0x40000000 |
O Verificador de Driver não emitirá uma verificação de bug quando o driver de miniporto chamar ScsiPortNotification com NextLuRequest enquanto uma solicitação não registrada ainda estiver ativa. |
31 |
0x80000000 |
O Verificador de Driver não emitirá uma verificação de bug quando a rotina HwInitialize levar mais de 5 segundos para ser concluída. |
Na maioria dos casos, a configuração recomendada é 0xD0000001. Isso habilita todos os testes do Verificador SCSI , exceto o limite de tempo em HwAdapterControl, o limite de tempo em HwInitialize e a proibição de várias solicitações para uma unidade lógica. Esses três testes são muitas vezes muito rigorosos.
Se um depurador do kernel estiver anexado, será possível alterar o nível de verificação SCSI após o ciclo de inicialização. Para fazer isso, use o comando de depurador:
kd> ed scsiport!SpVrfyLevel Level
Esse comando permite que você defina um novo valor para Level. Usando esse método, você pode alterar os bits altos (0x10000000 por 0x8000000) a qualquer momento. No entanto, se você quiser alterar o bit baixo (0x1), deverá fazê-lo durante o processo de inicialização (no ponto de interrupção inicial do depurador do kernel).
Da mesma forma, se você quiser desativar completamente a Verificação SCSI, precisará definir Level como 0xFFFFFFFF no ponto de interrupção inicial.
Nota O valor 0xF0000000 desabilitará todos os testes, mas os módulos de Verificação SCSI ainda serão carregados. Use esse valor se quiser desabilitar a verificação, mas pretende habilitar os testes de bit alto posteriormente. Por outro lado, o valor 0xFFFFFFFF impede que os módulos sejam carregados inteiramente; se esse valor for usado durante a inicialização, não será possível habilitar a Verificação SCSI sem reinicialização.
Ativando sem reinicialização
Em geral, você não pode ativar ou desativar a Verificação SCSI sem reiniciar ("reinicializar") o computador em qualquer sistema operacional Windows. O driver ScsiPort.sys lê a entrada do Registro VerifyLevel somente quando é carregado, o que ocorre normalmente no momento da inicialização. No entanto, se o driver ScsiPort.sys não for carregado quando você adicionar a entrada do Registro ou se ela for descarregada e recarregada, você poderá habilitar a Verificação SCSI no Windows XP e versões posteriores do Windows sem reiniciar o computador.