Share via


PFREE_CONTIGUOUS_DMA_BUFFER fonction de rappel (hdaudio.h)

La FreeContiguousDmaBuffer routine libère une mémoire tampon DMA et une liste de descripteurs de mémoire tampon (BDL) qui ont été allouées par un appel à AllocateContiguousDmaBuffer.

Le type de pointeur de fonction pour une FreeContiguousDmaBuffer routine est défini comme suit.

Syntaxe

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

NTSTATUS PfreeContiguousDmaBuffer(
  [in] PVOID _context,
  [in] HANDLE Handle
)
{...}

Paramètres

[in] _context

Spécifie la valeur de contexte du membre Context de la structure HDAUDIO_BUS_INTERFACE_BDL .

[in] Handle

Gérer l’identification du moteur DMA. Cette valeur de handle a été obtenue à partir d’un appel précédent à AllocateCaptureDmaEngine ou AllocateRenderDmaEngine.

Valeur retournée

FreeContiguousDmaBuffer retourne STATUS_SUCCESS si l’appel réussit. Sinon, la routine retourne un code d’erreur approprié. Le tableau suivant présente certains des codes status de retour possibles.

Code de retour Description
STATUS_UNSUCCESSFUL
Indique que l’appelant est en cours d’exécution à un IRQL trop élevé.
STATUS_INVALID_HANDLE
Indique que la valeur du paramètre handle n’est pas valide.
STATUS_INVALID_DEVICE_REQUEST
Indique que le flux n’est pas à l’état de réinitialisation ou qu’aucune mémoire tampon n’est actuellement allouée pour le moteur DMA.

Remarques

La FreeContiguousDmaBuffer routine est utilisée conjointement avec les routines SetupDmaEngineWithBdl et AllocateContiguousDmaBuffer . Ces trois routines sont disponibles uniquement dans la version HDAUDIO_BUS_INTERFACE_BDL du DDI Audio HD. Cette DDI n’inclut pas les routines AllocateDmaBuffer et FreeDmaBuffer , qui ne sont jamais utilisées conjointement avec AllocateContiguousDmaBuffer, SetupDmaEngineWithBdl et FreeContiguousDmaBuffer. Contrairement à SetupDmaEngineWithBdl, qui configure le moteur DMA pour utiliser une mémoire tampon DMA précédemment allouée, AllocateDmaBuffer alloue une mémoire tampon DMA et configure le moteur DMA pour utiliser la mémoire tampon. Pour plus d’informations, consultez Différences entre les deux versions de DDI.

La routine échoue et retourne le code d’erreur STATUS_INVALID_DEVICE_REQUEST dans l’une des circonstances suivantes :

  • Le client appelle FreeContiguousDmaBuffer quand aucune mémoire tampon n’est actuellement allouée pour le moteur DMA.
  • Le flux est dans un état autre que la réinitialisation.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête hdaudio.h (inclure Hdaudio.h)
IRQL PASSIVE_LEVEL

Voir aussi

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl