Compartilhar via


Funcionalidades fornecidas pelo Storport

O driver storport fornece os seguintes recursos:

  • Endereçando

    O Microsoft Windows dá suporte a sistemas que contêm diferentes tipos de ônibus de E/S e/ou vários barramentos de E/S do mesmo tipo. Um esquema de endereçamento comum é necessário para lidar com essa variedade.

    Os dispositivos PCI podem ter recursos de registro de memória e porta de E/S. Os endereços lógicos ajudam a tornar essa distinção transparente para o driver de porta.

    Alguns sistemas contêm HBAs que estão conectados a mais de um barramento; esse HBA pode exigir vários conjuntos de traduções de endereço.

    Endereços lógicos são necessários para portabilidade em computadores baseados em CISC e RISC.

  • Repetições e tratamento de erros

    • Os drivers de classe de armazenamento não precisam implementar algoritmos para tentar novamente IRPs quando os dispositivos estão muito ocupados para processá-los. O driver storport implementa essa funcionalidade.

    • O driver de classe define um valor de tempo limite para solicitações e o Storport é responsável por aplicá-lo. No entanto, o driver storport pode impor os valores de tempo limite do driver de classe de forma flexível, levando em consideração o estado do ônibus. Por exemplo, se um link de fibre channel gerenciado pelo Storport cair por 20 segundos, o Storport poderá suspender o contador de tempo limite durante o tempo de inatividade, para que, por exemplo, as solicitações com um tempo limite de 10 segundos não falhem até 10 segundos após o backup do link. O Storport aumenta os valores de tempo limite atribuídos às solicitações em resposta a um aumento no tráfego de E/S, pois, com o tráfego de E/S mais pesado, os dispositivos exigirão mais tempo para concluir as solicitações.

    • O Storport lida com erros de destino e ocupado pelo controlador, bem como condições de erro de transporte (em outras palavras, erros relacionados à transmissão real de dados no barramento). Por exemplo:

      • erros de paridade de barramento
      • tempos limite de seleção
  • Configuração, Enfileiramento e Gerenciamento de Estado do Power

    • Fornecendo aos drivers de classe informações sobre limitações do adaptador de host: é responsabilidade do driver de classe regular o tamanho das transferências de dados para atender aos limites dos HBAs (adaptadores de barramento de host). No entanto, o Storport fornece ao driver de classe as informações necessárias para realizar essa tarefa. O Storport fornece essas informações em um descritor do adaptador (STORAGE_ADAPTER_DESCRIPTOR) em resposta a uma solicitação IOCTL (IOCTL_STORAGE_QUERY_PROPERTY). O driver de classe é responsável por dividir as solicitações em partes do tamanho apropriado com base nas informações relatadas neste descritor.

    • Traduzindo endereços relativos do barramento para endereços lógicos: quando consultados, os adaptadores fornecem endereços relativos ao barramento para portas de E/S, registros de comando e registros de controle status. No entanto, um motorista de miniporto não pode usar endereços relativos ao barramento para se comunicar com seu HBA (adaptador de barramento de host). O Storport converte endereços relativos ao barramento em endereços lógicos, para que os motoristas de miniporte possam acessar endereços de ônibus de maneira transparente. Há vários motivos para isso:

    • Garantir que um dispositivo e todos os seus dispositivos subjacentes sejam ligados (no estado de energia do dispositivo D0) antes que o dispositivo seja iniciado: quando um dispositivo não está pronto para ser ligado, o Storport enfileira uma solicitação D0 para esse dispositivo até que o dispositivo esteja pronto.

    • Enfileirando solicitações assíncronas de drivers de classe e encaminhando-as de forma assíncrona para o dispositivo de destino: os drivers de classe não precisam aguardar a conclusão de uma solicitação antes de enviar a próxima solicitação. O Storport assume a responsabilidade de enfileirar essas solicitações para evitar sobrecarregar o poder de processamento do hardware subjacente.

    • Suporte ao gerenciamento interno e externo de filas de solicitação de E/S internas: a maioria das operações de gerenciamento de filas é iniciada pelo próprio Storport. Por exemplo, o Storport congela sua fila quando ocorre um erro e relata a condição de erro para o driver de classe, para que o driver de classe possa responder antes que novas solicitações sejam processadas. No entanto, o Storport também responde às solicitações do driver de classe ou de outros drivers de nível superior para bloquear, desbloquear, congelar ou descongelar sua fila de solicitações internas. Drivers de nível superior podem forçar o Storport a descongelar sua fila interna usando a solicitação SRB_FUNCTION_RELEASE_QUEUE. Para obter uma explicação do que significa "congelar", "bloquear" ou "desbloquear" uma fila, consulte Storport Queue Management.

    • Traduzir erros relatados pelo dispositivo no formato de dados de sentido SCSI-3 para processamento pelo driver de classe.

O Storport fornece serviços para o driver de miniporto por meio das rotinas da biblioteca do Storport. Os gravadores de driver de miniport podem chamar essas rotinas em vez de codificar a funcionalidade que eles fornecem em um único driver de porta monolítico. Alguns dos serviços mais importantes oferecidos usando essas rotinas são os seguintes:

  • Um driver de miniporto storport pode delegar muitas operações de inicialização dependentes do sistema operacional para a rotina de biblioteca StorPortInitialize do Storport . Por exemplo, o driver Storport manipula os detalhes relacionados ao mapeamento PnP e DMA. Isso reduz a quantidade de trabalho que um driver de miniporto do Storport precisa fazer. Para obter uma explicação das tarefas de inicialização de um driver de miniporto do Storport, consulte Inicialização de hardware com Storport.

  • Os drivers de miniporto storport para dispositivos não PnP são poupados da tarefa de localizar adaptadores e relatar seus recursos ao gerenciador PnP. Isso é feito no StorPortInitialize.

  • Os drivers de miniporto storport não inicializam pontos de entrada de expedição no objeto driver. O driver storport faz isso em nome do driver de miniporto quando o driver de miniporto chama StorPortInitialize.

  • Os drivers de miniporto do Storport não convertem endereços relativos ao barramento em endereços lógicos usando HalTranslateBusAddress. Os drivers de miniport do Storport fazem isso por uma chamada para StorPortGetDeviceBase.

Para obter uma lista completa das rotinas de biblioteca que o Storport disponibiliza para drivers de miniporto do Storport, consulte Rotinas de suporte ao driver do Storport.