Rotinas de miniporta do driver do Storport
Um driver de miniporta que funciona com o driver do Storport deve conter implementações das descrições de rotina listadas nesta seção e deve expô-las por meio de uma estrutura HW_INITIALIZATION_DATA durante a fase de inicialização do driver de miniporta.
As rotinas de driver de miniporta da Storport são, em muitos aspectos, equivalentes às suas contrapartes de porta SCSI. No entanto, há diferenças importantes entre o design do driver de porta SCSI e o do driver do Storport, e as rotinas de miniporta devem acomodar essas diferenças.
Por exemplo:
- Um driver de miniporta do Storport sempre deve estar preparado para receber outra solicitação de E/S após a conclusão de sua rotina HwStorStartIo.
- Um driver de miniporta SCSI não tem esse requisito. Ele não recebe uma nova solicitação de E/S até sinalizar explicitamente o driver de porta quando pode lidar com outra solicitação chamando StorPortNotification.
Se o driver de miniporta do Storport não puder lidar imediatamente com uma solicitação enviada, ele terá um conjunto de funções de gerenciamento de filas que permitem lidar com a sobrecarga. Essas funções de gerenciamento de filas não estão disponíveis para o driver de miniporta SCSI. Assim como o driver de miniporta SCSI, o driver de miniporta Storport conclui a solicitação com SRB_STATUS_BUSY. Mas, ao contrário da versão da porta SCSI, ele também pode marcar a fila do dispositivo como ocupada usando a rotina StorPortDeviceBusy. Funções semelhantes permitem que o driver de miniporta do Storport pause e retome o processamento em toda a base do adaptador.
Para obter mais informações sobre as rotinas de suporte fornecidas pelo driver do Storport, consulte Rotinas de suporte do driver do Storport.
Para obter mais informações sobre o driver do Storport, consulte Drivers de Porta de Armazenamento.
Lista de rotinas de driver de miniporta do Storport
Rotina | Descrição |
---|---|
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE | Manipula uma interrupção sinalizada por mensagem (MSI). |
HW_ADAPTER_CONTROL | Executa operações síncronas para controlar o estado ou o comportamento de um adaptador, como parar ou reiniciar o HBA para gerenciamento de energia. |
HW_BUILDIO | Processa o SRB com acesso não sincronizado a estruturas de dados do sistema compartilhadas antes de passá-lo para HwStorStartIo. |
HW_DPC_ROUTINE | Rotina que é adiada para execução em DISPATCH IRQL com o mecanismo de chamada de procedimento adiado (DPC). |
HW_FIND_ADAPTER | Usa a configuração fornecida para determinar se há suporte para um HBA específico e, em caso afirmativo, para retornar informações de configuração sobre esse adaptador. |
HW_INITIALIZE | Inicializa o driver de miniporta após uma reinicialização do sistema ou falha de energia. |
HW_INTERRUPT | O driver do Storport chama a rotina HwStorInterrupt depois que o HBA gera uma solicitação de interrupção. |
HW_PASSIVE_INITIALIZE_ROUTINE | Chamado após a rotina HwStorInitialize quando o IRQL atual está em PASSIVE_LEVEL. |
HW_RESET_BUS | Chamado pelo driver de porta para limpar as condições de erro. |
HW_STARTIO | O driver do Storport chama a rotina HwStorStartIo uma vez para cada solicitação de E/S de entrada. |
HW_TIMER | Chamado após o intervalo especificado quando o driver de miniporta chamado StorPortNotification StorPortNotification com o valor RequestTimerCall NotificationType. |
HW_TRACING_ENABLED | Permite que o Storport notifique uma miniporta de que o rastreamento de eventos está habilitado. |
HW_UNIT_CONTROL | Chamado para executar operações síncronas para controlar o estado do dispositivo da unidade de armazenamento. O driver de miniporta é notificado para iniciar uma unidade ou lidar com uma transição de estado de energia para um dispositivo de unidade. |
HW_WORKITEM | Uma função de retorno de chamada fornecida pela miniporta para processar uma solicitação de item de trabalho do Storport. |