HD Audio DDI Routines
As explained in Differences Between the HD Audio DDI Versions, three versions of the HD Audio DDI exist. These three DDI versions are defined by the HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2, and HDAUDIO_BUS_INTERFACE_BDL structures.
The three DDI versions are accessible only in kernel mode.
Each DDI version provides access to the hardware resources that the HD Audio bus controller manages. These resources include codecs, DMA engines, link bandwidth, link position registers, and a wall clock register. The HD Audio bus driver implements the DDI and exposes the DDI to its children. The children are instances of kernel-mode function drivers that use the DDI to manage the hardware codecs that are connected to the HD Audio controller.
To obtain access to a DDI version, a function driver must query the HD Audio bus driver for a DDI context object. For more information, see Obtaining an HDAUDIO_BUS_INTERFACE DDI Object, Obtaining an HDAUDIO_BUS_INTERFACE_V2 DDI Object, and Obtaining an HDAUDIO_BUS_INTERFACE_BDL DDI Object.
Each routine in the three DDI versions takes a pointer to the context object as its first call parameter.
The HDAUDIO_BUS_INTERFACE structure defines a DDI that contains the following routines:
The HDAUDIO_BUS_INTERFACE_V2 structure is available in Windows Vista and later versions of Windows, and it defines a DDI that contains the following routines:
AllocateDmaBufferWithNotification
The HDAUDIO_BUS_INTERFACE version of the HD Audio DDI is supported in Windows Vista and later versions of Windows. In addition, a version of the HD Audio bus driver that supports this DDI can be installed in Windows 2000, Windows XP, and Windows Server 2003.
The HDAUDIO_BUS_INTERFACE_BDL structure defines a DDI that contains the following routines:
A version of the HD Audio bus driver that supports the HDAUDIO_BUS_INTERFACE_BDL version of the HD Audio DDI can be installed in Windows 2000, Windows XP, and Windows Server 2003. However, Windows Vista provides no support for this DDI version.
Most of the routines in the two DDIs are identical in both name and operation. However, the following two routines, which are part of the HDAUDIO_BUS_INTERFACE version of the DDI, are not included in the HDAUDIO_BUS_INTERFACE_BDL version:
Similarly, the following three routines in the HDAUDIO_BUS_INTERFACE_BDL version of the DDI are not part of the HDAUDIO_BUS_INTERFACE version:
This section describes the following DDI routines:
SetupDmaEngineWithBdl which works with PHDAUDIO_BDL_ISR
The preceding list contains all the routines that appear in either or both versions of the DDI.