Различия между версиями DDI для HD Audio

Hd Audio DDI доступен в трех немного разных версиях, которые определены следующим образом:

  • Базовая версия HD Audio DDI, определяемая структурой HDAUDIO_BUS_INTERFACE . Большинству драйверов функций для аудио- и модемных кодеков требуются только те возможности, которые предоставляет эта версия DDI. Эта версия доступна через драйверы шины HD Audio, которые предоставляются в Windows XP и Windows Vista.

  • Расширенная версия HD Audio DDI, определяемая структурой HDAUDIO_BUS_INTERFACE_V2 . Эта версия DDI предоставляет дополнительные возможности, необходимые для гибкой поддержки уведомлений о событиях на основе DMA. Он доступен в Windows Vista и более поздних версиях Windows.

  • Измененная версия HD Audio DDI, определяемая структурой HDAUDIO_BUS_INTERFACE_BDL . Эта версия соответствует требованиям относительно небольшого числа драйверов аудио и модема, которые должны иметь дополнительный контроль над настройкой списков дескрипторов буфера (BDL) для операций DMA. Эта версия DDI доступна для Windows XP и более поздних версий Windows. Однако вместо этого используйте версию HDAUDIO_BUS_INTERFACE или HDAUDIO_BUS_INTERFACE_V2 DDI. .

Во всех трех структурах имена и типы первых пяти элементов соответствуют именам пяти членов структуры INTERFACE . Сведения о значениях этих элементов см. в разделах Получение объекта HDAUDIO_BUS_INTERFACE DDI, Получение объекта HDAUDIO_BUS_INTERFACE_V2 DDI или Получение объекта HDAUDIO_BUS_INTERFACE_BDL DDI.

Подпрограммы в трех версиях HD Audio DDI выполняют следующие задачи:

  • Перенесите команды в кодеки и получите ответы на эти команды.

  • Выделение и настройка подсистем DMA для передачи данных в потоках отрисовки и записи.

  • Измените состояние потока одного или нескольких обработчиков DMA на запущено, приостановлено, остановлено или сброшено.

  • Зарезервируйте пропускную способность канала для потоков отрисовки и записи.

  • Предоставьте прямой доступ к регистру настенных часов и регистрам положения ссылок.

  • Уведомлять клиентов о нежелательных ответах от кодеков.

  • Регистрируйте события ядра, чтобы они могли получать уведомления о ходе выполнения DMA.

HDAUDIO_BUS_INTERFACE и HDAUDIO_BUS_INTERFACE_BDL версии DDI имеют следующие отличия.

Когда клиент вызывает подпрограмму AllocateDmaBuffer в первой версии DDI, драйвер шины HD Audio:

  • Выделяет буфер DMA и BDL для подсистемы DMA.

  • Инициализирует BDL.

  • Настраивает подсистему DMA для использования буфера и BDL.

В отличие от этого, подпрограмма AllocateContiguousDmaBuffer во второй версии DDI выделяет хранилище для буфера DMA и BDL, но использует вызывающий объект для инициализации BDL. Подпрограмма SetupDmaEngineWithBdl настраивает подсистему DMA для использования буфера и инициализированного вызывающего метода BDL.

BDL содержит список блоков физической памяти в очереди точечной и сборной подсистемы DMA. Вызвав SetupDmaEngineWithBdl для настройки BDL, клиент может указать точки в потоке данных, в которых обработчик DMA создает прерывания. Клиент делает это, задав бит прерывания при завершении (IOC) в выбранных записях BDL. С помощью этой возможности клиент может точно управлять временем прерываний IOC, которые происходят во время обработки аудиопотока. Драйверы аудиомодумов также используют вторую версию DDI для получения точной информации о системных часах.

Дополнительные сведения см. в спецификации Intel High Definition Audio.

Однако почти все клиенты будут использовать HDAUDIO_BUS_INTERFACE версию DDI. Только несколько клиентов, которым требуется точный контроль над временем прерываний, будут использовать версию HDAUDIO_BUS_INTERFACE_BDL.