亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? comobjlib.h

?? vxworks的完整的源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* comObjLib.h - template-based COM-object construction library (VxCOM) *//* Copyright (c) 1999 Wind River Systems, Inc. *//*modification history--------------------02n,04oct01,dbs  add macros to export coclasses in shlibs02m,24sep01,nel  SPR#70528. Fix memory leak in CComBSTR.02l,31jul01,dbs  allow override of InternalAddRef/Release methods02k,28jun01,dbs  use safe inc/dec funcs, remove VxMutex dependency02j,21jun01,dbs  make use of VxMutex class02i,09apr01,nel  SPR#65606. Correct minor formating errors.02h,28feb01,nel  SPR#35792. Add more ATL defs to bring into line with T2.02g,16aug00,nel  Add CComBSTR(char *) to CComStr to make MathDemo example work                 under vxworks.02f,30may00,nel  Add more variant support02e,28feb00,nel  Remove VxComTrack dependency on hard coded idl stuff02d,01feb00,nel  Added VxComTrack code and Fix for singleton operation02c,15oct99,dbs  fix comments to refer to proper classnames02b,18aug99,dbs  remove extraneous ptr-conversion operator in CComPtr02a,13aug99,drm  Bux fix.01z,13aug99,dbs  fix copy-ctor in CComPtr01y,29jul99,aim  changed mutex types to void*01x,28jul99,drm  Changing g_defaultServerPriority to g_defaultServerPriority.01w,28jul99,dbs  remove PS_CLNT_ASSIGNED enum value01v,26jul99,dbs  fix typo in COM_INTERFACE_ENTRY macros01u,30jun99,dbs  add const operator-> to CComPtr01t,28jun99,dbs  remove obsolete ptrAssign function01s,04jun99,dbs  fix registry calls01r,03jun99,dbs  remove comSyncLib and VxMutex class01q,26may99,dbs  add further ATL compatibility01p,20may99,dbs  move class-object functionality into CComCoClass                 class so explicit template instantiation works01o,04may99,dbs  check return value of alloc in CreateInstance01n,03may99,drm  adding priority scheme support01m,27apr99,dbs  add alloc helper funcs01l,23apr99,dbs  make mutex publically available thru CComObject methods01k,23apr99,dbs  improve QI implementation, remove virtualness,                 enforce locking in CComObject class01j,22apr99,dbs  remove potential leaks, remove extraneous debugging                 code (will be replaced with official DEBUG-lib in		 future), simplify locking strategy (we don't need to		 provide a VxNoLock class at all).01i,14apr99,dbs  put incr and decr methods into VxMutex class01h,31mar99,dbs  add CComPtr and CComBSTR classes01g,03feb99,dbs  use STDMETHOD macros01f,20jan99,dbs  fix file names - vxcom becomes com01e,11jan99,dbs  change classnames to be ATL compatible01d,21dec98,dbs  changes for VXCOM01c,15dec98,dbs  add singleton support01b,11dec98,dbs  simplify registry01a,17nov98,dbs  created*//*  DESCRIPTION:  This file contains template classes for creating COM objects using  multiple inheritance to implement multiple interfaces. Classes  created with these templates feature class-factories, thread-safe  reference counting, etc...  They are source-level compatible with ATL, and use the same  COM_MAP() style of interface mapping, although the implementation is  somewhat different.  */#ifndef __INCcomObjLib_h__#define __INCcomObjLib_h__#include "comCoreLib.h"#include "comLib.h"#include <stdio.h>#define DECLARE_CLASSFACTORY_SINGLETON() enum {singleton=1};#define DECLARE_REGISTRY_RESOURCE(x)#define DECLARE_REGISTRY(class, pid, vpid, nid, flags)#ifndef VXDCOM_COMTRACK_LEVEL#define VXDCOM_COMTRACK_LEVEL 0#endif#if (VXDCOM_COMTRACK_LEVEL == 0)#define COMTRACK_ADD_CLS(c)#define COMTRACK_ADD_IID(c) #define COMTRACK_UPDATE()#else#include "comShow.h"#define COMTRACK_ADD_CLS(c) if (VxComTrack::theInstance()->addClassInstance ((void *)this, (char *)vxcomGUID2String (GetObjectCLSID ()), #c, m_dwRefCount, GetObjectCLSID ()) != NULL) _qi_impl (IID_IUnknown, NULL)#define COMTRACK_ADD_IID(c) VxComTrack::theInstance()->addInterface ((void *)this, (char *)vxcomGUID2String (IID_##c), "IID_"#c, IID_##c)#define COMTRACK_UPDATE() VxComTrack::theInstance()->updateClassInstance (this, m_dwRefCount)#endif////////////////////////////////////////////////////////////////////////////// CComObjectRoot - the base class of all the VxDCOM classes. It// provides basic IUnknown support, plus support for COM aggregation// and reference-counting...//class CComObjectRoot    {  public:    enum { singleton=0 };    CComObjectRoot (IUnknown *punk=0)      : m_dwRefCount (0),	m_pUnkOuter (punk)	{	}    virtual ~CComObjectRoot ()	{	}    // IUnknown implementation support - these methods provide the    // basis upon which the IUnknown methods are built...    ULONG InternalAddRef ()	{        ULONG n = comSafeInc (&m_dwRefCount);	return n;	}    ULONG InternalRelease ()	{        ULONG n = comSafeDec (&m_dwRefCount);	COMTRACK_UPDATE ();	if (n)	    return n;	// Must delete this object, so we temporarily set its	// ref-count to 1 so we don't get circular destruction	// chains...	m_dwRefCount = 1;	delete this;	return 0;	}      protected:    long		m_dwRefCount;	// reference-count    IUnknown*		m_pUnkOuter;	// aggregating outer    };////////////////////////////////////////////////////////////////////////////// CComClassFactory - implements IClassFactory to allow objects to// be created at runtime...//template <class T> class CComClassFactory    : public CComObjectRoot,      public IClassFactory        {    enum { singleton_factory=T::singleton };      public:    CComClassFactory () {}        // IUnknown implementation for class-factory    ULONG STDMETHODCALLTYPE AddRef ()        { return InternalAddRef (); }    ULONG STDMETHODCALLTYPE Release ()        {         ULONG result = InternalRelease ();        return result;        }    HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, void ** ppv)	{        if (! ppv)            return E_POINTER;        if ((riid == IID_IClassFactory) || (riid == IID_IUnknown))            {            *ppv = static_cast<IClassFactory*> (this);            InternalAddRef ();            return S_OK;            }	*ppv = 0;        return E_NOINTERFACE;        }    // IClassFactory implementation    HRESULT STDMETHODCALLTYPE CreateInstance	(	IUnknown*	pUnkOuter,	REFIID		riid,	void**		ppv	);            HRESULT STDMETHODCALLTYPE LockServer (BOOL bLock)        { return S_OK; }    };////////////////////////////////////////////////////////////////////////////// CComCoClass - represents the 'coclass' or component-object// itself. The 'coclass' represents the whole object, not any// particular one of its exposed interfaces, and is only required when// an object/class must be 'externally' createable via// CoCreateinstance(). Hence, the functions required by// CComClassFactory and the registration mechanism are wrapped in this// template-class. It should be mixed in with the user's class when// this functionality is required.//template <class T, const CLSID* pclsid> class CComCoClass    {    typedef CComClassFactory<T> ClassFactory_t;  public:    static const CLSID& GetObjectCLSID () { return *pclsid; }        // classObjectGet - gets the class' class-object (factory)...    static HRESULT classObjectGet	(	REFCLSID	clsid,	REFIID		iid,	void**		ppv	)	        {	// Validate CLSID	if (*pclsid != clsid)	    return CLASS_E_CLASSNOTAVAILABLE;	// Create new factory...	            ClassFactory_t* pCF = new ClassFactory_t;	// Bump up CF ref count to 1	pCF->AddRef ();	// QI for requested interface - if successful it will leave	// ref-count at 2, if not, then it will be 1 still...	HRESULT hr = pCF->QueryInterface (iid, ppv);	// release one reference - if QI failed this will destroy the	// factory, but if successful will leave it around...	pCF->Release ();		return hr;        }    // classRegister - this function is used by the auto-registration    // macro AUTOREGISTER_COCLASS to add the CLSID to the Registry    static HRESULT classRegister         (        VXDCOMPRIORITYSCHEME scheme, // priority scheme to use        int priority		     // priority - not used by all schemes         )	{        int priorityToRegister;	// prio to register is determined by sheme        switch (scheme)            {            case PS_DEFAULT:                // Set priority to system default; ignore priority argument                priorityToRegister = g_defaultServerPriority;                break;                        case PS_SVR_ASSIGNED:                // Set priority to given priority                priorityToRegister = priority;                break;            case PS_CLNT_PROPAGATED:                // Set priority to given priority for cases where the priority                // is not provided by the client (as in Win32).  If the                // provided priority is < 0, then use the default system                // priority.                if (priority < 0)                    priorityToRegister = g_defaultServerPriority;                else                    {                    if ((priority >=0) && (priority <=255))                        priorityToRegister = priority;                    else                        priorityToRegister = g_defaultServerPriority;                    }                break;            default:                // Unknown or unsupported priority scheme.  Return an error.                return E_UNEXPECTED;                break;            }        // Register the structure against the CLSID	return comClassRegister (*pclsid,                                 CLSCTX_INPROC_SERVER,                                 &classObjectGet,                                 scheme,                                 priorityToRegister);        }    };////////////////////////////////////////////////////////////////////////////// wotlQIHelper -- templated on the same implementation class as // CComObject, this function provides a type-safe way of invoking// the class' _qi_impl() method.//template <class T>HRESULT wotlQIHelper (T* pThis, REFIID riid, void** ppv)    {    return pThis->_qi_impl (riid, ppv);    }////////////////////////////////////////////////////////////////////////////// CComObject - the main class for creating objects. The class 'T'// must derive from CComObjectRoot (in order to gain an IUnknown// implementation and other support functionality).//template <class T> class CComObject : public T    {  public:    // CreateInstance() creates a single instance, no aggregation, no    // specific COM interface...    static HRESULT CreateInstance (CComObject<T>** pp);    // CreateInstance - does the business of creating an instance of    // the class, and finding the requested interface on it...    static HRESULT CreateInstance	(	IUnknown*	punkOuter,	REFIID		riid,	void** 		ppv	)        {	// Validate args        if (!ppv)            return E_POINTER;	// Create an instance (refcount will be zero)        CComObject* pObj = new CComObject;	if (! pObj)	    return E_OUTOFMEMORY;	// preset return value in case we fail to QI	*ppv = 0;	// save aggregate IUnknown ptr	pObj->m_pUnkOuter = punkOuter;	// QI for desired interface - if it fails, we must get rid of	// the recently-allocated instance before returning. If it	// succeeds, returned interface-ptr will have one ref...        HRESULT hr = pObj->_qi_impl (riid, ppv);	if (FAILED (hr))	    delete pObj;	return hr;        }        // over-ride the base-class 'internal_qi' method so we can    // implement QI via the COM_MAP macros...    HRESULT internal_qi (REFIID riid, void** ppv)	{	return _qi_impl (riid, ppv);	}    // IUnknown implementation - these methods are used by each of the    // multiply-inherited base interfaces as their own IUnknown    // methods.        ULONG STDMETHODCALLTYPE AddRef ()	{	if (m_pUnkOuter)	    return m_pUnkOuter->AddRef ();	return InternalAddRef ();	}        ULONG STDMETHODCALLTYPE Release ()	{	if (m_pUnkOuter)	    return m_pUnkOuter->Release ();        return InternalRelease ();	}        HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, void ** ppv)        {	if (m_pUnkOuter)	    return m_pUnkOuter->QueryInterface (riid, ppv);	return wotlQIHelper<T> (this, riid, ppv);	}  private:    static DWORD		m_dwRegToken;        };template <class T>HRESULT CComObject<T>::CreateInstance (CComObject<T>** pp)    {    if (0 != pp)        {        *pp = new CComObject<T> ();        if (0 != *pp)            return S_OK;        return E_OUTOFMEMORY;        }    return E_POINTER;    }template <class T> DWORD CComObject<T>::m_dwRegToken;template <class T>HRESULT CComClassFactory<T>::CreateInstance    (    IUnknown*		pUnkOuter,    REFIID		riid,    void**		ppv    )    {    HRESULT		hr;    static IUnknown*	m_punkTheInstance = 0;    if (singleton_factory)	{	if (pUnkOuter)	    return CLASS_E_NOAGGREGATION;		if (! m_punkTheInstance)	    {	    hr = CComObject<T>::CreateInstance		 (0, IID_IUnknown, (void**) &m_punkTheInstance);	    if (FAILED (hr))		return hr;		// This is a singleton so we will never want to delete it, 		// therefore we increment the ref count.        AddRef ();	    }	return m_punkTheInstance->QueryInterface (riid, ppv);	}        return CComObject<T>::CreateInstance (pUnkOuter, riid, ppv);    }////////////////////////////////////////////////////////////////////////////// CComPtr --  a smart-ptr class (like that of ATL) for holding COM// interface pointers, and performing automatic ref-counting. We don't // provide the CComQIPtr class.//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品2024| 国产91在线看| 国产精品毛片大码女人| 欧美日韩精品一区二区| 成人激情小说乱人伦| 美国毛片一区二区| 一区二区三区欧美亚洲| 国产精品亲子伦对白| 日韩欧美国产一二三区| 欧美色综合天天久久综合精品| 国产在线精品视频| 午夜欧美电影在线观看| 一区二区三区电影在线播| 国产午夜精品一区二区三区视频 | 亚洲丰满少妇videoshd| 欧美国产日本韩| 精品久久久久久久久久久久久久久久久 | 玉米视频成人免费看| 国产亚洲精久久久久久| 日韩欧美久久一区| 制服丝袜中文字幕亚洲| 在线亚洲免费视频| 91一区二区在线| 99久久99久久精品免费看蜜桃| 国产精品中文欧美| 激情综合网激情| 另类成人小视频在线| 丝袜国产日韩另类美女| 亚洲国产sm捆绑调教视频 | 国产欧美日韩麻豆91| 欧美精品一区二区高清在线观看| 777奇米成人网| 欧美一二三四在线| 日韩视频永久免费| 日韩网站在线看片你懂的| 日韩一级视频免费观看在线| 91精品国产入口| 欧美成人精品高清在线播放| 日韩欧美国产小视频| 欧美不卡一区二区| 久久久久久夜精品精品免费| 国产亚洲综合性久久久影院| 久久久久久久一区| 国产亚洲精品aa| 国产精品久久久久久亚洲毛片 | 欧美日韩精品是欧美日韩精品| 欧美亚洲动漫精品| 777午夜精品视频在线播放| 日韩一区二区三区视频| 久久综合九色综合欧美就去吻 | 久久理论电影网| 国产情人综合久久777777| 国产精品系列在线| 亚洲精品水蜜桃| 午夜精品爽啪视频| 精品一区二区三区免费播放| 国产传媒欧美日韩成人| 99久久99久久久精品齐齐| 欧美亚洲高清一区| 精品日韩在线一区| 中文字幕中文字幕中文字幕亚洲无线| 日韩理论片中文av| 亚洲chinese男男1069| 麻豆91免费观看| 成人a免费在线看| 欧美日韩国产另类一区| 精品成人一区二区三区| 国产精品国产自产拍在线| 伊人色综合久久天天| 日本vs亚洲vs韩国一区三区二区| 国产一区二区视频在线| 色婷婷国产精品综合在线观看| 7777女厕盗摄久久久| 亚洲欧洲国产日本综合| 日精品一区二区三区| 国产精品18久久久久久vr| 91视频一区二区| 日韩一区二区三| 亚洲婷婷综合色高清在线| 日韩经典中文字幕一区| 成人av在线资源| 欧美一区二区三区在线观看视频 | 4hu四虎永久在线影院成人| 久久久国产午夜精品| 亚洲国产精品久久不卡毛片| 国产主播一区二区三区| 91国内精品野花午夜精品| 2021中文字幕一区亚洲| 一区二区三区美女| 国产99久久久国产精品| 欧美人牲a欧美精品| 国产精品久久久久桃色tv| 免费成人小视频| 91国产免费看| 国产精品毛片无遮挡高清| 免费日本视频一区| 在线视频欧美区| 国产欧美日韩在线| 免费成人在线观看视频| 91成人免费网站| 欧美极品美女视频| 裸体健美xxxx欧美裸体表演| 在线观看一区二区视频| 亚洲欧洲日韩在线| 国产一区二区按摩在线观看| 欧美区在线观看| 一区二区三区不卡视频| 成人av在线播放网址| 亚洲精品一区二区三区在线观看| 亚洲自拍偷拍麻豆| 91在线无精精品入口| 久久精品在线观看| 久久国产欧美日韩精品| 欧美日韩久久久| 亚洲综合自拍偷拍| av亚洲精华国产精华| 2020国产精品自拍| 裸体一区二区三区| 日韩欧美视频一区| 麻豆一区二区三| 欧美一区二区日韩| 日韩经典一区二区| 欧美另类变人与禽xxxxx| 艳妇臀荡乳欲伦亚洲一区| 99国产精品国产精品毛片| 国产精品久久久久影院亚瑟| 成人a免费在线看| 国产精品久久久久四虎| 99视频国产精品| 国产精品第13页| aaa欧美色吧激情视频| 国产精品家庭影院| 91在线精品秘密一区二区| 亚洲欧美中日韩| 91玉足脚交白嫩脚丫在线播放| 中文字幕欧美一| 日本韩国欧美国产| 亚洲一区二区三区不卡国产欧美 | 日韩女优av电影在线观看| 日韩视频一区二区三区 | 亚洲成人激情自拍| 2欧美一区二区三区在线观看视频| 国产精品理论片| 国产成人在线看| 国产精品美女久久久久高潮| 成人网在线免费视频| 久久精品人人爽人人爽| 成人小视频免费在线观看| 国产精品三级电影| 日本乱人伦一区| 香蕉成人啪国产精品视频综合网| 欧美伦理影视网| 久久精品国产99久久6| 久久精品人人爽人人爽| 99精品国产视频| 亚洲一二三区在线观看| 91麻豆精品国产91久久久久| 精品一区二区影视| 国产清纯美女被跳蛋高潮一区二区久久w| 懂色av一区二区三区免费看| 亚洲mv在线观看| 日韩精品中文字幕在线不卡尤物 | 日韩美女天天操| 亚洲色图欧美偷拍| 日本成人在线看| av在线播放成人| 亚洲欧美自拍偷拍| 欧美日韩国产大片| 国模套图日韩精品一区二区| 国产女同性恋一区二区| 日本韩国欧美在线| 韩国三级中文字幕hd久久精品| 中文字幕亚洲不卡| 欧美一卡在线观看| 成人app网站| 丝袜诱惑亚洲看片| 国产欧美日韩精品一区| 欧美日韩亚洲综合一区二区三区| 国产美女娇喘av呻吟久久| 亚洲一区二区精品视频| 国产网站一区二区| 欧美性一级生活| 国产精品综合一区二区三区| 亚洲韩国一区二区三区| 久久久欧美精品sm网站| 欧美中文字幕久久| 国产不卡免费视频| 视频在线在亚洲| 国产精品国产精品国产专区不蜜| 在线成人免费视频| 99麻豆久久久国产精品免费优播| 免费av成人在线| 亚洲精品水蜜桃| 国产精品午夜免费| 精品欧美乱码久久久久久1区2区| 日韩精品中文字幕在线一区| 日本午夜精品一区二区三区电影 | 国产一区二区精品久久91| 亚洲理论在线观看| 久久精品欧美一区二区三区不卡 |