聚合接口过早释放导致“服务器出现意外情况”
要说明这个问题,首先我说下聚合接口的使用,借助ATL我们是这么用的:
/**/
//////////////////////////////////////////////////////////////////////////
// 例子 class CExample // :...... ... { BEGIN_COM_MAP(CExample) //...... //1.在接口映射表中加上要聚合出去的接口,并指定QI时 // 得到的接口指针 COM_INTERFACE_ENTRY_AGGREGATE(IID_IEXAMPLE,m_spUnk); END_COM_MAP() //...... DECLARE_GET_CONTROLLING_UNKNOWN() DECLARE_PROTECT_FINAL_CONSTRUCT() HRESULTFinalConstruct() ...{ HRESULThr=S_OK; //2.我们一般是在FinalConstruct里面做聚合接口的创建 hr=CoCreateInstance(CLSID_EXAMPLE, GetControllingUnknown(), CLSCTX_ALL, IID_IUnknown, (void**)&m_spUnk); returnhr; } HRESULTFinalRelease() ...{ //3.我们一般是在FinalRelease里面做聚合接口的释放 m_spUnk.Release(); } public: CComPtr<IUnknown>m_spUnk; } ; // 例子结束 /**/ ////////////////////////////////////////////////////////////////////////// 2. 我的问题 3.解决 Good luck~ (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |