Compartilhar via


Resumo de objetos ACX

Este tópico fornece um resumo de alto nível dos objetos de Extensões de classe de áudio (ACX) que formam a base de um driver de áudio ACX. Para obter uma visão geral do ACX, consulte Visão geral das extensões de classe de áudio ACX.

Os objetos ACX são objetos de Estrutura de Driver do Windows (WDF) – WDFOBJECT. Para obter mais informações sobre o WDF, consulte Introdução aos objetos de estrutura. Para obter um resumo dos objetos WDF, consulte Resumo de objetos de estrutura.

Hierarquia de objetos do ACX

No ACX (como no WDF), o objeto de driver é o objeto raiz e todos os outros objetos são seus filhos/descendentes. Todos os objetos ACX são filhos do objeto de driver direta ou indiretamente por meio de outros objetos ACX ou WDF. Um driver ACX pode especificar o pai de um objeto ACX durante o momento de criação. Se o pai não for especificado, o ACX usará um pai padrão, conforme descrito nestas seções.

Diagrama ilustrando a hierarquia de objetos ACX com WDFDEVICE na parte superior e os principais objetos ACX, como circuito e fluxo abaixo.

Criando objetos WDF não ACX

Além dos objetos ACX, um driver de áudio pode criar e usar outros objetos WDF conforme necessário. Se um driver estiver planejando enumerar dispositivos não-ACX, ele deverá fazê-lo usando uma lista filho diferente da lista filho WDF padrão criada quando um dispositivo ACX/WDF é criado. Um driver pode criar uma nova lista filho WDF usando WdfChildListCreate conforme descrito em Criando objetos de dispositivo em um driver de função. Para obter informações gerais sobre objetos WDF, consulte Introdução a objetos do Framework, Arquitetura WDF e Desenvolvendo drivers com o Windows Driver Foundation. Para obter informações sobre como inicializar um dispositivo ACX, consulte AcxDeviceInitialize.

Circuito ACX

Um AcxCircuit representa um caminho de áudio parcial ou total para um dispositivo de áudio percebido pelo usuário (alto-falantes, microfone, etc.). Um AcxCircuit tem pelo menos um pino de entrada e um de saída (ACXPIN) e pode agregar um ou mais objetos do tipo AcxElements. Por padrão, os AcxElements são "conectados" na mesma ordem de montagem.

O circuito de áudio é o bloco de construção central do ACX. Na nova estrutura ACX, um driver de áudio cria um ou mais objetos de circuito ACX para representar um caminho de dados/controle de áudio parcial ou completo. O ACX monta esses objetos de circuito ACX juntos para criar um caminho de áudio completo que representa um ponto de extremidade de áudio. O ACX é responsável pelo gerenciamento dos circuitos ACX e suas dependências. A ordem de como esses circuitos são montados pode ser definida estaticamente no momento da inicialização ou dinamicamente no tempo de execução.

Um ponto de extremidade de áudio nas estruturas ACX é uma coleção de um ou mais circuitos ACX. Cada circuito ACX em um caminho de áudio de circuito múltiplo deve pertencer a uma pilha de dispositivos PnP diferente. Um driver ACX pode criar um ou mais circuitos no momento da inicialização ou no tempo de execução, como efeito colateral de um evento externo, por exemplo, depois de detectar um novo componente de áudio, ou porque ele se registrou no ACX como uma fábrica para um tipo de circuito específico, e a estrutura ACX pediu ao componente de fábrica para gerar um novo circuito desse tipo (consulte o gerenciador de circuitos/fábrica do ACX descrito posteriormente neste tópico).

  • Um AcxCircuit pode ter um ou mais fluxos.

  • Um AcxCircuit tem uma fila WDF dedicada. Para obter mais informações sobre filas WDF, consulte Objetos de fila de estrutura.

As DDIs para circuitos ACX são descritas no cabeçalho acxcircuit.h.

Pino ACX

Assim como nos drivers de áudio Portcls de WDM e o objeto AcxPin representam as conexões lógicas (não as conexões físicas) através das quais os fluxos de dados entram no adaptador a partir do barramento de comunicações do sistema ou a partir do adaptador.

As DDIs para pino são descritas no cabeçalho acxpin.h.

ACX Stream

