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