HD 音频 DDI 例程

如 HD 音频 DDI 版本之间的差异中说明,存在三个版本的 HD 音频 DDI。 这三个 DDI 版本由 HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2 和 HDAUDIO_BUS_INTERFACE_BDL 定义。

这三个 DDI 版本只能在内核模式下访问。

每个 DDI 版本都提供对 HD 音频总线控制器管理的硬件资源的访问权限。 这些资源包括编解码器、DMA 引擎、链接带宽、链接位置寄存器和时钟寄存器。 HD 音频总线驱动程序实现 DDI,并公开 DDI 的子项。 子级是内核模式函数驱动程序的实例,这些驱动程序使用 DDI 来管理连接到 HD 音频控制器的硬件编解码器。

若要获取对 DDI 版本的访问权限,函数驱动程序必须查询 HD 音频总线驱动程序以获取 DDI 上下文对象。 有关详细信息,请参阅 获取 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在 Vista Windows及更高版本的 Windows 中可用,它定义了包含以下例程的 DDI:

AllocateCaptureDmaEngine

AllocateDmaBuffer

AllocateDmaBufferWithNotification

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeDmaBuffer

FreeDmaBufferWithNotification

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

RegisterNotificationEvent

SetDmaEngineState

TransferCodecVerbs

UnregisterEventCallback

UnregisterNotificationEvent

HDAUDIO_BUS_INTERFACE Vista 和更高版本的 Windows 支持 HD 音频 DDI 的 Windows。 此外,可以在 Windows 2000、Windows XP 和 Windows Server 2003 中安装支持此 DDI 的 HD 音频总线驱动程序版本。

此HDAUDIO_BUS_INTERFACE_BDL定义包含以下例程的 DDI:

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeContiguousDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

SetupDmaEngineWithBdl

TransferCodecVerbs

UnregisterEventCallback

可在 Windows 2000、Windows XP 和 Windows Server 2003 中安装支持 hd Audio DDI HDAUDIO_BUS_INTERFACE_BDL 版本的 HD 音频总线驱动程序版本。 但是,Windows Vista 不支持此 DDI 版本。

这两个 DDIS 中的大多数例程在名称和操作上是相同的。 但是,以下两个例程(HDAUDIO_BUS_INTERFACE DDI 的一部分)不包含在 HDAUDIO_BUS_INTERFACE_BDL 版本中:

AllocateDmaBuffer

FreeDmaBuffer

同样,DDI HDAUDIO_BUS_INTERFACE_BDL中的以下三个例程不是该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 的任一版本或两个版本中显示的所有例程。