首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

COM IUnknown接口打包

2012-12-21 
COM IUnknown接口封装#include CAbstractUnknown.hCAbstractUnknown::CAbstractUnknown(){m_ref0g_com

COM IUnknown接口封装

#include "CAbstractUnknown.h"CAbstractUnknown::CAbstractUnknown(){m_ref=0;g_components=0;}/**HRESULT _stdcall CAbstractUnknown::QueryInterface(const IID& riid,void** ppvObject){if(p_UnknownOuter!=NULL){return p_UnknownOuter->QueryInterface(riid,ppvObject);}else{return NonDelegatingQueryInterface(riid,ppvObject);}}*/ULONG _stdcall CAbstractUnknown::AddRef(){return InterlockedIncrement(&m_ref);}ULONG _stdcall CAbstractUnknown::Release(){if(InterlockedDecrement(&m_ref)==0){InterlockedDecrement(&g_components);delete this;return 0;}return m_ref;}/**CAbstractUnknown::CAbstractUnknown(IUnknown* m_pUnknownouter){m_ref=1;InterlockedIncrement(&g_components);p_UnknownOuter=m_pUnknownouter;}HRESULT _stdcall CAbstractUnknown::NonDelegatingQueryInterface(const IID& riid,void** ppvObject){if(riid==IID_IUnknown){*ppvObject=static_cast<INonDelegatingUnknown*>(this);((IUnknown*)(*ppvObject))->AddRef();}return S_OK;}ULONG _stdcall CAbstractUnknown::NonDelegatingAddRef(){return InterlockedIncrement(&m_ref);}ULONG _stdcall CAbstractUnknown::NonDelegatingRelease(){if(InterlockedDecrement(&m_ref)==0){InterlockedDecrement(&g_components);delete this;return 0;}return m_ref;}*/

?

热点排行