Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе представлена сводка по объектам расширений класса аудио (ACX), которые образуют основу звукового драйвера ACX высокого уровня. Общие сведения об ACX см. в расширениях аудиоклассов ACX.
Объекты ACX — это объекты Windows Driver Framework (WDF) — WDFOBJECT. Дополнительные сведения о WDF см. в разделе "Общие сведения о объектах Платформы". Сводка по объектам WDF см. в сводке объектов Framework.
Иерархия объектов ACX
В ACX (как и в WDF), объект драйвера является корневым объектом, а все остальные объекты являются дочерними или потомками. Все объекты ACX являются дочерними объектами объекта драйвера напрямую или косвенно через другие объекты ACX или WDF. Драйвер ACX может указать родительский элемент объекта ACX во время создания. Если родительский элемент не указан, 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 подключает элементы, начиная с контакта для приема запроса 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