Um AcxStream representa um fluxo de áudio no hardware de um circuito específico. Um AcxStream pode agregar um ou mais objetos do tipo AcxElements. Por padrão, os AcxElements são "conectados" na mesma ordem de montagem. Um AcxStream está associado a apenas um circuito ACX.

  • Um AcxStream tem uma fila WDF dedicada. Para obter mais informações sobre filas WDF, consulte Objetos de fila de estrutura.
  • Um AcxStream suporta diferentes estados. Esses estados indicam quando o áudio está fluindo (estado RUN) ou não (estado PAUSE ou STOP).
  • Atualmente, o ACX oferece suporte a dois tipos de fluxos: objetos de fluxo ACX básicos usados por circuitos que não são de streaming e objetos de fluxo ACX RT usados por circuitos de streaming.

As DDIs para fluxo são definidas no cabeçalho acxstreams.h.

Destinos ACX

WdfIoTarget é uma abstração WDF para facilitar a comunicação entre duas pilhas diferentes. Para obter mais informações sobre destinos de E/S do WDF, consulte Introdução aos destinos de E/S.

  • Os drivers usam AcxTargetCircuit para se comunicar com um circuito remoto exposto por uma pilha diferente. AcxTargetCircuit é implementado usando um WdfIoTarget.
  • Os drivers usam AcxTargetPin para se comunicar com o pino de um circuito remoto exposto por uma pilha diferente. AcxTargetPin é implementado usando WdfIoTarget para enviar mensagens para a entidade de pino remoto.
  • Os drivers usam AcxTargetElement para se comunicar com o elemento de um circuito remoto exposto por uma pilha diferente. AcxTargetElement é implementado usando um WdfIoTarget para enviar mensagens para a entidade de elemento remoto.
  • Os drivers usam AcxTargetStream para se comunicar com o fluxo de um circuito remoto exposto por uma pilha diferente. AcxTargetStream é implementado usando um WdfIoTarget para criar um fluxo remoto e alterar o estado do fluxo remoto.
  • Os drivers usam AcxTargetFactoryCircuit para se comunicar com uma instância de fábrica de circuito remoto. AcxTargetFactoryCircuit é implementado usando um WdfTarget para enviar mensagens para a fábrica de circuitos remotos.

Cada um dos tipos de ACX acima oferece suporte a propriedades, métodos e eventos para interagir com o circuito remoto. Todos esses tipos são criados com base no objeto WdfIoTarget.

As DDIs para destinos são definidas no cabeçalho acxtargets.h.

Ponte de fluxo ACX

O objeto AcxStreamBridge é usado por um circuito para propagar a criação de um fluxo, transições de estados do fluxo e configurações de DRM entre segmentos de circuito. Esse objeto só é usado em um cenário de circuito múltiplo (composição de áudio). Um driver pode associar um ou mais objetos ACXSTREAMBRIDGE a um pino de ponte. Um pino de ponte é o ACXPIN que se conecta logicamente ao ACXPIN correspondente no outro circuito.

As DDIs para fluxo são definidas no cabeçalho acxstreams.h.

Exemplo de layout de circuito de nó do mecanismo de áudio ACX

O diagrama a seguir ilustra um circuito ACX. Os pinos de host e descarregamento são entradas para o circuito com um pino de loopback que pode ser usado para cancelamento de eco. A saída pode ser um pino de ponte que roteia para um alto-falante.

Diagrama ilustrando um circuito ACX com pinos de host, descarregamento e loopback à esquerda e um pino de ponte à direita, roteado através um nó de mecanismo de áudio.

O driver não precisa executar a etapa de conexão explícita quando o circuito/elementos estão conectados na mesma ordem em que foram adicionados ao circuito.

Por padrão, o ACX conecta os elementos começando com o pino do coletor de solicitações ACX do circuito e terminando com o pino de ponte do dispositivo do circuito para dispositivos de renderização e captura.

Gerenciador de ACX

O gerenciador ACX é usado para tarefas do sistema, como suporte a pontos de extremidade de áudio composto. Esses tipos de pontos de extremidade são gerenciados por uma ou mais pilhas de drivers de fornecedores iguais ou diferentes. Os clientes podem pré-configurar essa configuração na ACPI ou usar a DDI do Gerenciador de ACX diretamente. As DDIs para o Gerenciador de ACX são descritas no cabeçalho acxmanager.h.

Coletor de objetos ACX

O Coletor de objetos ACX é usado para armazenar vários tipos de dados. ACXOBJECTBAG pode ser enviado como argumento em várias DDIs. As DDIs para Coletor de objetos são descritas no cabeçalho acxmisc.h.

Resumo de objetos ACX

A tabela a seguir lista todos os objetos ACX e fornece algumas informações básicas sobre cada objeto.

