Поделиться через


Сводка объектов ACX

В этом разделе представлена сводка по объектам аудиоклассов (ACX), которые образуют основу звукового драйвера ACX. Общие сведения о расширениях класса ACX см. в разделе "Общие сведения о расширениях аудиофайла ACX".

Объекты ACX — это объекты Windows Driver Framework (WDF) — WDFOBJECT. Дополнительные сведения о WDF см. в разделе "Общие сведения о объектах Платформы". Сводка по объектам WDF см. в сводке объектов Framework.

Иерархия объектов ACX

В ACX (как и в WDF), объект драйвера является корневым объектом, а все остальные объекты являются дочерними или потомками. Все объекты ACX являются дочерними объектами объекта драйвера напрямую или косвенно через другие объекты ACX или WDF. Драйвер ACX может указать родительский элемент объекта ACX во время создания. Если родительский элемент не указан, ACX использует родительский элемент по умолчанию, как описано в этих разделах.

Схема, иллюстрирующая иерархию объектов ACX с WDFDEVICE в верхней части и основных объектах ACX, таких как канал и поток ниже.

Создание объектов WDF без ACX

Помимо объектов ACX, звуковой драйвер может создавать и использовать другие объекты WDF по мере необходимости. Если драйвер планирует перечислить устройства, отличные от ACX, он должен сделать это с помощью другого дочернего списка, отличного от дочернего списка WDF по умолчанию, созданного при создании устройства ACX/WDF. Драйвер может создать новый дочерний список WDF с помощью WdfChildListCreate , как описано в разделе "Создание объектов устройств в драйвере функций". Общие сведения о объектах WDF см. в разделе "Общие сведения о объектах Платформы", архитектуре WDF и разработке драйверов с помощью Windows Driver Foundation. Сведения об инициализации устройства ACX см. в статье AcxDeviceInitialize.

Канал ACX

AcxCircuit представляет частичный или полный звуковой путь для пользователя, воспринимаемого звуковым устройством (динамики, микрофон и т. д.). AcxCircuit имеет по крайней мере один входной пин-код и один выходной пин-код (ACXPIN), и он может агрегировать один или несколько объектов AcxElements, таких как объекты. По умолчанию AcxElements подключены в том же порядке сборки.

Звуковой канал является основным стандартным блоком ACX. В новой платформе ACX звуковой драйвер создает один или несколько объектов канала ACX, чтобы представить частичный или полный путь к звуковым данным или элементу управления. ACX объединяет эти объекты канала ACX, чтобы создать полный звуковой путь, представляющий конечную точку звука. ACX отвечает за управление каналами ACX и их зависимостями. Порядок сборки этих каналов может быть статически определен во время инициализации или динамически определен во время выполнения.

Конечная точка звука в платформах ACX — это коллекция одного или нескольких каналов ACX. Каждый канал ACX в звуковом пути с несколькими каналами должен принадлежать другому стеку устройств PnP. Драйвер ACX может создавать один или несколько каналов во время инициализации или создавать каналы во время выполнения, как побочный эффект внешнего события, например после обнаружения нового звукового компонента или потому, что он зарегистрировал себя в ACX в качестве фабрики для определенного типа канала, и платформа ACX попросила компонент фабрики создать новый канал этого типа (см. инструкцию диспетчера каналов ИЛИ фабрики ACX, описанную далее в этом разделе).

  • AcxCircuit может иметь один или несколько потоков.

  • AcxCircuit имеет выделенную очередь WDF. Дополнительные сведения о очередях WDF см. в разделе "Объекты очередей Платформы".

DDIs для каналов ACX описаны в заголовке acxcircuit.h .

Закрепление ACX

Так же, как и в звуковых драйверах WDM Portcls, а объект AcxPin представляет логические подключения (а не физические подключения), через которые потоки данных входят в адаптер из шины связи системы или введите системную шину связи из адаптера.

DDIs для пин-кода описаны в заголовке acxpin.h .

ПОТОК ACX

