1

我想实现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 中得到了 E_NonInterface,

还请帮助我正确实施阻止和解除阻止输出的阻止方法。

4

2 回答 2

2

如果你打算IPinFlowControl在你的过滤器上实现,你应该看看CDynamicOutputPinBaseClasses 提供的类。

Windows SDK 中的Synth Filter Sample为您提供了从此类派生的示例。

于 2012-06-02T16:24:36.520 回答
0

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

如果要在引脚上创建该接口,则需要创建该接口,并且必须创建一个使用该引脚实现的过滤器。

于 2012-06-02T15:15:39.397 回答