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