请教一个关于查询Filter 上Pin的问题,急!!!
我发现一个奇怪的问题, 当我调用 pPin->QueryDirection(&pindir); 查询了Pin引脚的输出方向后,居然发现pPin指针居然就被置空了,这样我就没法连接两个Filter之间的Pin。 函数代码如下: 有那位高手能够帮忙解释下?? 谢谢了
HRESULT GetUnConnectedPin( IBaseFilter * pFilter, PIN_DIRECTION dirrequired, IPin **ppPin)
{
IEnumPins *pEnum;
*ppPin = NULL;
HRESULT hr = pFilter->EnumPins(&pEnum);
if(FAILED(hr))
{
return hr;
}
IPin *pPin = NULL;
hr = E_FAIL;
while(S_OK == pEnum->Next(1, &pPin, NULL))
{
PIN_DIRECTION pindir;
hr = pPin->QueryDirection(&pindir);
if(pindir == dirrequired)
{
IPin *pTmpPin = NULL;
hr = pPin->ConnectedTo(&pTmpPin);
if(SUCCEEDED(hr))
{
pTmpPin->Release();
}
else
{
*ppPin = pPin;
}
} // if
pPin->Release();
} // while
pEnum->Release();
return hr;
}