Compartilhar via


Terminologia de áudio WDM

Esta seção descreve as diferenças na terminologia entre a arquitetura do driver de áudio WDM (Modelo de Driver do Microsoft Windows) e a arquitetura genérica do driver em camadas do Windows. A arquitetura de driver genérico é exemplificada por drivers de porta/miniport scsi (consulte Arquitetura do driver de armazenamento).

Os termos definidos pelas arquiteturas de driver de áudio genérico e WDM são semelhantes, mas têm algumas diferenças importantes, conforme descrito abaixo.

Driver de Miniport (genérico)

O driver de miniporto (genérico) é o driver específico de hardware para um adaptador que reside em um barramento do sistema (por exemplo, PCI ou ISA). Esse driver tem um único ponto de entrada, DriverEntry, e registra uma tabela de funções com um driver de porta. Essa tabela de funções serve como a interface de borda superior do driver de miniport.

O driver de miniporto fica abaixo do driver de porta na pilha do driver. Ou seja, todas as chamadas para o driver de miniporto são feitas do driver de porta e todas as chamadas do driver de miniport são para a interface de borda inferior do driver de porta.

A figura a seguir ilustra o significado da pilha de termos, interface de borda superior e interface de borda inferior conforme eles são usados neste contexto. O bloco que representa o driver de porta é empilhado na parte superior do bloco que representa o driver de miniporto. Portanto, o driver de miniporto fica abaixo do driver de porta na "pilha".

Diagrama ilustrando a pilha do driver com o driver de porta na parte superior e o driver de miniporte abaixo, mostrando interfaces de borda superior e inferior.

Os drivers de porta e de miniporto se comunicam por meio das interfaces de software que eles expõem uns aos outros. Na figura anterior, essas interfaces são associadas à borda inferior do bloco que representa o driver de porta e a borda superior do bloco que representa o driver de miniport. Essa representação é a origem dos termos "interface de borda inferior" e "interface de borda superior".

Driver de porta (genérico)

O driver de porta (genérico) envolve um driver de miniporte.

O driver de porta:

  • Implementa filtros de streaming WDM.

  • Fornece uma interface comum para o restante do sistema operacional.

  • Manipula solicitações de E/S do sistema e reformula essas solicitações como chamadas para a tabela de funções do driver de miniport.

  • Fornece ao driver de miniporto uma biblioteca de funções de suporte (a interface de borda inferior do driver de porta).

O driver de porta oculta muitos dos detalhes do sistema operacional do driver de miniporto e o driver de miniporto oculta as especificidades do hardware subjacente do driver de porta. A implementação do driver de porta pode sofrer alterações para versões diferentes do sistema operacional, mas a interface do driver de porta para o driver de miniporto permanece mais ou menos inalterada, permitindo que o driver de miniporte seja amplamente independente da plataforma.

Minidriver (genérico)

O minidriver (genérico) representa um componente de hardware em um barramento. O minidriver usa o motorista do ônibus para se comunicar com o dispositivo físico pelo ônibus e une o motorista do ônibus e um ou mais motoristas de classe.

Os drivers de classe ajudam o minidriver a apresentar o dispositivo físico aos clientes como um tipo de dispositivo lógico. Em ambientes WDM, um minidriver normalmente recebe solicitações no formulário IRP de drivers de classe e envia solicitações no formulário IRP para um motorista de ônibus.

Um minidriver também pode ter que se comunicar com vários drivers de classe. Um exemplo de um minidriver que se associa a vários drivers de classe é um minidriver para uma unidade CD-ROM em um barramento IEEE 1394. Ele pode se associar a um driver do sistema de arquivos para que a unidade possa ser acessada do sistema de arquivos. No entanto, ele também se associa a um driver do sistema Redbook para que o áudio possa ser transmitido de CDs.

Driver de Barramento (Genérico)

O motorista do ônibus (genérico) dá aos minidrivers acesso a um ônibus físico. Às vezes , a HAL (camada de abstração de hardware) do Microsoft Windows é conhecida como o driver do barramento do sistema porque fornece acesso ao barramento do sistema. Para obter mais informações, consulte Motoristas de ônibus.

Driver de Classe (genérico)

O driver de classe (genérico) implementa um comportamento comum em uma classe de dispositivos semelhantes.

O driver de classe:

  • Elimina a duplicação da funcionalidade em drivers específicos de hardware.

  • Não é específico do ônibus.

  • Não está ciente dos problemas de recursos (por exemplo, DMA e interrupções).

Driver de Miniport (áudio WDM)

O driver de miniporto (áudio WDM) implementa uma interface específica da função para uma função em um adaptador de áudio cartão que reside em um barramento do sistema. Um driver de miniporte é um componente de um driver de adaptador. Ele não é reconhecido como um driver pelo sistema operacional. Nesse sentido, um driver de miniporto de áudio difere de um driver de miniporto genérico.

