Partager via


PCHANGE_BANDWIDTH_ALLOCATION fonction de rappel (hdaudio.h)

La routine ChangeBandwidthAllocation modifie l’allocation de bande passante d’un moteur DMA sur le lien audio HD.

Le type de pointeur de fonction pour une routine ChangeBandwidthAllocation 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_V2ou 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 encodé. Pour plus d’informations, consultez la section Remarques suivante.

Valeur de retour

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.

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_PARAMETER
Indique qu’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 insuffisante est disponible pour satisfaire 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 pour le moteur DMA.

Remarques

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

Grâce au 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 en 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 :

  • Toute mémoire tampon DMA précédemment allouée n’a pas été libérée (en appelant FreeDmaBuffer ou FreeContiguousDmaBuffer).
  • Le flux est dans un état autre que 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 miniport wave appelle cette routine pendant l’exécution de sa méthode SetFormat (après avoir appelé l’une des routines AllocateXxxDmaEngine dans le DDI audio HD). Pour plus d’informations, consultez IMiniportWavePciStream ::SetFormat.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête hdaudio.h (include 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