事件通知代码
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
本部分列出了不特定于 DVD 的 DirectShow 事件。 有关特定于 DVD 的事件,请参阅 DVD 事件通知代码。
筛选器通过调用 IMediaEventSink::Notify 方法将事件发送到 Filter Graph 管理器。 Filter Graph 管理器处理某些事件,并为应用程序处理其他事件和队列。 应用程序通过调用 IMediaEvent::GetEvent 方法来检索它们。
在后面的部分中,每个条目都会列出事件代码、事件参数的含义以及 Filter Graph 管理器的事件的默认作(如果有)。 若要替代默认作,请调用 IMediaEvent::CancelDefaultHandling。 事件代码在头文件 Evcode.h 和 Audevcod.h 中定义。 如果没有默认作,Filter Graph 管理器会自动将事件转发到应用程序(通过事件队列)。
自定义事件
筛选器可以使用范围EC_USER及更高范围内的事件代码定义自定义事件。 Filter Graph 管理器会将这些内容直接放置在事件队列中。 但是,以下注意事项适用:
- Filter Graph 管理器无法使用普通 IMediaEvent::FreeEventParams 方法释放事件参数。 应用程序必须释放与事件参数关联的任何内存或引用计数。
- 筛选器应仅从准备处理事件的应用程序中发送事件。 (应用程序可能在筛选器上设置自定义属性,以指示发送事件是安全的。
相关主题