Ao contrário dos drivers de miniporto genéricos, os drivers de miniporto de áudio não implementam DriverEntry, não são registrados e não dependem inteiramente de seus respectivos drivers de porta para dar suporte. Vários drivers de miniporto de áudio que abordam várias funções podem ser vinculados a um único driver de adaptador (e associados a um único objeto de dispositivo).

Driver do adaptador (áudio WDM)

O driver do adaptador (áudio WDM) serve como um contêiner para todos os drivers de miniporto associados a um determinado adaptador. Esse driver de adaptador é reconhecido como um driver pelo sistema operacional e está contido em seu próprio arquivo .sys.

O driver do adaptador de áudio consiste em um conjunto de drivers de miniporto e código adicional que resolve problemas de inicialização. Por exemplo, um driver de adaptador implementa um ponto de entrada DriverEntry .

Driver de porta (áudio WDM)

O driver de porta (áudio WDM) implementa um filtro KS em nome de um driver de miniporto e opera no contexto de um driver de classe de porta. O driver de porta expõe o código específico da função do driver de miniporto como um filtro KS para o sistema e é responsável por implementar a funcionalidade independente do adaptador.

Ao contrário do driver de porta genérico, o driver de porta de áudio compartilha o objeto do dispositivo e, portanto, é instanciado de forma diferente. Um driver de porta de áudio também é mais parecido com um driver de classe genérico do que um driver de porta genérico, pois implementa um comportamento esperado de uma classe de dispositivos (não é independente de ônibus).

Driver de classe de porta (áudio WDM)

O driver de classe de porta (áudio WDM) serve como um contêiner para uma coleção de drivers de porta, cada um dos quais fornece suporte para um tipo diferente de função de hardware de áudio. A figura a seguir mostra as relações entre a classe de porta de áudio e os drivers do adaptador.

Diagrama mostrando a relação entre drivers de classe de porta de áudio, drivers de adaptador e seus respectivos drivers de miniport.

Um driver de adaptador gerencia um adaptador cartão que pode conter várias funções de hardware diferentes. Conforme mostrado na figura anterior, o driver do adaptador contém um driver de miniporto para gerenciar cada tipo de função de hardware. Da mesma forma, o driver de classe de porta foi projetado para fornecer suporte a cartões de adaptador com várias funções de hardware. O driver de classe de porta fornece um driver de porta para cada um dos tipos de função bem definidos aos quais ele dá suporte. O driver do adaptador associa seu driver de miniporto para uma função específica ao driver de porta correspondente para esse tipo de função. O driver de porta para cada função lida com a comunicação com os clientes de áudio WDM que usam a função. O driver de miniporto contém todo o código específico do hardware para gerenciar essa função.

O driver de classe de porta (áudio WDM) funciona principalmente como um contêiner para vários subdispositivos associados a um único objeto de dispositivo. Os motoristas de barramento criam um único PDO (objeto de dispositivo físico) para cada nó de Plug and Play (PnP) que enumeram.

No caso de um adaptador de áudio, um único nó PnP frequentemente contém várias funções de áudio. Para expor as várias funções associadas a um nó como dispositivos distintos normalmente requer a gravação de um driver de ônibus para o adaptador. O driver de barramento enumera as funções de hardware e cria PDOs correspondentes. Nesse cenário, um ou mais drivers específicos de função precisam se associar aos PDOs e negociar com o motorista do ônibus o acesso aos recursos compartilhados no adaptador.

O driver de classe de porta usa a capacidade do driver de streaming do kernel de expor vários aspectos de um único objeto de dispositivo para que o sistema operacional reconheça o dispositivo como um conjunto de subdispositivos distintos.

Uma cadeia de caracteres de referência é acrescentada ao nome do dispositivo para especificar o subdispositivo desejado. O driver de streaming de kernel despacha a criação de IRPs com base nessa cadeia de caracteres de referência. Depois que um objeto de arquivo é criado, o driver de streaming do kernel fornece a expedição de IRPs direcionados ao objeto de arquivo que representa o subdispositivo. Além disso, o driver de classe de porta implementa um modelo baseado em COM para empacotar subdispositivos.

Um driver de adaptador cria uma instância de um driver de porta e um driver de miniporta e os associa passando um ponteiro para o driver de miniporto como um parâmetro para a função de inicialização do driver de porta (consulte o exemplo de código em Criação de Subdispositivos). A pilha de driver de porta/miniport resultante constitui um filtro KS que representa um dos tipos de subdispositivos aos quais o driver de classe de porta dá suporte.

A função PcRegisterSubdevice do driver de classe de porta registra o subdispositivo, que é percebido como um dispositivo pelo restante do sistema. O driver de porta recebe IRPs de criação direcionados ao objeto do dispositivo, mas apenas para os IRPs especificados pela cadeia de caracteres de referência sob a qual o subdispositivo está registrado. O driver de porta também recebe os IRPs direcionados aos objetos de arquivo associados ao subdispositivo. O driver de porta é responsável pelo comportamento do subdispositivo como um filtro KS e por se comunicar adequadamente com o driver de miniporta.

Para obter mais informações sobre como criar drivers para cartões de áudio multifuncionais, consulte Dispositivos de áudio multifuncionais.