如果在Graph中查找指定CLSID的Filter?

__Shakespeare 2006-06-28 05:13:34
给定一个Graph,如何查找一个指定了CLSID的Filter,比如设计一个函数,参数是IGraphBulider和CLSID,而返回值是Filter指针???
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eddie005 2006-06-29
  • 打赏
  • 举报
回复
up~~~
pp7765 2006-06-29
  • 打赏
  • 举报
回复
学习
bitgold 2006-06-28
  • 打赏
  • 举报
回复
IBaseFilter *FindFilterByCLSID(IGraphBuilder *apGraph, REFCLSID aClsid)
{
IBaseFilter *lpFoundFilter = NULL;

//枚举智能接口的滤镜列表
IEnumFilters *lpFilters = NULL;
apGraph->EnumFilters(&lpFilters);

if (lpFilters)
{
IBaseFilter *lpFilter = NULL;
IPersist *lpPersist = NULL;
CLSID clsid;
ULONG lulFetchCount = 0;

//逐一查询滤镜列表中符合条件的滤镜
while (S_OK == lpFilters->Next(1, &lpFilter, &lulFetchCount) && lulFetchCount && !lpFoundFilter)
{
HRESULT hr = lpFilter->QueryInterface(IID_IPersist, (void**)&lpPersist);

if (SUCCEEDED(hr))
{
lpPersist->GetClassID(&clsid);
lpPersist->Release();

if (aClsid == clsid)
{
lpFilter->AddRef();
lpFoundFilter = lpFilter;
}
}
lpFilter->Release();
}
lpFilters->Release();
}

return lpFoundFilter;
}
bitgold 2006-06-28
  • 打赏
  • 举报
回复
使用IEnumFilters枚举GraphBuilder链路上的滤镜,然后申请接口IPersist获取滤镜的GUID对比需要查找的GUID

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