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 |
---|---|
|
Indique que l’appelant s’exécute sur un IRQL trop élevé. |
|
Indique que la valeur du paramètre handle n’est pas valide. |
|
Indique que l’une des valeurs de paramètre n’est pas correcte (pointeur incorrect ou format de flux non valide). |
|
Indique que le moteur DMA ne peut pas allouer suffisamment de stockage FIFO interne pour prendre en charge le format de flux demandé. |
|
Indique que la bande passante est insuffisante pour répondre à la demande. |
|
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.
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 |