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 引擎。 這個控制碼值是從先前呼叫 AllocateCaptureDmaEngineAllocateRenderDmaEngine取得。

傳回值

FreeContiguousDmaBuffer 如果呼叫成功,則會傳回STATUS_SUCCESS。 否則,常式會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態碼。

傳回碼 描述
STATUS_UNSUCCESSFUL
表示呼叫端在太高 IRQL 上執行。
STATUS_INVALID_HANDLE
表示 handle 參數值無效。
STATUS_INVALID_DEVICE_REQUEST
表示資料流程未處於重設狀態,或目前未為 DMA 引擎配置任何緩衝區。

備註

FreeContiguousDmaBuffer常式會與SetupDmaEngineWithBdlAllocateContiguousDmaBuffer常式搭配使用。 這三個常式僅適用于 HD 音訊 DDI HDAUDIO_BUS_INTERFACE_BDL 版本。 此DDI 不包含 AllocateDmaBuffer 和 FreeDmaBuffer常式,這些常式永遠不會與AllocateContiguousDmaBufferSetupDmaEngineWithBdlFreeContiguousDmaBuffer 搭配使用。 不同于 SetupDmaEngineWithBdl,它會將 DMA 引擎設定為使用先前配置的 DMA 緩衝區, AllocateDmaBuffer 會配置 DMA 緩衝區,並將 DMA 引擎設定為使用緩衝區。 如需詳細資訊,請參閱 兩個 DDI 版本之間的差異

常式失敗,並在下列任一情況下傳回錯誤碼STATUS_INVALID_DEVICE_REQUEST:

  • 當目前未為 DMA 引擎配置任何緩衝區時,用戶端會呼叫 FreeContiguousDmaBuffer
  • 資料流程處於重設以外的狀態。

規格需求

   
目標平臺 桌面
標頭 hdaudio.h (包含 Hdaudio.h)
IRQL PASSIVE_LEVEL

另請參閱

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl