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