Partilhar via


Interface do Storport com drivers de miniporto storport

A comunicação entre o driver Storport e os drivers de miniporto storport ocorre por meio de SRBs (blocos de solicitação) SCSI e rotinas de retorno de chamada de driver de miniporto. Para obter uma discussão detalhada sobre as rotinas de retorno de chamada do driver de miniporto do Storport, confira Rotinas de driver do Storport Miniport.

Para obter uma visão geral e uma definição das funções SRB individuais, sinalizadores SRB e valores de status SRB, consulte SCSI_REQUEST_BLOCK.

Para ver discussões sobre como os drivers de miniporto devem responder a cada função SRB individual, consulte HwStorStartIo.

O Storport encaminha SRBs para drivers de miniporto storport para processamento assíncrono. Normalmente, o driver de miniporto levará algum tempo para realmente concluir a solicitação. Os HBAs (adaptadores de barramento de host) que dão suporte ao enfileiramento marcado podem enfileirar solicitações internamente e processá-las na ordem indicada pelas marcas que o Storport atribui a cada solicitação. A estrutura de SCSI_REQUEST_BLOCK (SRB) contém dois membros que os drivers Storport e miniport usam para especificar como os SRBs devem ser ordenados na fila interna do adaptador de host:

  • QueueTag: o Storport atribui um valor de contagem ou "marca" ao membro QueuedTag de cada SRB. Essa marca indica a ordem na qual o adaptador deve processar os pacotes. Os valores de marca também permitem que o Storport acompanhe quais SRBs ainda estão pendentes, que foram concluídas com êxito e que atingiu o tempo limite.

  • QueueAction: indica a mensagem de fila marcada a ser usada quando o sinalizador SRB_FLAGS_QUEUE_ACTION_ENABLE é definido no SRB. SrbFlags. O uso de QueueAction pelo miniporto é específico do miniporto. Os miniportos baseados em SCSI poderão seguir a especificação SCSI se o HBA der suporte a ele. QueueAction pode ser um dos seguintes valores:

Valor Significado
SRB_SIMPLE_TAG_REQUEST Enfileirar a solicitação e executá-la em qualquer ordem depois que todas as solicitações de SRB_HEAD_OF_QUEUE_TAG_REQUEST e SRB_ORDERED_QUEUE_TAG_REQUEST mais antigas forem encerradas.
SRB_ORDERED_QUEUE_TAG_REQUEST Execute a solicitação somente depois que todas as SRB_HEAD_OF_QUEUE_TAG_REQUEST mais antigas e todas as solicitações mais antigas tiverem sido concluídas.
SRB_HEAD_OF_QUEUE_TAG_REQUEST Coloque a solicitação na frente da fila e execute-a antes de todas as outras solicitações na fila, incluindo todas as outras solicitações marcadas SRB_HEAD_OF_QUEUE_TAG_REQUEST.

Consulte a especificação SCSI para obter detalhes.