小弟初学COM,向高手请教! 自动化的COM组件为什么没有实现类工厂,AddRef(),QueryInterface(),Release()能给我详细讲讲自动化的COM组件中上面这几个东东是怎么调用的吗?我用ATL写了个COM组件,可以用ASP调用,但是由于在ASP中不能调用Release()函数,不能释放COM对象.
所以我每次执行ASP脚本后都要手动Kill掉dllhost.exe.有什么办法能在ASP脚本中调用完COM对象后释放该对象.谢谢.
所以我每次执行ASP脚本后都要手动Kill掉dllhost.exe.有什么办法能在ASP脚本中调用完COM对象后释放该对象.谢谢.
解决方案 »
- 进来讨论下webui 具体实现方法
- 请问 如果工程里面没有CWnd类及其派生类,如何获取得到系统WM_DEVICECHANGE的通知?
- 小问题请大家解决一下,不知道怎么改错误,谢谢!
- 如何判断某个可执行程序已经运行了。
- 寻求建议
- vc2005 难题 求助
- 如何用VC++打开raw格式的三维数据块1280×600×1024
- 我下载了一个CMyListBox类,好像要重载才能用.如何重载CMyListBox类?
- 请问你们当初学C++时在语法上泡的多不多
- 在设计程序时,当遇到难题时,我是应该靠自己死钻到底,还是去提问?
- CArray类的CArray::InsertAt()的工作原理
- 知道一个软件的路径,怎么样用CreateProcess()打开这个软件。能给出具体一点的代码吗?
我跟踪了代码,可是没看太明白.类工厂,AddRef(),QueryInterface(),Release()谢谢了!
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_CalcPi, CCalcPi)
END_OBJECT_MAP()wizard中产生的封装类是基于模板的多重继承,其中一个基类CComObjectRootEx他实现了线程模型和AddRef,Releasetemplate <>
class CComObjectRootEx<CComSingleThreadModel> : public CComObjectRootBase
{
public:
typedef CComSingleThreadModel _ThreadModel;
typedef _ThreadModel::AutoCriticalSection _CritSec;
typedef CComObjectLockT<_ThreadModel> ObjectLock; ULONG InternalAddRef()
{
ATLASSERT(m_dwRef != -1L);
return _ThreadModel::Increment(&m_dwRef);
}
ULONG InternalRelease()
{
return _ThreadModel::Decrement(&m_dwRef);
}
CComObject实现了QueryInterface
http://dev.csdn.net/develop/article/13/13924.shtm