佚名通过本文主要向大家介绍了addref,引用计数,引用计数算法,引用计数法,引用计数器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何监控对引用计数的访问 AddRef、Release
描述:
解决方案1:
描述:
我使用ATL进行COM对象的开发,需要对COM对象的引用计数进行监控,在AddRef以及Release的时候进行一些附加的动作,不知道如何使外部程序调用 IUnknown 的AddRef 以及Release 方法时调用到我的函数中来?似乎应该使用类方法重载,但不知道应该如何重载?或者应该使用别的方法?
解决方案1:
在你的类CTest中定义
ULONG InternalAddRef()
{
//do you want to do,eg MessageBox(NULL,"InternalRelease","msg",MB_OK);
return CComObjectRootEx<CComSingleThreadModel>::InternalAddRef();
}
ULONG InternalRelease()
{
//do you want to do,eg MessageBox(NULL,"InternalRelease","msg",MB_OK);
return CComObjectRootEx<CComSingleThreadModel>::InternalRelease();
}
这不是重载,是覆盖,所以在函数里还要调一下CComObjectRootEx的函数保证工作正常
如果对象是你自己实现的话,直接改这两个函数就可以了
如果不是,用包容吧
您可能想查找下面的文章:
- 重写QueryInterface,AddRef,Release应该注意些什么?我这段代码怎么总是有问题。
- 那位能说说使用AddRef和Release的体会?
- 关于COM中Addref和Release问题:
- ATL中使用AddRef不当引起的内存泄漏问题?
- 用ATL实现一个Com组件的话,就不用手动实现QueryInterface,AddRef,Release了吗?
- "focus”:不是“ATL::_NoAddRefReleaseOnCComPtr<T>”的成员的原因?
- IEnumMoniker::Next里面调用了Addref吗?
- 关于COM计数器(AddRef和Release)的问题。
- 请教一个AddRef疑惑
- 如何监控对引用计数的访问AddRef、Release