Rotinas de miniporto do driver Storport
Um driver de miniporto que funciona com o driver 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 miniport.
As rotinas de driver de miniporto Storport são, em muitos aspectos, equivalentes às suas contrapartes de porta SCSI (consulte Rotinas de driver de miniport SCSI para obter mais informações). No entanto, há diferenças importantes entre o design do driver de porta SCSI e o do driver Storport, e essas rotinas devem acomodar essas diferenças.
Por exemplo, os drivers de miniport que funcionam com o driver Storport sempre devem estar preparados para receber outra solicitação de E/S após a conclusão da rotina HwStorStartIo . Um driver de miniporto que funciona com a porta SCSI não é necessário para fazer isso. A versão da porta SCSI não recebe uma nova solicitação de E/S até que sinalize explicitamente ao driver de porta, usando a função StorPortNotification , que está preparada para lidar com outra solicitação.
Se a versão Storport do driver de miniporto não puder lidar com uma solicitação no momento em que ela for enviada, ela terá um conjunto de funções de gerenciamento de filas, não disponíveis para a versão da porta SCSI, que permitem lidar com a sobrecarga. Assim como a versão da porta SCSI, a versão Storport do driver de miniporto conclui a solicitação com SRB_STATUS_BUSY, mas, ao contrário da versão da porta SCSI, ela também pode marcar a fila do dispositivo como ocupada usando a rotina StorPortDeviceBusy . Funções semelhantes permitem que o driver de miniporto pause e retome o processamento em toda a base do adaptador.
Para obter mais informações sobre as rotinas de suporte fornecidas pelo driver Storport, consulte Rotinas de suporte do driver Storport.
Para obter mais informações sobre o driver Storport, consulte Drivers de porta de armazenamento.
Veja a seguir as rotinas de driver de miniport:
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 no IRQL DISPATCH por meio do 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 miniporto após uma reinicialização do sistema ou falha de energia. |
HW_INTERRUPT | O driver 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 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 miniporto chamado StorPortNotification com o valor RequestTimerCall NotificationType . |
HW_TRACING_ENABLED | Permite que o Storport notifique um miniporto 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 miniporto é 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 por miniport para processar uma solicitação de item de trabalho do Storport. |
STORPORT_TELEMETRY_EVENT | Descreve a carga de dados de telemetria de miniport. |
StorPortLogTelemetry | Registra um evento de telemetria de miniporto para ajudar a diagnosticar ou coletar informações úteis. O miniporto pode registrar oito pares de nome-valor de uso geral e um buffer com comprimento máximo de 4 KB, bem como vários campos relacionados a eventos definidos no STORPORT_TELEMETRY_EVENT estrutura. |