IAudioClient::SetEventHandle 方法 (audioclient.h)

SetEventHandle 方法设置当音频缓冲区可供客户端处理时系统发出信号的事件句柄。

语法

HRESULT SetEventHandle(
  [in] HANDLE eventHandle
);

参数

[in] eventHandle

事件句柄。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
E_INVALIDARG
参数 eventHandleNULL 或无效句柄。
AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED
音频流未针对事件驱动的缓冲进行初始化。
AUDCLNT_E_NOT_INITIALIZED
音频流尚未成功初始化。
AUDCLNT_E_DEVICE_INVALIDATED
音频终结点设备已拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除或以其他方式不可用。
AUDCLNT_E_SERVICE_NOT_RUNNING
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

另请参阅

IAudioClient 接口

IAudioClient::Initialize

IAudioClient::Start