Partager via


HD Audio DDI Routines

Comme expliqué dans Différences entre les versions d’Audio HD DDI, trois versions de hd Audio DDI existent. Ces trois versions de DDI sont définies par les structures HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2 et HDAUDIO_BUS_INTERFACE_BDL .

Les trois versions de DDI sont accessibles uniquement en mode noyau.

Chaque version de DDI permet d’accéder aux ressources matérielles que le contrôleur de bus audio HD gère. Ces ressources incluent les codecs, les moteurs DMA, la bande passante de liaison, les registres de position de liaison et un registre d’horloge murale. Le pilote de bus Audio HD implémente la DDI et expose la DDI à ses enfants. Les enfants sont des instances de pilotes de fonction en mode noyau qui utilisent la DDI pour gérer les codecs matériels connectés au contrôleur audio HD.

Pour obtenir l’accès à une version de DDI, un pilote de fonction doit interroger le pilote de bus Audio HD pour un objet de contexte DDI. Pour plus d’informations, consultez Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE, Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_V2 et Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_BDL.

Chaque routine dans les trois versions de DDI prend un pointeur vers l’objet de contexte comme premier paramètre d’appel.

La structure HDAUDIO_BUS_INTERFACE définit une DDI qui contient les routines suivantes :

AllocateCaptureDmaEngine

AllocateDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

TransferCodecVerbs

UnregisterEventCallback

La structure HDAUDIO_BUS_INTERFACE_V2 est disponible dans Windows Vista et les versions ultérieures de Windows, et définit une DDI qui contient les routines suivantes :

AllocateCaptureDmaEngine

AllocateDmaBuffer

AllocateDmaBufferWithNotification

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeDmaBuffer

FreeDmaBufferWithNotification

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

RegisterNotificationEvent

SetDmaEngineState

TransferCodecVerbs

UnregisterEventCallback

UnregisterNotificationEvent

La version HDAUDIO_BUS_INTERFACE de HD Audio DDI est prise en charge dans Windows Vista et les versions ultérieures de Windows. En outre, une version du pilote de bus Audio HD qui prend en charge cette DDI peut être installée dans Windows 2000, Windows XP et Windows Server 2003.

La structure HDAUDIO_BUS_INTERFACE_BDL définit une DDI qui contient les routines suivantes :

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeContiguousDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

SetupDmaEngineWithBdl

TransferCodecVerbs

UnregisterEventCallback

Une version du pilote de bus Audio HD qui prend en charge la version HDAUDIO_BUS_INTERFACE_BDL de hd Audio DDI peut être installée dans Windows 2000, Windows XP et Windows Server 2003. Toutefois, Windows Vista ne prend pas en charge cette version de DDI.

La plupart des routines dans les deux DDIs sont identiques dans le nom et l’opération. Toutefois, les deux routines suivantes, qui font partie de la version HDAUDIO_BUS_INTERFACE de la DDI, ne sont pas incluses dans la version HDAUDIO_BUS_INTERFACE_BDL :

AllocateDmaBuffer

FreeDmaBuffer

De même, les trois routines suivantes dans la version HDAUDIO_BUS_INTERFACE_BDL de la DDI ne font pas partie de la version HDAUDIO_BUS_INTERFACE :

AllocateContiguousDmaBuffer

FreeContiguousDmaBuffer

SetupDmaEngineWithBdl

Cette section décrit les routines DDI suivantes :

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

ChangeBandwidthAllocation

FreeContiguousDmaBuffer

FreeDmaBuffer

FreeDmaEngine

GetDeviceInformation

GetLinkPositionRegister

GetResourceInformation

GetWallClockRegister

RegisterEventCallback

SetDmaEngineState

SetupDmaEngineWithBdl qui fonctionne avec PHDAUDIO_BDL_ISR

TransferCodecVerbs

UnregisterEventCallback

La liste précédente contient toutes les routines qui apparaissent dans l’une ou l’autre des versions de la DDI.