Rotinas de miniporte do driver storport

Um driver de miniporte que trabalha 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 de HW_INITIALIZATION_DATA durante a fase de inicialização do driver de miniport.

As rotinas de driver de miniporto do Storport são, na maioria das vezes, equivalentes às respectivas contrapartes de porta SCSI (consulte Rotinas de driver de miniporto 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 miniporto que trabalham com o driver storport devem estar sempre preparados para receber outra solicitação de E/S após a conclusão da rotina HwStorStartIo . Um driver de miniporte 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 ela sinalize explicitamente o driver de porta, usando a função StorPortNotification , que ele está preparado para lidar com outra solicitação.

Se a versão do 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 fila, 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 miniporte pause e retome o processamento em todo o adaptador.

Para obter mais informações sobre as rotinas de suporte fornecidas pelo driver storport, consulte Rotinas de suporte ao driver do Storport.

Para obter mais informações sobre o driver storport, consulte Drivers de porta de armazenamento.

Veja a seguir as rotinas do driver de miniport:

Rotina Descrição
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE Manipula uma MSI (interrupção sinalizada por mensagem).
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 compartilhado antes de passá-lo para HwStorStartIo.
HW_DPC_ROUTINE Rotina adiada para execução no DISPATCH IRQL por meio do mecanismo DPC (chamada de procedimento adiado).
HW_FIND_ADAPTER Usa a configuração fornecida para determinar se há suporte para um HBA específico e, se for, para retornar informações de configuração sobre esse adaptador.
HW_INITIALIZE Inicializa o driver de miniporte depois que ocorre 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 RequestTimerCallNotificationType .
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 de unidade de armazenamento. O driver de miniporto é notificado para iniciar uma unidade ou manipular uma transição de estado de energia para um dispositivo de unidade.
HW_WORKITEM Uma função de retorno de chamada fornecida pelo miniporto para processar uma solicitação de item de trabalho do Storport.
STORPORT_TELEMETRY_EVENT Descreve o conteúdo dos dados de telemetria do miniport.
StorPortLogTelemetry Registra um evento de telemetria de miniporte para ajudar a diagnosticar ou coletar informações úteis. O miniporto pode registrar oito pares nome-valor de finalidade geral e um buffer com comprimento máximo de 4KB, bem como vários campos relacionados a eventos definidos na estrutura STORPORT_TELEMETRY_EVENT.