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 |
---|---|
|
Gibt an, dass der Aufrufer bei einer zu hohen IRQL ausgeführt wird. |
|
Gibt an, dass der Wert des Handle-Parameters ungültig ist. |
|
Gibt an, dass einer der Parameterwerte nicht korrekt ist (fehlerhafter Zeiger oder ungültiges Streamformat). |
|
Gibt an, dass die DMA-Engine nicht genügend internen FIFO-Speicher zuweisen kann, um das angeforderte Streamformat zu unterstützen. |
|
Gibt an, dass nicht genügend Bandbreite zur Erfüllung der Anforderung verfügbar ist. |
|
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.
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 |