Функция обратного вызова 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, если вызов завершается. В противном случае подпрограмма возвращает соответствующий код ошибки. В следующей таблице показаны некоторые из возможных кодов состояния возврата.
Код возврата | Описание |
---|---|
|
Указывает, что вызывающий объект работает на уровне IRQL, который слишком велик. |
|
Указывает, что значение параметра handle недопустимо. |
|
Указывает, что поток не находится в состоянии сброса или что в данный момент буфер не выделен для модуля 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 |
См. также раздел
Обратная связь
Отправить и просмотреть отзыв по