PFREE_CONTIGUOUS_DMA_BUFFER回呼函式 (hdaudio.h)
例程會 FreeContiguousDmaBuffer
釋放呼叫 AllocateContiguousDmaBuffer 所配置的 BDL 緩衝區和緩衝區描述項清單 (BDL) 。
例程的 FreeContiguousDmaBuffer
函式指標類型定義如下。
語法
PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;
NTSTATUS PfreeContiguousDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
參數
[in] _context
指定HDAUDIO_BUS_INTERFACE_BDL結構之 Context 成員的內容值。
[in] Handle
識別 DMA 引擎的句柄。 這個句柄值是從先前呼叫 AllocateCaptureDmaEngine 或 AllocateRenderDmaEngine 取得。
傳回值
FreeContiguousDmaBuffer
如果呼叫成功,則會傳回STATUS_SUCCESS。 否則,例程會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。
傳回碼 | Description |
---|---|
|
表示呼叫端正在 IRQL 上執行太高。 |
|
表示句柄參數值無效。 |
|
表示數據流未處於重設狀態,或目前未為 DMA 引擎配置任何緩衝區。 |
備註
例 FreeContiguousDmaBuffer
程會與 SetupDmaEngineWithBdl 和 AllocateContiguousDmaBuffer 例程搭配使用。 這三個例程僅適用於 HD 音訊 DDI HDAUDIO_BUS_INTERFACE_BDL 版本。 這個 DDI 不包含 AllocateDmaBuffer 和 FreeDmaBuffer 例程,這些例程永遠不會與 AllocateContiguousDmaBuffer、 SetupDmaEngineWithBdl 和 FreeContiguousDmaBuffer
搭配使用。 不同於 SetupDmaEngineWithBdl,它會將 DMA 引擎設定為使用先前配置的 DMA 緩衝區, AllocateDmaBuffer 會配置 DMA 緩衝區,並將 DMA 引擎設定為使用緩衝區。 如需詳細資訊,請參閱 兩個 DDI 版本之間的差異。
例程會失敗,並在下列任一情況下傳回錯誤碼STATUS_INVALID_DEVICE_REQUEST:
-
當目前未為 DMA 引擎設定任何緩衝區時,用戶端會呼叫
FreeContiguousDmaBuffer
。 - 數據流處於重設以外的狀態。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | hdaudio.h (包含 Hdaudio.h) |
IRQL | PASSIVE_LEVEL |