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,我会注意一下,然后返回给您:)