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

FreeContiguousDmaBufferПодпрограммы освобождают БУФЕР DMA и список дескрипторов буферов (бдл), которые были выделены вызовом аллокатеконтигуаусдмабуффер.

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

Синтаксис

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

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

Параметры

[in] _context

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

[in] Handle

Обработчик, идентифицирующий подсистему DMA. Это значение обработчика было получено из предыдущего вызова аллокатекаптуредмаенгине или аллокатерендердмаенгине.

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

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

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

Remarks

FreeContiguousDmaBufferПодпрограммы используются совместно с подпрограммыми Сетупдмаенгиневисбдл и аллокатеконтигуаусдмабуффер . Эти три подпрограммы доступны только в HDAUDIO_BUS_INTERFACE_BDLной версии DDI HD Audio. Эта DDI не включает подпрограммы аллокатедмабуффер и фридмабуффер , которые никогда не используются совместно с аллокатеконтигуаусдмабуффер, сетупдмаенгиневисбдли FreeContiguousDmaBuffer . В отличие от сетупдмаенгиневисбдл, которая настраивает механизм DMA для использования ранее выделенного буфера DMA, АЛЛОКАТЕДМАБУФФЕР выделяет буфер DMA и настраивает механизм DMA для использования буфера. Дополнительные сведения см. в разделе различия между двумя ВЕРСИЯМИ DDI.

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

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

Требования

   
Целевая платформа Рабочий стол
Header хдаудио. h (включение Хдаудио. h)
УРОВЕНЬ PASSIVE_LEVEL

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

аллокатекаптуредмаенгине

аллокатеконтигуаусдмабуффер

аллокатедмабуффер

аллокатерендердмаенгине

фридмабуффер

HDAUDIO_BUS_INTERFACE_BDL

сетупдмаенгиневисбдл