Compartilhar via


Arquitetura do Driver de Armazenamento do Windows

Os drivers de filtro e classe do sistema operacional Windows para dispositivos de armazenamento periférico atuam como uma interface entre os drivers intermediários ou de nível mais alto colocados acima da classe ou do driver de filtro e um driver de porta fornecido pelo sistema.

As solicitações de E/S de um aplicativo de usuário ou componente de kernel atingem drivers de classe de armazenamento por meio dos Serviços de Sistema de E/S e um ou mais drivers intermediários ou de nível mais alto, como um driver de sistema de arquivos. Os drivers de classe de armazenamento convertem os IRPs padrão que eles obtêm em IRPs com SRBs (blocos de solicitação SCSI) definidos pelo sistema que contêm blocos de descritor de comando SCSI (CDBs) antes de enviar cada IRP para o driver mais baixo. Um driver de porta de armazenamento converte SRBs de drivers de classe em comandos específicos do ônibus que ele envia para o HBA de armazenamento, por meio de um driver de ônibus de E/S e possivelmente um ou mais drivers de filtro.

A figura a seguir mostra a arquitetura em camadas dos drivers de armazenamento do Windows.

diagrama ilustrando a arquitetura em camadas de drivers de armazenamento do sistema operacional baseado em nt.

A partir da parte inferior da figura, o seguinte descreve cada tipo de driver de armazenamento:

  1. Um driver de porta de armazenamento define uma interface para todos os drivers de classe de armazenamento do Windows, incluindo os drivers de classe de disco, fita, CDROM, DVD e alterador fornecidos pelo sistema. Essa interface de porta/classe isola os drivers de classe de requisitos específicos do adaptador do barramento de host aos quais seus respectivos dispositivos estão conectados. Um driver de porta de armazenamento também sincroniza o acesso ao barramento para todos os drivers de dispositivos no HBA correspondente. O sistema fornece drivers de porta de armazenamento para adaptadores SCSI, IDE, USB e IEEE 1394.

    Um driver de porta de armazenamento recebe SRBs do próximo driver superior (um driver de classe de armazenamento ou driver de filtro intervindo) e os processa da seguinte maneira:

    • O driver da porta de armazenamento para um SCSI ou outro ônibus passa SRBs com CDBs para um driver de miniporto Storport independente do sistema operacional, específico do HBA, que é vinculado dinamicamente ao driver de porta correspondente e fornece suporte específico a hardware para um HBA específico. Para obter informações sobre como implementar um driver de miniporto SCSI, consulte Drivers de Miniport do Storport.
    • O driver da porta de armazenamento para um IDE/ATAPI herdado ou um barramento IEEE 1394 converte os SRBs recebidos do driver de classe de armazenamento para o formato exigido pelo adaptador subjacente, por exemplo, reempacotar CDBs de acordo com um protocolo de transporte específico do ônibus ou traduzi-los em um formato diferente, isolando assim os drivers de nível superior de peculiaridades do barramento subjacente.
  2. Um driver de filtro de armazenamento superior ou inferior dá suporte à funcionalidade específica do dispositivo não fornecida por um driver de classe de armazenamento fornecido pelo sistema. Um driver de armazenamento de filtro inferior monitora SRBs e/ou IRPs emitidos por um driver de classe de armazenamento e os modifica conforme necessário antes de passá-los para o driver mais baixo (um driver de porta de armazenamento ou outro driver de filtro de armazenamento).

    Para obter informações sobre como implementar um driver de filtro de armazenamento, consulte Drivers de Filtro de Armazenamento.

  3. Um driver de classe de armazenamento usa a interface de porta/classe SCSI para controlar um dispositivo do tipo em qualquer barramento para o qual o sistema fornece um driver de porta de armazenamento. Um driver de classe é específico para uma classe específica de dispositivo– por exemplo, um driver de classe pode executar todos os dispositivos CD-ROM em qualquer barramento com suporte; outro pode controlar todos os dispositivos de disco. O driver de classe de armazenamento lida com solicitações de E/S de aplicativos de usuário ou drivers mais altos na pilha de armazenamento criando SRBs contendo CDBs e emitindo essas SRBs para o driver mais baixo (um driver de porta de armazenamento ou driver de filtro intervindo), assim como se o dispositivo fosse um dispositivo SCSI.

    A implementação de um driver de classe de armazenamento é transparente para drivers de nível superior. Um driver de classe para um dispositivo de fita ou alterador médio é implementado como um driver de miniclasse específico do dispositivo que se vincula a um driver de classe fornecido pelo sistema. Os drivers de classe fornecidos pelo sistema para outros dispositivos de armazenamento, como disco e CD-ROM/DVD, são implementados como drivers monolíticos únicos.

    Para obter informações sobre como implementar um driver de classe de armazenamento, consulte Drivers de classe de armazenamento. Para obter informações sobre como implementar um driver de miniclasse de fita ou alterador, consulte Drivers de fita e drivers de alteração, respectivamente.

  4. Um driver de armazenamento de filtro superior intercepta IRPs de aplicativos de usuário e drivers mais altos na pilha de armazenamento e, em seguida, possivelmente os modifica antes de passá-los para o driver mais baixo (um driver de classe de armazenamento ou outro driver de filtro de armazenamento). Os drivers de filtro normalmente monitoram o desempenho do dispositivo subjacente.

O tipo de barramento ao qual um dispositivo está anexado e a implementação de seu driver de porta de armazenamento são transparentes para drivers de nível superior. Um driver de porta de armazenamento pode ser implementado de acordo com a arquitetura do driver de porta/miniport, como o driver de porta SCSI; como um driver monolítico que controla uma única parte padrão do hardware, como o driver de porta IDE/ATAPI; ou como um driver de filtro que converte SRBs no formato exigido por uma pilha de driver diferente, como o driver de porta IEEE 1394.

O driver de porta SCSI fornecido pelo sistema também pode atuar como uma interface entre um driver de classe de armazenamento e um driver de miniporto SCSI que controla um dispositivo de armazenamento não SCSI do mesmo tipo. Por exemplo, em vez de escrever um driver para um novo controlador de matriz de disco, um gravador de driver pode salvar um esforço considerável de design, desenvolvimento e depuração escrevendo um driver de miniporto pseudo-SCSI que se vincula ao driver de porta SCSI do sistema e usa a interface que ele fornece. Esse driver de miniporto é necessário para converter comandos SCSI de entrada em comandos específicos do dispositivo. Por outro lado, os drivers de porta e classe fornecidos pelo sistema lidam com o trabalho muito necessário em nome de um miniporto pseudo-SCSI, incluindo acessos do Registro durante a inicialização, todas as alocações de recursos e objetos, sincronização, presificação de transferências solicitadas para atender às funcionalidades do dispositivo do miniporto e solicitações de repetição.

Para obter informações mais detalhadas sobre SRBs, consulte a Referência de arquitetura do driver de Kernel-Mode. Para obter informações específicas do tipo de dispositivo sobre CDBs, consulte conjuntos de comandos apropriados nos padrões DO INCITS SCSI-3.