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 (reset)
- 运行) 的 RunState (
- StopState (已停止)
[in] NumberOfHandles
指定句柄数组中的 句柄 数。 将此参数设置为非零值。
[in] Handles
指向 DMA 引擎句柄数组的指针。 为此参数指定非 NULL 值。
返回值
如果调用成功更改 DMA 引擎的状态,SetDmaEngineState 将返回STATUS_SUCCESS。 否则,例程将返回相应的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 说明 |
---|---|
|
指示其中一个句柄无效。 |
|
指示其中一个参数值不正确 (无效参数值或指针) 错误。 |
|
指示当前没有为其中一个 DMA 引擎分配缓冲区。 |
注解
此例程将一个或多个 DMA 引擎的状态更改为 streamState 参数指定的状态。 例程同步句 柄数组中 句柄标识的所有 DMA 引擎的状态转换。 有关详细信息,请参阅 同步两个或多个流。
在调用此例程之前,请在 句柄 数组中设置每个 DMA 引擎:
- 如果使用 HDAUDIO_BUS_INTERFACE 版本的 HD 音频 DDI,请调用 AllocateDmaBuffer 以设置 DMA 引擎。
- 如果使用 DDI HDAUDIO_BUS_INTERFACE_BDL版本,请调用 SetupDmaEngineWithBdl 以设置 DMA 引擎。
流状态不能直接在 Running 和 Reset 之间转换。 相反,流必须首先通过中间状态“已暂停”或“已停止”:
- 从“正在运行”或“重置”状态开始,流状态可以直接更改为“已暂停”或“已停止”。
- 从暂停或停止状态开始,流状态可以直接更改为“正在运行”或“重置”。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | hdaudio.h (包括 Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |