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

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

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

Примечание

Заголовки и библиотеки ACX не включены в WDK 10.0.22621.2428 (выпущен 24 октября 2023 г.), но доступны в предыдущих версиях, а также в последней (сборки серии 25000) Insider Preview WDK. Дополнительные сведения о предварительных версиях WDK см. в разделе Установка предварительных версий пакета драйверов Windows (WDK).

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

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

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

Канал 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 for Pin описаны в заголовке acxpin.h .

ACX Stream

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

  • AcxStream имеет выделенную очередь WDF. Дополнительные сведения об очередях WDF см. в разделе Объекты очередей платформы.
  • AcxStream поддерживает различные состояния. Эти состояния указывают, когда идет звук (состояние ЗАПУСКА) или не течет (состояние 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 Stream

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

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

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

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

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

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

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

ACX Manager

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

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

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

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

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

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

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

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

См. также раздел

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

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