使用 C 控制筛选器图

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

如果要使用 C (而不是 C++) 编写 DirectShow 应用程序,则必须使用 vtable 指针来调用方法。 以下示例演示如何从用 C 编写的应用程序调用 IUnknown::QueryInterface 方法:

pGraph->lpVtbl->QueryInterface(pGraph, &IID_IMediaEvent, (void **)&pEvent);

下面显示了 C++ 中的等效调用:

pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

在 C 中,COM 接口定义为结构。 lpVtbl 成员是指向 vtable) (接口方法表的指针。 所有方法都采用附加参数,该参数是指向 接口的指针。

附录