PFREE_CONTIGUOUS_DMA_BUFFER Rückruffunktion (hdaudio.h)

Die FreeContiguousDmaBuffer Routine gibt einen DMA-Puffer und eine Pufferdeskriptorliste (BDL) frei, die durch einen Aufruf von AllocateContiguousDmaBuffer zugeordnet wurden.

Der Funktionszeigertyp für eine FreeContiguousDmaBuffer Routine ist wie folgt definiert.

Syntax

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

NTSTATUS PfreeContiguousDmaBuffer(
  [in] PVOID _context,
  [in] HANDLE Handle
)
{...}

Parameter

[in] _context

Gibt den Kontextwert aus dem Kontextelement der HDAUDIO_BUS_INTERFACE_BDL-Struktur an.

[in] Handle

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

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_UNSUCCESSFUL
Gibt an, dass der Aufrufer in einem zu hohen IRQL-Wert ausgeführt wird.
STATUS_INVALID_HANDLE
Gibt an, dass der Handle-Parameterwert ungültig ist.
STATUS_INVALID_DEVICE_REQUEST
Gibt an, dass sich der Stream nicht im Zurücksetzungszustand befindet oder dass derzeit kein Puffer für die DMA-Engine zugeordnet ist.

Hinweise

Die FreeContiguousDmaBuffer Routine wird in Verbindung mit den Routinen SetupDmaEngineWithBdl und AllocateContiguousDmaBuffer verwendet. Diese drei Routinen sind nur in der HDAUDIO_BUS_INTERFACE_BDL Version des HD Audio DDI verfügbar. Dieser DDI enthält nicht die Routinen AllocateDmaBuffer und FreeDmaBuffer , die nie in Verbindung mit AllocateContiguousDmaBuffer, SetupDmaEngineWithBdl und FreeContiguousDmaBufferverwendet werden. Im Gegensatz zu SetupDmaEngineWithBdl, das die DMA-Engine für die Verwendung eines zuvor zugeordneten DMA-Puffers konfiguriert, weist AllocateDmaBuffer sowohl einen DMA-Puffer zu und konfiguriert die DMA-Engine für die Verwendung des Puffers. Weitere Informationen finden Sie unter Unterschiede zwischen den beiden DDI-Versionen.

Die Routine schlägt fehl und gibt den Fehlercode STATUS_INVALID_DEVICE_REQUEST in einem der folgenden Situationen zurück:

  • Der Client ruft auf FreeContiguousDmaBuffer , wenn derzeit kein Puffer für die DMA-Engine zugeordnet ist.
  • Der Stream befindet sich in einem anderen Zustand als "Zurücksetzen".

Anforderungen

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

Weitere Informationen

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl