ICodecAPI::RegisterForEvent 方法 (strmif.h)

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

RegisterForEvent 方法注册应用程序以从编解码器接收事件。

语法

HRESULT RegisterForEvent(
  [in]  const GUID *Api,
  [out] LONG_PTR   userData
);

参数

[in] Api

指向指定事件的 GUID 的指针。 有三类事件:

含义
CODECAPI_CHANGELISTS
编解码器在编解码器的属性发生更改时通知应用程序。 事件数据是更改的属性的 GUID 列表。
codecapi.h 中定义的属性 GUID 之一。 (请参阅 编解码器 API 属性。)
当指定的属性发生更改时,编解码器会通知应用程序。 通常,编解码器将为有限的一组属性(如果有)支持这种类型的通知。
由编解码器定义的专有事件 GUID。
依赖于实现。

[out] userData

指向调用方定义数据的指针。 应用程序在 lParam1 事件参数中接收此指针。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK
方法成功。
E_NOTIMPL
未实现。 编解码器不支持事件通知,或者不支持 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

另请参阅

编解码器 API 参考

编码器 API

ICodecAPI