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


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

Подпрограмма FreeDmaBuffer освобождает буфер DMA, который ранее был выделен вызовом AllocateDmaBuffer.

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

Синтаксис

PFREE_DMA_BUFFER PfreeDmaBuffer;

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

Параметры

[in] _context

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

[in] Handle

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

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

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

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

Комментарии

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

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

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

Требования

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

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

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_V2

SetupDmaEngineWithBdl