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 结构的 上下文 成员的上下文值。
[in] StreamState
指定新的流状态。 将此参数设置为以下HDAUDIO_STREAM_STATE枚举值之一:
- PauseState (已暂停)
- ResetState (reset)
- RunState (正在运行)
- StopState (已停止)
[in] NumberOfHandles
指定 句柄 数组中的句柄数。 将此参数设置为非零值。
[in] Handles
指向 DMA 引擎句柄数组的指针。 为此参数指定非NULL 值。
返回值
SetDmaEngineState 如果调用成功更改 DMA 引擎的状态,则返回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 |