Сводка объектов ACX
В этом разделе представлена сводка по объектам аудиоклассов (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 для пин-кода описаны в заголовке 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 используется для системных задач, таких как поддержка составных конечных точек звука. Эти типы конечных точек управляются одним или несколькими стеками драйверов от одного или разных поставщиков. Клиенты могут предварительно настроить эту конфигурацию в 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 |