近日心得(Com, directshow)
2007-10-11 13:01
218 查看
这两天写的一个DShow的东东,在退出的时候,释放总有问题。
IGraphBuilder->Release(),会死在这句话!
一开始,认为可能是引用计数的问题,于是,就仔细查找。
查找的过程,总是进步和过程,也是因为此,我弄清楚了引用计数的添删。
1。如果使用CComPtr<IXXX> pXXX,则在 pXXX = pXXX2 的时候,引用计数会加1。
2。CoCreateInterface和QueryInterface时,如果成功,则引用计数会加1。
3。如果用用IXXX * pXXX,则在 pXXX= pXXX2 的时候,引用计数不变。
4。如果用进程内Filter,刚在pXXX = new CXXX() 的时候,引用计数不增加,为0。
在这个过程中,还找到了一个错误,也就解决了IGraphBuilder->Release()的问题,
那就是在写Filter的过程中,对于CBaseFilter::Stop的重载中,要确保每一个返回处,
都要调用 return CBaseFilter::Stop()
IGraphBuilder->Release(),会死在这句话!
一开始,认为可能是引用计数的问题,于是,就仔细查找。
查找的过程,总是进步和过程,也是因为此,我弄清楚了引用计数的添删。
1。如果使用CComPtr<IXXX> pXXX,则在 pXXX = pXXX2 的时候,引用计数会加1。
2。CoCreateInterface和QueryInterface时,如果成功,则引用计数会加1。
3。如果用用IXXX * pXXX,则在 pXXX= pXXX2 的时候,引用计数不变。
4。如果用进程内Filter,刚在pXXX = new CXXX() 的时候,引用计数不增加,为0。
在这个过程中,还找到了一个错误,也就解决了IGraphBuilder->Release()的问题,
那就是在写Filter的过程中,对于CBaseFilter::Stop的重载中,要确保每一个返回处,
都要调用 return CBaseFilter::Stop()
相关文章推荐
- 一个清华学子写的关于directshow的学习心得【转】
- 一个清华学子写的关于directshow的学习心得
- 基于 windbg 检查directshow(com)内存泄露
- DirectShow 学习(三) COM实现部分和部分辅助源码浅读 (async例子)(2013-05-01 20:06)
- 编写DirectShow Filters—DirectShow and COM
- DirectShow下载安装配置心得
- com初学心得小记
- 一个清华学子写的关于directshow的学习心得
- DirectShow下载安装配置心得
- 双边贸易网 YouMeTrade.com 上线了, 欢迎大家推荐网站优化技术,也发一些我的心得.
- directshow 学习心得一
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard 代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/Differen
- DirectShow 学习(一) COM实现部分和部分辅助源码浅读(转载)
- 一个清华学子写的关于directshow的学习心得。8错。
- 近日学习心得
- 《COM本质论》COM是一个更好的C++心得分享
- 一个清华学子写的关于directshow的学习心得。8错。
- 一个程序员的编码心得(http://www.esmerel.com/wagons/rob/rules.html)
- 今日插件心得(转自http://eidolonlj.spaces.live.com/)
- 近日看书心得