Поделиться через


функция обратного вызова PFREE_CONTIGUOUS_DMA_BUFFER (hdaudio.h)

Подпрограмма FreeContiguousDmaBuffer освобождает буфер DMA и список дескрипторов буфера (BDL), которые были выделены вызовом Метода AllocateContiguousDmaBuffer.

Тип указателя функции для FreeContiguousDmaBuffer подпрограммы определяется следующим образом.

Синтаксис

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

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

Параметры

[in] _context

Задает значение контекста из элемента Contextструктуры HDAUDIO_BUS_INTERFACE_BDL .

[in] Handle

Дескриптор идентификации подсистемы DMA. Это значение дескриптора было получено при предыдущем вызове Метода AllocateCaptureDmaEngine или AllocateRenderDmaEngine.

Возвращаемое значение

FreeContiguousDmaBuffer возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае подпрограмма возвращает соответствующий код ошибки. В следующей таблице показаны некоторые из возможных кодов состояния возврата.

Код возврата Описание
STATUS_UNSUCCESSFUL
Указывает, что вызывающий объект выполняется в слишком высоком irQL.
STATUS_INVALID_HANDLE
Указывает, что значение параметра дескриптора недопустимо.
STATUS_INVALID_DEVICE_REQUEST
Указывает, что поток не находится в состоянии сброса или что для подсистемы DMA в настоящее время не выделен буфер.

Комментарии

Подпрограмма FreeContiguousDmaBuffer используется в сочетании со подпрограммами SetupDmaEngineWithBdl и AllocateContiguousDmaBuffer . Эти три подпрограммы доступны только в HDAUDIO_BUS_INTERFACE_BDL версии HD Audio DDI. Этот DDI не включает подпрограммы AllocateDmaBuffer и FreeDmaBuffer , которые никогда не используются в сочетании с AllocateContiguousDmaBuffer, SetupDmaEngineWithBdl и FreeContiguousDmaBuffer. В отличие от SetupDmaEngineWithBdl, которая настраивает подсистему DMA для использования ранее выделенного буфера DMA, Функция AllocateDmaBuffer выделяет буфер DMA и настраивает подсистему DMA для использования буфера. Дополнительные сведения см. в разделе Различия между двумя версиями DDI.

Подпрограмма завершается сбоем и возвращает код ошибки STATUS_INVALID_DEVICE_REQUEST в любом из следующих случаев:

  • Клиент вызывает, FreeContiguousDmaBuffer если для подсистемы DMA в настоящее время не выделен буфер.
  • Поток находится в состоянии, отличном от состояния сброса.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть hdaudio.h (включая Hdaudio.h)
IRQL PASSIVE_LEVEL

См. также раздел

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl