Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O driver da porta de armazenamento subjacente é responsável por repetir os pedidos se ocorrer um erro do dispositivo que envolva a transmissão de dados no barramento, incluindo erros de paridade do barramento, tempos limite de seleção e erros de ocupação da meta/controlador. Se as tentativas de repetição falharem, o driver da porta de armazenamento concluirá a solicitação com um erro apropriado e também registrará o erro de E/S.
Um driver de classe de armazenamento nunca deve tentar repetir uma solicitação de que o driver de porta já falhou devido a qualquer um dos erros anteriores.
Um driver de classe de armazenamento é responsável por repetir solicitações que falham devido a erros específicos do dispositivo, erros de destino/controlador diferentes de destino/controlador ocupado, redefinições de barramento ou tempos limite de solicitação. Em geral, uma rotina RetryRequest pode reenviar esse IRP para o próximo driver inferior e direcionar que o SRB seja colocado no topo da fila específica de LU do driver de porta.
Em particular, uma rotina RetryRequest deve fazer o seguinte:
Certifique-se de que uma solicitação de transferência parcial tenha os valores corretos definidos para o endereço inicial e o comprimento.
Zero os membros SrbStatus e ScsiStatus do SRB.
Configure o membro SrbFlags , conforme necessário para o dispositivo.
Configure o local da pilha de E/S para o driver de porta no IRP, conforme descrito em Rotinas de despacho do driver de classe de armazenamento por meio da rotina SplitTransferRequest do driver de classe de armazenamento.
Chame IoSetCompletionRoutine para o IRP, porque a rotina IoCompletion do driver deve liberar o SRB antes que o IRP retorne. A rotina IoCompletion também pode precisar repetir a solicitação mais de uma vez ou chamar a rotina InterpretRequestSense ou ReleaseQueue do driver.
Passe a solicitação para o driver imediatamente inferior com IoCallDriver.