Compartir a través de


PFREE_CONTIGUOUS_DMA_BUFFER función de devolución de llamada (hdaudio.h)

La FreeContiguousDmaBuffer rutina libera un búfer DMA y una lista de descriptores de búfer (BDL) asignados por una llamada a AllocateContiguousDmaBuffer.

El tipo de puntero de función para una FreeContiguousDmaBuffer rutina se define de la siguiente manera.

Sintaxis

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

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

Parámetros

[in] _context

Especifica el valor de contexto del miembro Context de la estructura HDAUDIO_BUS_INTERFACE_BDL .

[in] Handle

Controle la identificación del motor DMA. Este valor de identificador se obtuvo de una llamada anterior a AllocateCaptureDmaEngine o AllocateRenderDmaEngine.

Valor devuelto

FreeContiguousDmaBuffer devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, la rutina devuelve un código de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de estado de retorno.

Código devuelto Descripción
STATUS_UNSUCCESSFUL
Indica que el autor de la llamada se está ejecutando en un IRQL que es demasiado alto.
STATUS_INVALID_HANDLE
Indica que el valor del parámetro handle no es válido.
STATUS_INVALID_DEVICE_REQUEST
Indica que la secuencia no está en el estado de restablecimiento o que no hay ningún búfer asignado actualmente para el motor DMA.

Comentarios

La FreeContiguousDmaBuffer rutina se usa junto con las rutinas SetupDmaEngineWithBdl y AllocateContiguousDmaBuffer . Estas tres rutinas solo están disponibles en la versión HDAUDIO_BUS_INTERFACE_BDL del DDI de audio HD. Esta DDI no incluye las rutinas AllocateDmaBuffer y FreeDmaBuffer , que nunca se usan junto con AllocateContiguousDmaBuffer, SetupDmaEngineWithBdl y FreeContiguousDmaBuffer. A diferencia de SetupDmaEngineWithBdl, que configura el motor DMA para usar un búfer DMA asignado previamente, AllocateDmaBuffer asigna un búfer DMA y configura el motor DMA para usar el búfer. Para obtener más información, vea Diferencias entre las dos versiones de DDI.

La rutina produce un error y devuelve el código de error STATUS_INVALID_DEVICE_REQUEST en cualquiera de las siguientes circunstancias:

  • El cliente llama FreeContiguousDmaBuffer cuando no se asigna ningún búfer actualmente para el motor DMA.
  • La secuencia está en un estado distinto del restablecimiento.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado hdaudio.h (incluya Hdaudio.h)
IRQL PASSIVE_LEVEL

Consulte también

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl