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


Сводка объектов 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 для Pin описаны в заголовочном файле 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 на другом контуре.

Заголовочный файл acxstreams.h содержит описание DDI для Stream.

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

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

Схема, иллюстрирующая ACX с выводами host, offload и loopback слева и выводом моста справа, маршрутизированное через узел аудиосистемы.

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

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

диспетчер ACX

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

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

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

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

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

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

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

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

См. также

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

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