ICodecAPI::RegisterForEvent 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
RegisterForEvent 方法注册应用程序以从编解码器接收事件。
语法
HRESULT RegisterForEvent(
[in] const GUID *Api,
[out] LONG_PTR userData
);
参数
[in] Api
指向指定事件的 GUID 的指针。 有三类事件:
值 | 含义 |
---|---|
|
编解码器在编解码器的属性发生更改时通知应用程序。 事件数据是更改的属性的 GUID 列表。 |
|
当指定的属性发生更改时,编解码器会通知应用程序。 通常,编解码器将为有限的一组属性(如果有)支持这种类型的通知。 |
|
依赖于实现。 |
[out] userData
指向调用方定义数据的指针。 应用程序在 lParam1 事件参数中接收此指针。
返回值
此方法可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
未实现。 编解码器不支持事件通知,或者不支持 Api 参数中指定的事件 GUID。 |
注解
每当编码器编解码器发送事件时,应用程序都会收到 EC_CODECAPI_EVENT 事件通知。 若要获取事件,请使用 IMediaEventEx 接口。
事件的 lParam2 参数是指向 CodecAPIEventData 结构的指针。 此结构可以后跟其他数据,具体取决于事件 GUID。 此数据的大小由 dataLength 成员提供。
GUID | 事件数据 |
---|---|
CODECAPI_CHANGELISTS | GUID 数组。 每个 GUID 指定其当前值或有效范围已更改的编解码器属性。 数组的大小为 dataLength / sizeof(GUID) 。 |
codecapi.h 中定义的属性 GUID。 | 无。 |
专有事件 GUID。 | 依赖于实现。 |
如果编解码器不支持指定的事件,则 方法将返回 E_NOTIMPL。 编解码器可能支持其他事件。
若要禁用事件的通知,请调用 ICodecAPI::UnregisterForEvent。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 具有 SP2 的 Windows XP [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2003 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |