Visual c++ 如何在Directshow中实现IPinFlowControl接口

Visual c++ 如何在Directshow中实现IPinFlowControl接口,visual-c++,directshow,Visual C++,Directshow,我想实现IPinFlowControl接口,它有一个方法块 我试过下面的代码 Mux::NonDelegatingQueryInterface(REFIID iid, void** ppv) { if(iid==IID_IPinFlowControl) { return GetInterface((IPinFlowControl*) this, ppv); } return CBaseFilter::NonDelegatingQueryInterface(

我想实现
IPinFlowControl
接口,它有一个方法块

我试过下面的代码

Mux::NonDelegatingQueryInterface(REFIID iid, void** ppv)
{
   if(iid==IID_IPinFlowControl)
    {
    return GetInterface((IPinFlowControl*) this, ppv);
    }

    return CBaseFilter::NonDelegatingQueryInterface(iid, ppv);
}


STDMETHODIMP Mux::Block(DWORD dwBlockFlags,HANDLE hEvent)
{
    return S_OK;
}
并在过滤器上方注册

现在在代码中,我创建了上述过滤器的实例,连接其输出管脚,然后重试

IPin *pMuxOut2 = NULL;
hr = FindUnconnectedPin(mux,PINDIR_OUTPUT,&pMuxOut2);

IPinFlowControl *pinFlowControl=NULL;

hr=pMuxOut2->QueryInterface(IID_IPinFlowControl,(void**)&pinFlowControl);
但我在pinFlowControl中没有接口


另外,请帮助我正确实现block方法,以阻止和取消阻止输出。

看起来您在过滤器上实现了接口,但在pin上查询该接口


如果要在pin上创建该接口,则需要创建该接口,并且必须创建使用该pin实现的筛选器。

如果要在筛选器上实现
IPinFlowControl
,则应查看随基类提供的类


Windows SDK中提供了一个从该类派生的示例。

谢谢@Wimmel,我会注意一下,然后返回给您:)