AcxStream представляет аудиопоток на оборудовании определенного канала. AcxStream может агрегировать один или несколько объектов AcxElements, таких как. По умолчанию AcxElements подключены в том же порядке сборки. AcxStream связан только с одним каналом ACX.

  • AcxStream имеет выделенную очередь WDF. Дополнительные сведения о очередях WDF см. в разделе "Объекты очередей Платформы"
  • AcxStream поддерживает различные состояния. Эти состояния указывают, когда поток звука (состояние RUN) или не выполняется (состояние PAUSE или STOP).
  • В настоящее время ACX поддерживает два типа потоков: базовые объекты потока ACX, используемые непотоковых каналов, и объекты потока ACX RT, используемые каналами потоковой передачи.

DDIs для потока определяются в заголовке acxstreams.h .

Целевые объекты ACX

WdfIoTarget — это абстракция WDF для упрощения взаимодействия между двумя разными стеками. Дополнительные сведения о целевых объектах ввода-вывода WDF см. в разделе "Общие сведения о целевых объектах ввода-вывода".

  • Драйверы используют AcxTargetCircuit для взаимодействия с удаленным каналом, предоставляемым другим стеком. AcxTargetCircuit реализуется с помощью WdfIoTarget.
  • Драйверы используют AcxTargetPin для взаимодействия с закреплением удаленного канала, предоставляемым другим стеком. AcxTargetPin реализуется с помощью WdfIoTarget для отправки сообщений в сущность удаленного пин-кода.
  • Драйверы используют AcxTargetElement для взаимодействия с элементом удаленного канала, предоставляемым другим стеком. AcxTargetElement реализуется с помощью WdfIoTarget для отправки сообщений в сущность удаленного элемента.
  • Драйверы используют AcxTargetStream для взаимодействия с потоком удаленного канала, предоставляемым другим стеком. AcxTargetStream реализуется с помощью WdfIoTarget для создания удаленного потока и изменения состояния удаленного потока.
  • Драйверы используют AcxTargetFactoryCircuit для взаимодействия с экземпляром фабрики удаленных каналов. AcxTargetFactoryCircuit реализуется с помощью WdfTarget для отправки сообщений в фабрику удаленных каналов.

Каждый из указанных выше типов ACX поддерживает свойства, методы и события для взаимодействия с удаленным каналом. Все эти типы основаны на объекте WdfIoTarget.

DDIs для целевых объектов определяются в заголовке acxtargets.h .

Мост потоковой передачи ACX

Объект AcxStreamBridge используется каналом для распространения создания потока, перехода состояний потока и параметров DRM между сегментами каналов. Этот объект используется только в сценарии с несколькими каналами (аудио составной). Драйвер может связать один или несколько объектов ACXSTREAMBRIDGE с закреплением моста. Закрепление моста — это ACXPIN, который логически подключается к соответствующему ACXPIN на другом канале.

DDIs для Stream описаны в заголовке acxstreams.h .

Пример макета канала узла звукового модуля ACX

На следующей схеме показан канал ACX. Узлы и выгрузки являются входными данными в канал с закреплением петли, который можно использовать для отмены эхо. Выходные данные могут быть мостом, который направляется на динамик.

Схема, иллюстрирующая канал ACX с узлами, разгрузками и петлями слева, а также закрепление моста справа, перенаправленное через узел звукового модуля.

Обратите внимание, что драйверу не нужно выполнять шаг явного подключения при подключении канала или элементов в том же порядке, что и в канал.

По умолчанию ACX подключает элементы, начиная с пин-кода приемника запроса ACX канала и заканчивая закреплением моста устройства канала для устройств отрисовки и записи устройств.

ДИСПЕТЧЕР ACX

Диспетчер ACX используется для системных задач, таких как поддержка составных конечных точек звука. Эти типы конечных точек управляются одним или несколькими стеками драйверов от одного или разных поставщиков. Клиенты могут предварительно настроить эту конфигурацию в ACPI или напрямую использовать DDI диспетчера ACX. DDIs для диспетчера ACX описаны в заголовке acxmanager.h .

Контейнер объектов ACX

Контейнер объектов ACX используется для хранения различных типов данных. ACXOBJECTBAG можно передать в качестве аргумента в различных DDIs. DDIs для контейнера объектов описаны в заголовке acxmisc.h .

Сводка по объекту ACX

В следующей таблице перечислены все объекты ACX и приведены некоторые основные сведения о каждом объекте.

