IAudioClient::SetEventHandle 方法 (audioclient.h)
SetEventHandle 方法设置当音频缓冲区可供客户端处理时系统发出信号的事件句柄。
语法
HRESULT SetEventHandle(
[in] HANDLE eventHandle
);
参数
[in] eventHandle
事件句柄。
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。
返回代码 | 说明 |
---|---|
|
参数 eventHandle 为 NULL 或无效句柄。 |
|
音频流未针对事件驱动的缓冲进行初始化。 |
|
音频流尚未成功初始化。 |
|
音频终结点设备已拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除或以其他方式不可用。 |
|
Windows 音频服务未运行。 |
注解
此方法需要事先初始化 IAudioClient 接口。 在客户端通过成功调用 IAudioClient::Initialize 方法初始化音频流之前,对此方法的所有调用都将失败并出现错误AUDCLNT_E_NOT_INITIALIZED。
在流初始化期间,客户端可以选择启用事件驱动的缓冲。 为此,客户端调用设置了 AUDCLNT_STREAMFLAGS_EVENTCALLBACK 标志的 IAudioClient::Initialize 方法。 启用事件驱动缓冲后,在调用 IAudioClient::Start 方法以启动流之前,客户端必须调用 SetEventHandle 来注册事件句柄,系统将在每次缓冲区准备好由客户端处理时发出信号。
在客户端调用 Start 方法时,事件句柄应处于未签名状态。
如果客户端已启用流的事件驱动缓冲,但客户端在没有首次调用 SetEventHandle 的情况下为该流调用 Start 方法,则 Start 调用将失败并返回错误代码。
如果客户端未启用流的事件驱动缓冲,但尝试通过调用 SetEventHandle 为流设置事件句柄,则调用将失败并返回错误代码。
有关调用 SetEventHandle 方法的代码示例,请参阅 独占模式流。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | audioclient.h |