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 |
---|---|
|
Indique que l’appelant est en cours d’exécution à un irQL trop élevé. |
|
Indique que la valeur du paramètre de handle n’est pas valide. |
|
Indique qu’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 insuffisante est disponible pour satisfaire 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 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.
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 |