Handle Имя. Характер использования
ACXMANAGER Диспетчер ACX Объект ACX Manager, используемый для управления другими объектами и управления ими.
ACXOBJECTBAG Контейнер объектов Используется для хранения данных для использования с объектами.
ACXEVENT Событие ACX Для событий KS (ядро-потоковая передача).
ACXEVENTDATA Данные события Данные, связанные с событием.
ACXPNPEVENT Событие Pnp Для событий подключаемого модуля и воспроизведения.
ACXCIRCUIT ExpressRoute Канал ACX, описанный выше в этом разделе.
ACXPIN Закрепить Объект пин-кода ACX представляет логические подключения и описан выше в этом разделе.
ACXELEMENT Элемент Используется для представления любого элемента, который можно добавить в AcxCircuit или AcxStream, например AcxVolume
ACXAUDIOENGINE Звуковой модуль Звуковой модуль ACX, используемый в канале отрисовки для представления DSP.
ACXSTREAMAUDIOENGINE Модуль потоковой передачи звука Используется в потоке отрисовки для представления DSP.
ACXKEYWORDSPOTTER Ключевое слово пятно Точечный элемент ключевого слова, используемый в канале записи для обнаружения ключевых слов в звуковом потоке.
ACXVOLUME Громкость Используется для представления тома, увеличения, повышения.
ACXMUTE Выключить звук Используется для представления элемента отключения звука.
ACXJACK Jack Используется для представления звукового разъема или другого физического соединителя.
ACXMICARRAYGEOMETRY Геометрия массива микрофонов Используется для представления геометрии массива микрофонов, например расположения микрофонов.
ACXPEAKMETER Пиковая метрика Используется, когда оборудование поддерживает функции пикового измерения.
ACXSTREAM Stream Используется для представления аудиопотока, созданного каналом, описанным выше в этом разделе.
ACXDATAFORMAT Формат данных Формат данных представляет формат данных, поддерживаемый звуковым устройством.
ACXDATAFORMATLIST Список форматов данных Список форматов звуковых данных, доступных для использования.
ACXTARGETCIRCUIT Целевой канал Используется для взаимодействия с удаленным каналом, предоставляемым другим стеком.
ACXTARGETPIN Целевой пин-код Используется для взаимодействия с закреплением удаленного канала, предоставляемым другим стеком.
ACXTARGETELEMENT Target, элемент Используется для представления целевого элемента, который можно добавить в AcxCircuit или AcxStream, например AcxVolume
ACXTARGETSTREAM Целевой поток Используется для взаимодействия с потоком удаленного канала, предоставляемым другим стеком.
ACXTARGETFACTORYCIRCUIT Целевая фабрика каналов Используется для взаимодействия с фабрикой удаленного канала.
ACXSTREAMBRIDGE Мост потоковой передачи Используется каналом для распространения создания потока, переходов состояний и аварийного восстановления между сегментами каналов.
ACXCOMPOSITE Составной Используется для представления архитектур потоков потоков с несколькими каналами и несколькими поставщиками.
ACXCOMPOSITEFACTORY Составная фабрика Фабрика, создающая составные звуковые каналы.
ACXFACTORYCIRCUIT Канал фабрики Фабрика, которая создает каналы с помощью определенного шаблона.
ACXCIRCUITMANAGER Диспетчер каналов Поставщик каналов, используемый для динамического создания канала.
ACXCOMPOSITETEMPLATE Составной шаблон Составной шаблон представляет частичную или полную звуковую привязку. Составной шаблон может иметь один или несколько шаблонов каналов.
ACXCIRCUITTEMPLATE Шаблон канала Шаблон канала представляет частичный звуковой путь.
ACXAUDIOMODULE Звуковой модуль Для пользовательских 3-стороннего добавления функций.

Следующие объекты ACX используются для хранения данных канала, потока и фабрики каналов.

Handle Характер использования
ACXCIRCUIT_INIT Хранит данные инициализации канала ACX
ACXSTREAM_INIT Хранит данные инициализации потока ACX
ACXFACTORYCIRCUIT_INIT Хранит данные инициализации, используемые фабрикой каналов ACX

См. также

Общие сведения о расширениях аудиоклассов ACX

Справочная документация по ACX