Partager via


PFREE_DMA_BUFFER fonction de rappel (hdaudio.h)

La routine FreeDmaBuffer libère une mémoire tampon DMA précédemment allouée par un appel à AllocateDmaBuffer.

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

Syntaxe

PFREE_DMA_BUFFER PfreeDmaBuffer;

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

Paramètres

[in] _context

Spécifie la valeur de contexte du membre Context du HDAUDIO_BUS_INTERFACE ou de la structure HDAUDIO_BUS_INTERFACE_V2.

[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 de retour

FreeDmaBuffer 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 d’état de retour possibles.

Retourner le code 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 de handle n’est pas valide.
STATUS_INVALID_DEVICE_REQUEST
Indique que le flux n’est pas dans l’état de réinitialisation ou qu’aucune mémoire tampon n’est actuellement allouée pour le moteur DMA.

Remarques

La routine FreeDmaBuffer est utilisée conjointement avec la routine AllocateDmaBuffer. Ces deux routines sont disponibles uniquement dans la version HDAUDIO_BUS_INTERFACE de hd audio DDI. Cette DDI n’inclut pas le AllocateContiguousDmaBuffer, SetupDmaEngineWithBdlet FreeContiguousDmaBuffer routines, qui ne sont jamais utilisées conjointement avec AllocateDmaBuffer et FreeDmaBuffer. 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.

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

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

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête hdaudio.h (include Hdaudio.h)
IRQL PASSIVE_LEVEL

Voir aussi

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_V2

SetupDmaEngineWithBdl