Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма FreeDmaBuffer освобождает буфер DMA, который ранее был выделен вызовом AllocateDmaBuffer.
Тип указателя функции для подпрограммы FreeDmaBuffer определяется следующим образом.
Синтаксис
PFREE_DMA_BUFFER PfreeDmaBuffer;
NTSTATUS PfreeDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
Параметры
[in] _context
Указывает значение контекста из контекста члена HDAUDIO_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, AllocatedDmaBuffer выделяет буфер DMA и настраивает подсистему DMA для использования буфера.
Подпрограмма завершается ошибкой и возвращает код ошибки STATUS_INVALID_DEVICE_REQUEST в любом из следующих случаев:
-
Клиент вызывает
FreeDmaBuffer, если буфер в настоящее время не выделяется для подсистемы DMA. - Поток находится в состоянии, отличном от сброса.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Настольный |
| заголовка | hdaudio.h (include Hdaudio.h) |
| IRQL | PASSIVE_LEVEL |