PSET_DMA_ENGINE_STATE回呼函式 (hdaudio.h)
SetDmaEngineState 例程會將一或多個 DMA 引擎的狀態設定為執行中、已停止、暫停或重設狀態。
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 (paused)
- ResetState (reset)
- RunState (running)
- StopState (已停止)
[in] NumberOfHandles
指定陣列中 句柄數目。 將此參數設定為非零值。
[in] Handles
指向 DMA 引擎句柄陣列的指標。 為此參數指定非NULL 值。
傳回值
如果呼叫成功變更 DMA 引擎的狀態,SetDmaEngineState 會傳回STATUS_SUCCESS。 否則,例程會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。
傳回碼 | 描述 |
---|---|
|
表示其中一個句柄無效。 |
|
表示其中一個參數值不正確(無效的參數值或不正確的指標)。 |
|
表示目前未配置任何緩衝區給其中一個 DMA 引擎。 |
言論
此例程會將一或多個 DMA 引擎的狀態變更為 streamState 參數所指定 狀態。 例程會同步處理 句柄中所有 DMA 引擎的狀態轉換, 數位識別。 如需詳細資訊,請參閱 同步處理兩個或多個資料流。
呼叫此例程之前,請在 句柄 陣列中設定每個 DMA 引擎:
- 如果使用 HD 音訊 DDI HDAUDIO_BUS_INTERFACE 版本,請呼叫 AllocateDmaBuffer 來設定 DMA 引擎。
- 如果使用 DDI 的 HDAUDIO_BUS_INTERFACE_BDL 版本,請呼叫 SetupDmaEngineWithBdl 來設定 DMA 引擎。
數據流狀態無法直接在 [執行中] 和 [重設] 之間轉換。 相反地,數據流必須先通過「已暫停」或「已停止」的中繼狀態:
- 從 [執行中] 或 [重設] 狀態,串流狀態可以直接變更為 [已暫停] 或 [已停止]。
- 從暫停或停止的狀態,數據流狀態可以直接變更為 [執行中] 或 [重設]。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | hdaudio.h (包括 Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |