Freigeben über


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 AllocateContiguousDmaBufferzugeordnet wurden.

Der Funktionszeigertyp für eine FreeContiguousDmaBuffer Routine wird 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 Context Member der HDAUDIO_BUS_INTERFACE_BDL Struktur an.

[in] Handle

Behandeln Sie die Identifizierung des DMA-Moduls. Dieser Handlewert wurde aus einem vorherigen Aufruf von AllocateCaptureDmaEngine oder AllocateRenderDmaEngineabgerufen.

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ückgabestatuscodes aufgeführt.

Rückgabecode Beschreibung
STATUS_UNSUCCESSFUL
Gibt an, dass der Aufrufer bei einer IRQL ausgeführt wird, die zu hoch ist.
STATUS_INVALID_HANDLE
Gibt an, dass der Handle-Parameterwert ungültig ist.
STATUS_INVALID_DEVICE_REQUEST
Gibt an, dass sich der Datenstrom nicht im Zurücksetzungszustand befindet oder dass derzeit kein Puffer für das DMA-Modul zugeordnet ist.

Bemerkungen

Die FreeContiguousDmaBuffer Routine wird in Verbindung mit den SetupDmaEngineWithBdl und AllocateContiguousDmaBuffer Routinen 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 AllocateDmaBuffer und FreeDmaBuffer Routinen, die nie in Verbindung mit AllocateContiguousDmaBuffer, SetupDmaEngineWithBdlund FreeContiguousDmaBufferverwendet werden. Im Gegensatz zu SetupDmaEngineWithBdl, das das DMA-Modul für die Verwendung eines zuvor zugewiesenen DMA-Puffers konfiguriert, AllocateDmaBuffer beide einen DMA-Puffer zuordnet und das DMA-Modul für die Verwendung des Puffers konfiguriert. Weitere Informationen finden Sie unter Unterschiede zwischen den beiden DDI-Versionen.

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

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

Anforderungen

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

Siehe auch

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer-

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl