IMediaEvent::GetEventHandle 方法 (control.h)

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 GetEventHandle 检索在队列包含事件通知时保持信号的手动重置事件的句柄。

语法

HRESULT GetEventHandle(
  [out] OAEVENT *hEvent
);

参数

[out] hEvent

指向接收事件句柄的变量的指针。

返回值

返回 S_OK。

注解

Filter Graph 管理器会保留一个反映事件队列状态的手动重置事件。 如果队列包含事件通知,则会发出手动重置事件信号。 如果队列为空, IMediaEvent::GetEvent 方法将重置事件。

应用程序可以使用此事件来确定队列的状态。 第一次调用 GetEventHandle 以获取事件的句柄。 使用 WaitForSingleObject 等函数等待事件发出信号。 发出事件信号时,调用 IMediaEvent::GetEvent 方法以从队列中检索下一个事件通知。 Filter Graph 管理器会一直向事件发出信号,直到队列为空;然后重置事件。

请勿关闭此方法返回的事件句柄,因为筛选器图在内部使用该事件句柄。 此外,在释放筛选器关系图管理器后不要使用该句柄,因为在销毁筛选器关系图管理器后,句柄将变为无效。 (为了避免此错误,最好通过调用 DuplicateHandle 来复制句柄,并使用重复句柄而不是原始句柄。完成后关闭重复句柄。)

为了实现自动化兼容性,此方法采用指向 OAEVENT 类型的指针。 在 C++ 中,声明 HANDLE 类型的变量并将其强制转换为 OAEVENT 指针,如下所示:


HANDLE hEvent;
GetEventHandle( (OAEVENT*) &hEvent );

应用程序监视事件队列的另一种方法是调用 IMediaEventEx::SetNotifyWindow 方法。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 control.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IMediaEvent 接口