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


Процедуры DDI для HD Audio

Как описано в разделе Различия между версиями HD Audio DDI, существуют три версии HD Audio DDI. Эти три версии DDI определяются структурами HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2 и HDAUDIO_BUS_INTERFACE_BDL .

Три версии DDI доступны только в режиме ядра.

Каждая версия DDI предоставляет доступ к аппаратным ресурсам, которыми управляет контроллер шины HD Audio. К этим ресурсам относятся кодеки, подсистемы DMA, пропускная способность канала, регистры позиций ссылок и регистр настенных часов. Драйвер шины HD Audio реализует DDI и предоставляет его дочерним элементам. Дочерние элементы — это экземпляры драйверов функций режима ядра, которые используют DDI для управления аппаратными кодеками, подключенными к контроллеру HD Audio.

Чтобы получить доступ к версии DDI, драйвер функции должен запросить у драйвера шины HD Audio объект контекста DDI. Дополнительные сведения см. в разделах Получение объекта HDAUDIO_BUS_INTERFACE DDI, Получение объекта HDAUDIO_BUS_INTERFACE_V2 DDI и Получение HDAUDIO_BUS_INTERFACE_BDL объекта DDI.

Каждая подпрограмма в трех версиях DDI принимает указатель на объект контекста в качестве первого параметра вызова.

Структура HDAUDIO_BUS_INTERFACE определяет DDI, содержащий следующие подпрограммы:

AllocateCaptureDmaEngine

AllocateDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

TransferCodecVerbs

UnregisterEventCallback

Структура HDAUDIO_BUS_INTERFACE_V2 доступна в Windows Vista и более поздних версиях Windows и определяет DDI, которая содержит следующие процедуры:

AllocateCaptureDmaEngine

AllocateDmaBuffer

AllocateDmaBufferWithNotification

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeDmaBuffer

FreeDmaBufferWithNotification

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

RegisterNotificationEvent

SetDmaEngineState

TransferCodecVerbs

UnregisterEventCallback

UnregisterNotificationEvent

HDAUDIO_BUS_INTERFACE версия HD Audio DDI поддерживается в Windows Vista и более поздних версиях Windows. Кроме того, в Windows 2000, Windows XP и Windows Server 2003 можно установить версию драйвера шины HD Audio, которая поддерживает этот DDI.

Структура HDAUDIO_BUS_INTERFACE_BDL определяет DDI, содержащий следующие подпрограммы:

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeContiguousDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

SetupDmaEngineWithBdl

TransferCodecVerbs

UnregisterEventCallback

Версию драйвера шины HD Audio, которая поддерживает HDAUDIO_BUS_INTERFACE_BDL версию HD Audio DDI, можно установить в Windows 2000, Windows XP и Windows Server 2003. Однако Windows Vista не поддерживает эту версию DDI.

Большинство процедур в двух DDIs идентичны как по имени, так и по операции. Однако следующие две подпрограммы, которые являются частью HDAUDIO_BUS_INTERFACE версии DDI, не включены в версию HDAUDIO_BUS_INTERFACE_BDL:

AllocateDmaBuffer

FreeDmaBuffer

Аналогичным образом следующие три подпрограммы в HDAUDIO_BUS_INTERFACE_BDL версии DDI не являются частью HDAUDIO_BUS_INTERFACE версии:

AllocateContiguousDmaBuffer

FreeContiguousDmaBuffer

SetupDmaEngineWithBdl

В этом разделе описываются следующие процедуры DDI:

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeContiguousDmaBuffer

FreeDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

SetupDmaEngineWithBdl , который работает с PHDAUDIO_BDL_ISR

TransferCodecVerbs

UnregisterEventCallback

Предыдущий список содержит все подпрограммы, которые отображаются в любой или обеих версиях DDI.