Verificação scsi
O recurso 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 miniporta usar incorretamente uma rotina, responder incorretamente a uma solicitação do driver de porta ou levar um tempo excessivo para responder a uma solicitação, um bug marcar será emitido.
Essa opção Verificador de Driver só está disponível no Windows XP e posterior.
Violações detectadas pela verificação do SCSI
A opção Verificação SCSI pode detectar vários usos indevidos de rotinas SCSI. Também é possível desabilitar individualmente determinadas dessas verificações.
Quando um driver de miniporta SCSI confirmar uma das seguintes violações, o Verificador de Driver emitirá marcar 0xF1 de bugs.
O driver de miniporta passa um argumento inválido para ScsiPortInitialize.
O driver de miniporto chama ScsiPortStallExecution e especifica um atraso de mais de 0,1 segundo, parando o processador por um período excessivo de tempo.
O driver de porta chama uma rotina de driver de miniporta e o driver de miniporta 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 de miniporta conclui uma solicitação mais de uma vez.
O driver de miniporta conclui uma rotina com uma status SRB inválida.
O driver de miniporto chama ScsiPortNotification para solicitar NextLuRequest, mas uma solicitação não registrada ainda está ativa.
O driver de miniporta 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 barramento termina, mas o driver de miniporta ainda tem solicitações pendentes.
Consulte 0xF1 de Verificação de Bugs (SCSI_VERIFIER_DETECTED_VIOLATION) para obter uma lista completa dos parâmetros de marcar de bugs.
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 tiver especificado MapBuffers.
As violações de memória desse tipo geralmente resultarão na emissão de 0xD1 de Verificação de Bugs (DRIVER_IRQL_NOT_LESS_OR_EQUAL).
Ativando essa opção
O procedimento para ativar a opção verificação SCSI é diferente dos procedimentos para ativar outras opções do Verificador de Driver.
Para ativar a verificação do SCSI
Usando o Gerenciador de Verificador de Driver ou a linha de comando Verifier.exe, inicie uma verificação do driver de miniporta. 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. Consulte Selecionando opções de verificador de driver e Selecionando drivers a serem verificados para obter detalhes.
Abra o registro usando regedit.exe. Na chaveHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ScsiPort , adicione uma subchave chamada Verifier. Dentro dessa chave, adicione uma entrada de REG_DWORD chamada VerifyLevel. O valor atribuído a essa entrada determinará quais testes de Verificação do 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 marcar para uso inadequado de buffers de memória. |
28 |
0x10000000 |
O Verificador de Driver não emitirá um bug marcar quando a rotina HwAdapterControl levar mais de 0,5 segundo para ser concluída. |
29 |
0x20000000 |
O Verificador de Driver não emitirá um bug marcar quando um período de retenção de redefinição terminar e ainda houver solicitações pendentes em uma unidade lógica. |
30 |
0x40000000 |
O Verificador de Driver não emitirá um bug marcar quando o driver de miniporto chamar ScsiPortNotification com NextLuRequest enquanto uma solicitação não marcada ainda estiver ativa. |
31 |
0x80000000 |
O Verificador de Driver não emitirá um bug marcar 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 geralmente são muito rigorosos.
Se um depurador de kernel estiver anexado, será possível alterar o nível de Verificação do SCSI após o ciclo de inicialização. Para fazer isso, use o comando do 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 meio de 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 do 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 totalmente carregados; 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 do SCSI sem reiniciar ("reinicializar") o computador em qualquer sistema operacional Windows. O driver ScsiPort.sys lê a entrada do Registro VerifyLevel somente quando ela é carregada, que normalmente é no momento da inicialização. No entanto, se o driver de 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 em versões posteriores do Windows sem reiniciar o computador.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de