PSET_DMA_ENGINE_STATE回呼函式 (hdaudio.h)
SetDmaEngineState 例程會將一或多個 DMA 引擎的狀態設定為 Running、Stopped、Paused 或 Reset 狀態。
SetDmaEngineState 例程的函式指標類型定義如下。
語法
PSET_DMA_ENGINE_STATE PsetDmaEngineState;
NTSTATUS PsetDmaEngineState(
[in] PVOID _context,
[in] HDAUDIO_STREAM_STATE StreamState,
[in] ULONG NumberOfHandles,
[in] PHANDLE Handles
)
{...}
參數
[in] _context
指定HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2或HDAUDIO_BUS_INTERFACE_BDL結構之Context成員的內容值。
[in] StreamState
指定新的數據流狀態。 將此參數設定為下列其中一個HDAUDIO_STREAM_STATE列舉值:
- PauseState (暫停)
- ResetState (重設)
- 執行) 的 RunState (
- StopState (已停止)
[in] NumberOfHandles
指定 句 柄陣列中的句柄數目。 將此參數設定為非零值。
[in] Handles
DMA 引擎句柄陣列的指標。 指定此參數的非 NULL 值。
傳回值
如果呼叫成功變更 DMA 引擎的狀態,SetDmaEngineState 會傳回STATUS_SUCCESS。 否則,例程會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。
傳回碼 | Description |
---|---|
|
表示其中一個句柄無效。 |
|
表示其中一個參數值不正確, (無效的參數值或錯誤的指標) 。 |
|
表示目前沒有配置任何緩衝區給其中一個 DMA 引擎。 |
備註
這個例程會將一或多個 DMA 引擎的狀態變更為 streamState 參數所指定的狀態。 例程會同步處理句 柄陣列中所 識別之所有 DMA 引擎的狀態轉換。 如需詳細資訊,請參閱 同步處理兩個或多個數據流。
呼叫此例程之前,請先在 句柄 陣列中設定每個 DMA 引擎:
- 如果使用HDAUDIO_BUS_INTERFACE版本的 HD 音訊 DDI,請呼叫 AllocateDmaBuffer 來設定 DMA 引擎。
- 如果使用 DDI HDAUDIO_BUS_INTERFACE_BDL版本,請呼叫 SetupDmaEngineWithBdl 來設定 DMA 引擎。
數據流狀態無法在 [執行中] 和 [重設] 之間直接轉換。 相反地,數據流必須先通過已暫停或已停止的中繼狀態:
- 從 [執行中] 或 [重設] 狀態,串流狀態可以直接變更為 [已暫停] 或 [已停止]。
- 從暫停或停止的狀態,串流狀態可以直接變更為 [執行中] 或 [重設]。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | hdaudio.h (包含 Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |