Сводка по объектам 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
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 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по