Handle Nome Finalidade
ACXMANAGER Gerenciador de ACX Objeto do Gerenciador de ACX que é usado para gerenciar e controlar outros objetos.
ACXOBJECTBAG Coletor de objetos Usado para armazenar dados para utilização com objetos.
ACXEVENT Evento ACX Para eventos KS (kernel-streaming).
ACXEVENTDATA Dados de evento Dados de texto associados a um evento.
ACXPNPEVENT Evento Pnp Para eventos de plug-and-play.
ACXCIRCUIT Circuito Um circuito ACX descrito acima neste tópico.
ACXPIN Fixar Um objeto de pino ACX representa as conexões lógicas e é descrito acima neste tópico.
ACXELEMENT Element Usado para representar qualquer elemento que possa ser adicionado a um AcxCircuit ou AcxStream, como AcxVolume
ACXAUDIOENGINE Mecanismo de áudio O mecanismo de áudio ACX que é usado em um circuito de renderização para representar um DSP.
ACXSTREAMAUDIOENGINE Mecanismo de Áudio de Fluxo Usado em um fluxo de renderização para representar um DSP.
ACXKEYWORDSPOTTER Identificador de palavras-chave Um identificador de palavras-chave, usado em um circuito de captura para detecção de palavras-chave em um fluxo de áudio.
ACXVOLUME Volume Usado para representar um volume, ganho, impulso.
ACXMUTE Mute Usado para representar um elemento mudo.
ACXJACK Jack Usado para representar uma tomada de áudio ou outro conector físico.
ACXMICARRAYGEOMETRY Geometria de matrizes de microfone Usado para representar a geometria de matrizes de microfones, como a localização dos microfones.
ACXPEAKMETER Medidor de Pico Usado quando o hardware oferece suporte à funcionalidade de medidor de pico.
ACXSTREAM Stream Usado para representar um fluxo de áudio criado por um circuito, descrito acima neste tópico.
ACXDATAFORMAT Formato de dados Um formato de dados representa um formato de dados suportado pelo dispositivo de áudio.
ACXDATAFORMATLIST Lista de formatos de dados Uma lista de formatos de dados de áudio disponíveis para uso.
ACXTARGETCIRCUIT Circuito de Destino Usado para se comunicar com um circuito remoto exposto por uma pilha diferente.
ACXTARGETPIN Pino de destino Usado para se comunicar com o pino de um circuito remoto exposto por uma pilha diferente.
ACXTARGETELEMENT Elemento Target Usado para representar qualquer elemento de destino que possa ser adicionado a um AcxCircuit ou AcxStream, como AcxVolume
ACXTARGETSTREAM Fluxo de destino Usado para se comunicar com o fluxo de um circuito remoto exposto por uma pilha diferente.
ACXTARGETFACTORYCIRCUIT Fábrica de Circuito de Destino Usado para se comunicar com a fábrica de um circuito remoto.
ACXSTREAMBRIDGE Ponte de fluxo Usado por um circuito para propagar a criação de um fluxo, transições de estados e DRM entre segmentos de circuito.
ACXCOMPOSITE Composto Usado para representar arquiteturas de fluxo de vários circuitos/pilha múltipla/vários fornecedores.
ACXCOMPOSITEFACTORY Fábrica de Áudios Compostos Uma fábrica que cria circuitos de áudio composto.
ACXFACTORYCIRCUIT Circuito de Fábrica Uma fábrica que cria circuitos usando um modelo específico.
ACXCIRCUITMANAGER Gerenciador de Circuitos Um provedor de circuito que é usado para a criação de circuitos dinâmicos.
ACXCOMPOSITETEMPLATE Modelo Composto Um modelo composto representa uma associação de áudio parcial ou completa. Um modelo composto pode ter um ou mais modelos de circuito.
ACXCIRCUITTEMPLATE Modelo de Circuito Um modelo de circuito representa um caminho de áudio parcial.
ACXAUDIOMODULE Módulo de Áudio Para funcionalidade de complemento de terceiros personalizado.

Os seguintes objetos ACX são usados para armazenar informações de circuito, fluxo e fábrica do circuito.

Handle Finalidade
ACXCIRCUIT_INIT Armazena dados de inicialização do circuito ACX
ACXSTREAM_INIT Armazena dados de inicialização de fluxo ACX
ACXFACTORYCIRCUIT_INIT Armazena dados de inicialização usados por uma fábrica de circuitos ACX

Confira também

Visão geral de extensões de classe de áudio ACX

Documentação de referência da ACX