Partilhar via


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.