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

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

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

Синтаксис

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

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

Параметры

[in] _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, AllocatedDmaBuffer выделяет буфер DMA и настраивает подсистему DMA для использования буфера. Дополнительные сведения см. в разделе Различия между двумя версиями DDI.

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

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

Требования

Требование Ценность
целевая платформа Рабочий стол
Заголовок hdaudio.h (include Hdaudio.h)
IRQL пассивный уровень

См. также

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl