PCHANGE_BANDWIDTH_ALLOCATION fonction de rappel (hdaudio.h)

La ChangeBandwidthAllocation routine modifie l’allocation de bande passante d’un moteur DMA sur hd Audio Link.

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

Syntaxe

PCHANGE_BANDWIDTH_ALLOCATION PchangeBandwidthAllocation;

NTSTATUS PchangeBandwidthAllocation(
  [in]  PVOID _context,
  [in]  HANDLE Handle,
  [in]  PHDAUDIO_STREAM_FORMAT StreamFormat,
  [out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}

Paramètres

[in] _context

Spécifie la valeur de contexte du membre Context de la structure HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2 ou 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.

[in] StreamFormat

Spécifie le format de flux demandé. Ce paramètre pointe vers une structure allouée par l’appelant de type HDAUDIO_STREAM_FORMAT qui spécifie un format de données pour le flux.

[out] ConverterFormat

Récupère le format du convertisseur. Ce paramètre pointe vers une structure allouée par l’appelant de type HDAUDIO_CONVERTER_FORMAT dans laquelle la routine écrit le format codé. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

ChangeBandwidthAllocation 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’erreur de retour possibles.

Code de retour Description
STATUS_UNSUCCESSFUL
Indique que l’appelant s’exécute sur un IRQL trop élevé.
STATUS_INVALID_HANDLE
Indique que la valeur du paramètre handle n’est pas valide.
STATUS_INVALID_PARAMETER
Indique que l’une des valeurs de paramètre n’est pas correcte (pointeur incorrect ou format de flux non valide).
STATUS_BUFFER_TOO_SMALL
Indique que le moteur DMA ne peut pas allouer suffisamment de stockage FIFO interne pour prendre en charge le format de flux demandé.
STATUS_INSUFFICIENT_RESOURCES
Indique que la bande passante est insuffisante pour répondre à la demande.
STATUS_INVALID_DEVICE_REQUEST
Indique que le flux n’est pas dans l’état de réinitialisation ou qu’une mémoire tampon est toujours allouée au moteur DMA.

Remarques

L’appelant obtient une allocation initiale de bande passante pour un moteur DMA en appelant AllocateCaptureDmaEngine ou AllocateRenderDmaEngine. Par la suite, l’appelant peut modifier l’allocation de bande passante en appelant ChangeBandwidthAllocation.

Par le biais du paramètre converterFormat , la routine génère une valeur de descripteur de flux que l’appelant peut utiliser pour programmer les convertisseurs d’entrée ou de sortie. La routine encode les informations du paramètre streamFormat dans un entier 16 bits. Pour plus d’informations, consultez HDAUDIO_CONVERTER_FORMAT.

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

  • Aucune mémoire tampon DMA précédemment allouée n’a été libérée (en appelant FreeDmaBuffer ou FreeContiguousDmaBuffer).
  • Le flux est dans un état différent de la réinitialisation.
Si l’appel ChangeBandwidthAllocation échoue, la réservation de bande passante existante reste en vigueur. L’allocation de bande passante change uniquement si l’appel réussit.

Dans Windows Vista et versions ultérieures, un pilote de miniport wave appelle cette routine lors de l’exécution de sa méthode SetFormat (après avoir appelé l’une des routines AllocateXxxDmaEngine dans hd Audio DDI). Pour plus d’informations, consultez IMiniportWavePciStream ::SetFormat.

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

AllocateRenderDmaEngine

FreeContiguousDmaBuffer

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CONVERTER_FORMAT

HDAUDIO_STREAM_FORMAT

IMiniportWavePciStream ::SetFormat