PCHANGE_BANDWIDTH_ALLOCATION Rückruffunktion (hdaudio.h)

Die ChangeBandwidthAllocation Routine ändert die Bandbreitenzuordnung einer DMA-Engine auf dem HD Audio Link.

Der Funktionszeigertyp für eine ChangeBandwidthAllocation Routine wird wie folgt definiert.

Syntax

PCHANGE_BANDWIDTH_ALLOCATION PchangeBandwidthAllocation;

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

Parameter

[in] _context

Gibt den Kontextwert aus dem Kontextelement der HDAUDIO_BUS_INTERFACE-, HDAUDIO_BUS_INTERFACE_V2- oder HDAUDIO_BUS_INTERFACE_BDL-Struktur an.

[in] Handle

Behandeln Sie die Identifizierung der DMA-Engine. Dieser Handle-Wert wurde aus einem vorherigen Aufruf von AllocateCaptureDmaEngine oder AllocateRenderDmaEngine abgerufen.

[in] StreamFormat

Gibt das angeforderte Streamformat an. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene Struktur vom Typ HDAUDIO_STREAM_FORMAT , die ein Datenformat für den Stream angibt.

[out] ConverterFormat

Ruft das Konverterformat ab. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene Struktur vom Typ HDAUDIO_CONVERTER_FORMAT in die die Routine das codierte Format schreibt. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

ChangeBandwidthAllocation gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls gibt die Routine einen entsprechenden Fehlercode zurück. In der folgenden Tabelle sind einige der möglichen Rückgabefehlercodes aufgeführt.

Rückgabecode Beschreibung
STATUS_UNSUCCESSFUL
Gibt an, dass der Aufrufer bei einer zu hohen IRQL ausgeführt wird.
STATUS_INVALID_HANDLE
Gibt an, dass der Wert des Handle-Parameters ungültig ist.
STATUS_INVALID_PARAMETER
Gibt an, dass einer der Parameterwerte nicht korrekt ist (fehlerhafter Zeiger oder ungültiges Streamformat).
STATUS_BUFFER_TOO_SMALL
Gibt an, dass die DMA-Engine nicht genügend internen FIFO-Speicher zuweisen kann, um das angeforderte Streamformat zu unterstützen.
STATUS_INSUFFICIENT_RESOURCES
Gibt an, dass nicht genügend Bandbreite zur Erfüllung der Anforderung verfügbar ist.
STATUS_INVALID_DEVICE_REQUEST
Gibt an, dass sich der Stream nicht im Zurücksetzungszustand befindet oder dass weiterhin ein Puffer für die DMA-Engine zugewiesen ist.

Hinweise

Der Aufrufer ruft eine anfängliche Bandbreitenzuordnung für eine DMA-Engine ab, indem er AllocateCaptureDmaEngine oder AllocateRenderDmaEngine aufruft. Anschließend kann der Aufrufer die Bandbreitenzuordnung ändern, indem er aufruft ChangeBandwidthAllocation.

Über den parameter converterFormat gibt die Routine einen Streamdeskriptorwert aus, den der Aufrufer zum Programmieren der Eingabe- oder Ausgabekonverter verwenden kann. Die Routine codiert die Informationen aus dem streamFormat-Parameter in eine 16-Bit-Ganzzahl. Weitere Informationen finden Sie unter HDAUDIO_CONVERTER_FORMAT.

Diese Routine schlägt fehl und gibt fehlercode STATUS_INVALID_DEVICE_REQUEST unter den folgenden Umständen zurück:

  • Alle zuvor zugewiesenen DMA-Puffer wurden nicht freigegeben (durch Aufrufen von FreeDmaBuffer oder FreeContiguousDmaBuffer).
  • Der Stream befindet sich in einem anderen Zustand als reset.
Wenn der ChangeBandwidthAllocation Anruf fehlschlägt, bleibt die vorhandene Bandbreitenreservierung wirksam. Die Bandbreitenzuordnung ändert sich nur, wenn der Aufruf erfolgreich ist.

In Windows Vista und höher ruft ein Wave-Miniporttreiber diese Routine während der Ausführung seiner SetFormat-Methode auf (nach dem Aufruf einer der AllocateXxxDmaEngine-Routinen im HD Audio DDI). Weitere Informationen finden Sie unter IMiniportWavePciStream::SetFormat.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile hdaudio.h (einschließlich Hdaudio.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

AllocateCaptureDmaEngine

AllocateRenderDmaEngine

FreeContiguousDmaBuffer

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CONVERTER_FORMAT

HDAUDIO_STREAM_FORMAT

IMiniportWavePciStream::SetFormat