锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产综合色产,你懂的国产精品,国产精品一区二区你懂得 http://m.shnenglu.com/HeavenOnProg/钑存棤娉曚簬鏈夋硶錛屽寲鏈夐檺涓烘棤闄?/description>zh-cnSun, 16 Nov 2025 05:41:12 GMTSun, 16 Nov 2025 05:41:12 GMT60ATL瀵規(guī)帴鍙f煡璇㈢殑鏀寔http://m.shnenglu.com/HeavenOnProg/archive/2007/04/30/23233.htmlmichaelmichaelMon, 30 Apr 2007 03:37:00 GMThttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/30/23233.htmlhttp://m.shnenglu.com/HeavenOnProg/comments/23233.htmlhttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/30/23233.html#Feedback0http://m.shnenglu.com/HeavenOnProg/comments/commentRss/23233.htmlhttp://m.shnenglu.com/HeavenOnProg/services/trackbacks/23233.htmlCOM瀵硅薄瀹炵幇鎺ュ彛鐨勬柟娉曟槸澶氱澶氭牱鐨勶紝甯哥敤鐨勬湁澶氶噸緇ф壙銆佽仛鍚堛乼ear-off絳夈備負浜嗘渶澶ч檺搴﹀湴鏀寔鎺ュ彛鏌ヨ鐨勫鏍鋒э紝ATL浣跨敤琛ㄩ┍鍔ㄧ殑鏂瑰紡鏉ョ鐞嗘帴鍙f煡璇紝浠ュ仛鍒頒唬鐮佸皝闂拰鎵╁睍鐏墊椿錛岃〃鏉$洰鏍煎紡涓猴細

struct 聽_ATL_INTMAP_ENTRY
{
聽聽聽聽
const 聽IID * 聽piid;聽
聽聽聽聽DWORD_PTR聽dw;
聽聽聽聽_ATL_CREATORARGFUNC
* 聽pFunc;聽
};


piid鏄帴鍙D錛宒w涓鴻嚜瀹氫箟鍙傛暟錛宲Func鏄嚜瀹氫箟鍑芥暟鐨勫湴鍧銆傚湪QueryInterface鏃訛紝ATL璋冪敤pFunc錛屽茍灝哾w浼犵粰pFunc錛宲Func鍙互鏍規(guī)嵁鑷繁鐨勯渶瑕佽В鏋恉w錛岃幏寰楁煡璇㈠繀闇鐨勪俊鎭侫TL棰勬彁渚涗簡涓浜涘嚱鏁版潵澶勭悊涓婅堪甯哥敤鐨勬煡璇㈣姹傦紝濡俖Creator銆乢Delegate絳夛紝瀹冧滑琚斁緗簬CComObjectRootBase涓?br />

錛?錛夊閲嶇戶鎵?br />聽聽聽聽聽聽聽聽聽聽聽ATL騫舵病鏈夋彁渚涙敮鎸佸閲嶇戶鎵跨殑鍑芥暟錛岃屾槸灝唒Func璁劇疆涓篲ATL_SIMPLEMAPENTRY瀹忥紝灝哾w璁句負鐖剁被瀛愬璞″湪瀛愮被瀵硅薄涓殑鍋忕Щ閲忥紝褰撴悳绱㈣〃鏃跺彂鐜皃Func涓篲ATL_SIMPLEMAPENTRY鏃訛紝渚跨洿鎺ヤ嬌鐢ㄥ亸縐婚噺鐩稿姞鑾峰緱緇撴灉銆?/p>

聽聽聽聽聽聽聽聽聽聽聽聽if 聽(pEntries -> pFunc聽 == 聽_ATL_SIMPLEMAPENTRY)聽
聽聽聽聽聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽IUnknown * 聽pUnk聽 = 聽(IUnknown * )((INT_PTR)pThis + pEntries -> dw);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽pUnk
-> AddRef();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
* ppvObject聽 = 聽pUnk;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
return 聽S_OK;
聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽聽鎺ュ彛鏄犲皠琛ㄩ」瀹忎負錛?/p>

聽聽聽聽聽聽聽聽聽#define 聽COM_INTERFACE_ENTRY(x)\
聽聽聽聽聽聽聽聽聽聽聽聽聽{
& _ATL_IIDOF(x),聽\
聽聽聽聽聽聽聽聽聽聽聽聽聽offsetofclass(x,聽_ComMapClass),聽\
聽聽聽聽聽聽聽聽聽聽聽聽聽_ATL_SIMPLEMAPENTRY},


錛?錛夎仛鍚?br />聽聽聽聽聽聽聽聽聽聽聽ATL浣跨敤_Delegate鍑芥暟鏉ユ敮鎸佽仛鍚堬紝姝ゆ椂dw瀛樺偍鐨勬槸鍐呴儴瀵硅薄鎸囬拡鎴愬憳鍙橀噺鍦ㄥ閮ㄥ璞′腑鐨勫亸縐婚噺錛宊Delegate鍒╃敤姝ゅ亸縐婚噺鑾峰緱鍐呴儴瀵硅薄鎸囬拡錛岀劧鍚庡皢鏌ヨ璋冪敤濮旀墭緇欏畠銆?/p>

聽聽聽聽static 聽HRESULT聽WINAPI聽_Delegate( void * 聽pv,聽REFIID聽iid,聽 void ** 聽ppvObject,聽DWORD_PTR聽dw)
聽聽聽聽{
聽聽聽聽聽聽聽聽HRESULT聽hRes聽
= 聽E_NOINTERFACE;
聽聽聽聽聽聽聽聽IUnknown
* 聽p聽 = * (IUnknown ** )((DWORD_PTR)pv聽 + 聽dw);
聽聽聽聽聽聽聽聽
if 聽(p聽 != 聽NULL)
聽聽聽聽聽聽聽聽聽聽聽聽hRes聽
= 聽p -> QueryInterface(iid,聽ppvObject);
聽聽聽聽聽聽聽聽
return 聽hRes;
聽聽聽聽}
聽聽聽
聽聽聽聽聽聽聽聽聽鎺ュ彛鏄犲皠琛ㄩ」瀹忎負錛?br />
聽聽聽聽聽聽#define聽COM_INTERFACE_ENTRY_AGGREGATE(iid,聽punk)\
聽聽聽聽聽聽聽聽聽聽{
&iid,\
聽聽聽聽聽聽聽聽聽聽(DWORD_PTR)offsetof(_ComMapClass,聽punk),\
聽聽聽聽聽聽聽聽聽聽_Delegate},
聽聽聽
錛?錛塼ear-off
聽聽聽聽聽聽聽聽聽聽聽ATL浣跨敤_Creator鍑芥暟鏉ユ敮鎸乼ear-off錛屾鏃禿w涓瓨鍌ㄧ殑鏄竴涓潤鎬乢ATL_CREATORDATA緇撴瀯鐨勫湴鍧錛宊Creator鍒╃敤鍏朵腑鐨勬寚鍚戝垱寤哄嚱鏁扮殑鎸囬拡鍒涘緩涓涓猼ear-off瀵硅薄銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽static聽HRESULT聽WINAPI聽_Creator(void*聽pv,聽REFIID聽iid,聽void**聽ppvObject,聽DWORD_PTR聽dw)
聽聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽_ATL_CREATORDATA
*聽pcd聽=聽(_ATL_CREATORDATA*)dw;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
return聽pcd->pFunc(pv,聽iid,聽ppvObject);
聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽聽鎺ュ彛鏄犲皠琛ㄩ」瀹忎負錛?br />聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽#define聽COM_INTERFACE_ENTRY_TEAR_OFF(iid,聽x)\
聽聽聽聽聽聽聽聽聽聽{
&iid,\
聽聽聽聽聽聽聽聽聽聽(DWORD_PTR)
&ATL::_CComCreatorData<\
聽聽聽聽聽聽聽聽聽聽聽聽聽聽ATL::CComInternalCreator
<聽ATL::CComTearOffObject<聽x聽>>\
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
>::data,\
聽聽聽聽聽聽聽聽聽聽_Creator},

聽聽聽聽聽聽_ComCreatorData鐨勭浉鍏沖畾涔夊涓嬶細
聽聽聽聽聽聽
struct聽_ATL_CREATORDATA
{
聽聽聽聽_ATL_CREATORFUNC
*聽pFunc;
};

template聽
<class聽Creator>
class聽_CComCreatorData
{
public:
聽聽聽聽
static聽_ATL_CREATORDATA聽data;
};

template聽
<class聽Creator>
_ATL_CREATORDATA聽_CComCreatorData
<Creator>::data聽=聽{Creator::CreateInstance};


聽聽聽聽聽聽鎴戜滑榪樺彲浠ュ畾涔夎嚜宸辯殑鎺ュ彛鏌ヨ杈呭姪鍑芥暟鍜岃緟鍔╂暟鎹紝閫氳繃dw鍜宲Func鏉ュ畬鎴愬悇縐嶅崈濂囩櫨鎬殑鎺ュ彛瀹炵幇鏂瑰紡錛岄渶瑕佺殑鍙槸鎯寵薄鍔涖?img src ="http://m.shnenglu.com/HeavenOnProg/aggbug/23233.html" width = "1" height = "1" />

michael 2007-04-30 11:37 鍙戣〃璇勮
]]>
ATL瀵瑰璞″垱寤虹殑鏀寔http://m.shnenglu.com/HeavenOnProg/archive/2007/04/10/21605.htmlmichaelmichaelTue, 10 Apr 2007 09:36:00 GMThttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/10/21605.htmlhttp://m.shnenglu.com/HeavenOnProg/comments/21605.htmlhttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/10/21605.html#Feedback0http://m.shnenglu.com/HeavenOnProg/comments/commentRss/21605.htmlhttp://m.shnenglu.com/HeavenOnProg/services/trackbacks/21605.html聽聽聽聽聽聽聽聽聽鍦ˋTL涓紝class factory綾誨拰鏅氱被瀵硅薄鐨勫垱寤洪兘鍙互閫氳繃琚О涓衡滃垱寤鴻呪濈殑妯℃澘綾繪潵鍒涘緩銆?br />聽聽聽聽聽聽聽聽聽
template聽<class聽T1>
class聽CComCreator
{
public:
聽聽聽聽
static聽HRESULT聽WINAPI聽CreateInstance(void*聽pv,聽REFIID聽riid,聽LPVOID*聽ppv)
聽聽聽聽{
聽聽聽聽聽聽聽聽HRESULT聽hRes聽=聽E_OUTOFMEMORY;
聽聽聽聽聽聽聽聽T1
*聽p聽=聽NULL;
聽聽聽聽聽聽聽聽p聽
=newT1(pv);
聽聽聽聽聽聽聽聽
if聽(p聽!=聽NULL)
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽p
->SetVoid(pv);
聽聽聽聽聽聽聽聽聽聽聽聽p
->InternalFinalConstructAddRef();
聽聽聽聽聽聽聽聽聽聽聽聽hRes聽
=聽p->FinalConstruct();
聽聽聽聽聽聽聽聽聽聽聽聽
p->InternalFinalConstructRelease();
聽聽聽聽聽聽聽聽聽聽聽聽
if聽(hRes聽==聽S_OK)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽hRes聽
=聽p->QueryInterface(riid,聽ppv);
聽聽聽聽聽聽聽聽聽聽聽聽
if聽(hRes聽!=聽S_OK)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽delete聽p;
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
return聽hRes;
聽聽聽聽}
};

聽聽聽聽聽聽聽聽聽鈥滃垱寤鴻呪濋氳繃鎻愪緵涓涓潤鎬佸嚱鏁癈reateInstance鏉ュ垱寤烘寚瀹氱被鐨勫疄渚嬶紝騫朵笖鏌ヨ鎸囧畾鐨勬帴鍙c傜涓涓弬鏁板湪瀹炰緥鍖栨櫘閫氬璞″拰class factory瀵硅薄鏃朵細鏈変笉鍚岋細瀵逛簬鏅氬璞★紝閫氬父浼氫紶閫掕仛鍚堝閮ㄥ璞$殑IUnknown鎸囬拡錛屽鏋滄槸闈炶仛鍚堝垱寤猴紝鍙互浼犻扤ULL錛堣瑙丄TL瀵笴OM瀹炰綋韜喚鐨勬敮鎸佸洓錛夛紱紼嶅悗浼氫粙緇嶅湪class factory鍒涘緩鏃剁涓涓弬鏁扮殑鐢ㄥ銆?br />聽聽聽聽聽聽聽聽聽鍦ˋTL涓紝涓涓猚lass factory瀵硅薄鍙兘鍒涘緩涓縐嶇被鍨嬬殑COM綾誨疄渚嬨傚湪class factory鐨凜reateInstance鍑芥暟涓紝瀹冧笉鏄‖緙栫爜琚垱寤虹殑瀵硅薄綾誨瀷錛岃屾槸閫氳繃涓涓?em>鍑芥暟鎸囬拡鎴愬憳鍙橀噺鏉ュ垱寤哄畠鎵綆$悊鐨勫璞★紝鑰岃繖涓嚱鏁版寚閽堟寚鍚戠殑閫氬父灝辨槸鏌愪釜COM綾葷殑鈥滃垱寤鴻呪濈被鐨凜reateInstance闈欐佸嚱鏁扮殑鍦板潃錛屾鍦板潃鏄湪class factory瀵硅薄琚畠鑷韓鐨勨滃垱寤鴻呪濈殑CreateInstance鍑芥暟鍒涘緩鏃墮氳繃絎竴涓弬鏁頒紶榪涙潵鐨勶紝class factory閲嶆柊瀹氫箟浜哠etVoid鍑芥暟錛屽茍涓斾繚瀛樿繖涓湴鍧錛?br />聽聽聽聽聽聽聽聽聽
class聽CComClassFactory聽:
聽聽聽聽
public聽IClassFactory,
聽聽聽聽
public聽CComObjectRootEx<CComGlobalsThreadModel>
{
public:
聽聽聽聽
//聽IClassFactory
聽聽聽聽STDMETHOD(CreateInstance)(LPUNKNOWN聽pUnkOuter,聽REFIID聽riid,聽void**聽ppvObj)
聽聽聽聽{
聽聽聽聽聽聽聽聽HRESULT聽hRes聽=聽E_POINTER;
聽聽聽聽聽聽聽聽
if聽(ppvObj聽!=聽NULL)
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽
*ppvObj聽=聽NULL;
聽聽聽聽聽聽聽聽聽聽聽聽if聽((pUnkOuter聽!=聽NULL)聽&&!InlineIsEqualUnknown(riid))
聽聽聽聽聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽hRes聽=聽CLASS_E_NOAGGREGATION;
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽hRes聽
=聽m_pfnCreateInstance(pUnkOuter,聽riid,聽ppvObj);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
return聽hRes;
聽聽聽聽}

聽聽聽聽STDMETHOD(LockServer)(BOOL聽fLock)
聽聽聽聽{
聽聽聽聽聽聽聽聽
if聽(fLock)
聽聽聽聽聽聽聽聽聽聽聽聽_pAtlModule
->Lock();
聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽聽聽聽聽_pAtlModule
->Unlock();
聽聽聽聽聽聽聽聽
return聽S_OK;
聽聽聽聽}

聽聽聽聽void聽SetVoid(void*聽pv)
聽聽聽聽{
聽聽聽聽聽聽聽聽m_pfnCreateInstance聽
=聽(_ATL_CREATORFUNC*)pv;
聽聽聽聽}

聽聽聽聽_ATL_CREATORFUNC
*聽m_pfnCreateInstance;
};

聽聽聽聽聽聽聽聽聽鏍規(guī)嵁涓婇潰鐨勮璁猴紝涓涓狢OM綾葷殑鍒涘緩鑰呬細鍍忚繖涓牱瀛愶細
聽聽聽聽聽聽聽聽聽CComCreator<聽CComObject<CMyClass> >
聽聽聽聽聽聽聽聽聽鑰屼竴涓猚lass factory鐨勫垱寤鴻呬細鍍忚繖涓牱瀛愶細
聽聽聽聽聽聽聽聽聽CComCreator< CComCachedObject<CComClassFactory> >銆?br />聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽ATL鍦ㄥ鎴瘋姹傚垱寤篊MyClass瀵硅薄鏃舵墽琛岀殑浼唬鐮佸涓嬶細
聽聽聽聽聽聽聽聽聽
typedef聽CComCreator<聽CComCachedObject<CComClassFactory>>聽CClassFactoryCreator;
typedef聽CComCreator
<聽CComObject<CMyClass>>聽CMyClassCreator;

IClassFactory
*聽pcf=NULL;
CClassFactoryCreator::CreateInstance(
&CMyClassCreator::CreateInstance,__uuidof(IClassFactory),&pcf);
pcf
->CreateInstance(pOuter,__uuidof(IMyInterface),ppvObj);


michael 2007-04-10 17:36 鍙戣〃璇勮
]]>
ATL瀵笴OM瀹炰綋韜喚鐨勬敮鎸侊紙鍥涳級鈥斺?CComObject鍙婂叾浼欎即http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21408.htmlmichaelmichaelFri, 06 Apr 2007 07:33:00 GMThttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21408.htmlhttp://m.shnenglu.com/HeavenOnProg/comments/21408.htmlhttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21408.html#Feedback0http://m.shnenglu.com/HeavenOnProg/comments/commentRss/21408.htmlhttp://m.shnenglu.com/HeavenOnProg/services/trackbacks/21408.html

聽聽聽聽聽聽鏈変簡CComObjectRootBase銆丆ComObjectRootEx鍜岀嚎紼嬫ā鍨嬬壒寰佺被榪欎簺鍩虹鍘熸枡錛孋ComObject鍜屽畠鐨勪紮浼翠滑渚垮彲浠ヨ嚜鐢辯殑鍙戞尌瀹冧滑鐨勬兂璞′簡銆?br />
1.CComObject 鈥斺?鏅氬爢瀵硅薄聽聽聽聽聽聽
聽聽聽涓嬮潰鏄簿綆鐨凜ComObject妯℃澘綾葷殑瀹氫箟錛毬犅犅犅犅犅?/p>

template聽 < class 聽Base >
class 聽CComObject聽:聽 public 聽Base
{
public :
聽聽聽聽CComObject(
void * = 聽NULL)聽 throw ()
聽聽聽聽{
聽聽聽聽聽聽聽聽_pAtlModule
-> Lock();
聽聽聽聽}
聽聽聽聽
聽聽聽聽virtual ~ CComObject()聽 throw ()
聽聽聽聽{
聽聽聽聽聽聽聽聽FinalRelease();
聽聽聽聽聽聽聽 _pAtlModule -> Unlock();
聽聽聽聽}
聽聽聽聽
聽聽聽 STDMETHOD_(ULONG,聽AddRef)()聽{ return 聽InternalAddRef();}
聽聽聽聽STDMETHOD_(ULONG,聽Release)()
聽聽聽聽{
聽聽聽聽聽聽聽聽ULONG聽l聽
= 聽InternalRelease();
聽聽聽聽聽聽聽聽
if 聽(l聽 == 0 )
聽聽聽聽聽聽聽聽聽聽聽聽delete聽
this ;
聽聽聽聽聽聽聽聽
return 聽l;
聽聽聽聽}
聽聽聽聽
聽聽聽聽STDMETHOD(QueryInterface)(REFIID聽iid,聽 void ** 聽ppvObject)聽 throw ()
聽聽聽聽{
return 聽_InternalQueryInterface(iid,聽ppvObject);}
聽聽聽聽

聽聽聽聽
static 聽HRESULT聽WINAPI聽CreateInstance(CComObject < Base >** 聽pp)聽 throw ();
};


鈥滄櫘閫氬爢瀵硅薄鈥濇槸浣跨敤鏈涓洪綣佺殑綾伙紝瀹冩湁濡備笅鐗瑰緛錛?br />錛?錛夊湪鍫嗕腑鍒嗛厤鍐呭瓨 鈥斺?璁℃暟褰掗浂鏃剁敤delete閿姣?br />錛?錛夋敮鎸佺嫭绔嬪瓨鍦ㄧ殑瀵硅薄 鈥斺?浣跨敤InternalXXX鏉ュ疄鐜癐Unknown鍔熻兘
錛?錛変駭鐢熸椂閿佸畾鏈嶅姟鍣紝閿姣佹椂瑙i攣鏈嶅姟鍣?鈥斺?閫傜敤浜庡ぇ澶氭暟COM瀵硅薄

2. CComAggObject 鈥斺?琚仛鍚堝爢瀵硅薄

template聽 < class 聽contained >
class 聽CComAggObject聽:
聽聽聽聽
public 聽IUnknown,
聽聽聽聽
public 聽CComObjectRootEx < 聽typename聽contained::_ThreadModel::ThreadModelNoCS聽 >
{
public :
聽聽聽聽CComAggObject(
void * 聽pv)聽:聽m_contained(pv)
聽聽聽聽{
聽聽聽聽聽聽聽聽_pAtlModule
-> Lock();
聽聽聽聽}
聽聽聽聽
HRESULT聽FinalConstruct()
聽聽聽聽{
聽聽聽聽聽聽聽聽CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS > ::FinalConstruct();
聽聽聽聽聽聽聽聽
return 聽m_contained.FinalConstruct();
聽聽聽聽}
聽聽聽聽
void 聽FinalRelease()
聽聽聽聽{
聽聽聽聽聽聽聽聽CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS > ::FinalRelease();
聽聽聽聽聽聽聽聽m_contained.FinalRelease();
聽聽聽聽}
聽聽聽
virtual ~ CComAggObject()
聽聽聽聽{
聽聽聽聽聽聽聽
聽FinalRelease();
聽聽聽聽聽聽聽聽_pAtlModule -> Unlock();
聽聽聽聽}

聽聽聽聽STDMETHOD_(ULONG,聽AddRef)()聽{
return 聽InternalAddRef();}
聽聽聽聽STDMETHOD_(ULONG,聽Release)()
聽聽聽聽{
聽聽聽聽聽聽聽聽ULONG聽l聽
= 聽InternalRelease();
聽聽聽聽聽聽聽聽
if 聽(l聽 == 0 )
聽聽聽聽聽聽聽聽聽聽聽聽delete聽
this ;
聽聽聽聽聽聽聽聽
return 聽l;
聽聽聽聽}
聽聽聽聽STDMETHOD(QueryInterface)(REFIID聽iid,聽
void ** 聽ppvObject)
聽聽聽聽{
聽聽聽聽聽聽聽聽HRESULT聽hRes聽 = 聽S_OK;
聽聽聽聽聽聽聽聽
if 聽(InlineIsEqualUnknown(iid))
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽
* ppvObject聽 = 聽( void * )(IUnknown * ) this ;
聽聽聽聽聽聽聽聽聽聽聽聽AddRef();
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽聽聽聽聽hRes聽
= 聽m_contained._InternalQueryInterface(iid,聽ppvObject);
聽聽聽聽聽聽聽聽
return 聽hRes;
聽聽聽聽}
聽聽聽
static 聽HRESULT聽WINAPI聽CreateInstance(LPUNKNOWN聽pUnkOuter,聽CComAggObject < contained >** 聽pp)錛?br />
聽聽聽聽CComContainedObject
< contained > 聽m_contained;
};


聽 CComAggObject鏈夊涓嬬壒寰侊細
錛?錛夊湪鍫嗕腑鍒嗛厤鍐呭瓨
錛?錛夋敮鎸佽鑱氬悎鑱氬悎鐨勫璞?br />聽聽聽聽聽聽聽聽聽聽聽瀹炵幇浜嗕袱浠絀Unknown錛欳ComAggObject瀹炵幇浜嗗唴閮ㄨ仛鍚堢被鐪熸鐨処Unknown錛屽畠綆$悊瀵硅薄鐨勭敓瀛樻湡錛屽茍涓斿畬鎴愭帴鍙f煡璇紙閫氳繃contained瀵硅薄鐨刜InternalQueryInterface錛夛紱contained瀵硅薄瀹炵幇浜嗗叿鏈夎漿鍙戝姛鑳界殑IUnknown錛屽畠?yōu)畣鎵鏈夌殑璋冪敤杞彂緇機ComAggObject鍦ㄦ瀯閫犲嚱鏁頒腑鏀跺埌鐨勫閮↖Unknown鎸囬拡銆?br />錛?錛変駭鐢熸椂閿佸畾鏈嶅姟鍣紝閿姣佹椂瑙i攣鏈嶅姟鍣?br />
3. CComTearOffObject 鈥斺?tear-off 瀵硅薄

template聽 < class 聽Base >
class 聽CComTearOffObject聽:聽 public 聽Base
{
public :
聽聽聽聽CComTearOffObject(
void * 聽pv)
聽聽聽聽{
聽聽聽聽聽聽聽聽m_pOwner聽 = 聽reinterpret_cast < Base::_OwnerClass *> (pv);
聽聽聽聽聽聽聽聽m_pOwner
-> AddRef();
聽聽聽聽}
聽聽聽聽 ~ CComTearOffObject()
聽聽聽聽{
聽聽聽聽聽聽聽聽FinalRelease();
聽聽聽聽聽聽聽聽m_pOwner -> Release();
聽聽聽聽}

聽聽聽聽STDMETHOD_(ULONG,聽AddRef)()聽
throw ()聽{ return 聽InternalAddRef();}
聽聽聽聽STDMETHOD_(ULONG,聽Release)()聽
throw ()
聽聽聽聽{
聽聽聽聽聽聽聽聽ULONG聽l聽
= 聽InternalRelease();
聽聽聽聽聽聽聽聽
if 聽(l聽 == 0 )
聽聽聽聽聽聽聽聽聽聽聽聽delete聽
this ;
聽聽聽聽聽聽聽聽
return 聽l;
聽聽聽聽}
聽聽聽聽STDMETHOD(QueryInterface)(REFIID聽iid,聽
void ** 聽ppvObject)聽 throw ()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return 聽m_pOwner -> QueryInterface(iid,聽ppvObject);
聽聽聽聽}
};

聽聽聽tear-off瀵硅薄鏈夊涓嬬壒寰侊細
錛?錛夊湪鍫嗕腑鍒嗛厤鍐呭瓨
錛?錛夋敮鎸佸湪ATL緇勪歡鍐呴儴浣跨敤鐨則ear-off鎶鏈?br />錛?錛夌敓鎴愭椂閿佸畾鐖跺璞★紝閿姣佹椂瑙i攣鐖跺璞?br />錛?錛夌敓鍛藉懆鏈熺敱鑷繁綆$悊錛屾帴鍙f煡璇㈠鎵樼埗瀵硅薄

4. CComObjectStack 鈥斺?鏍堝璞?br />聽聽聽
template聽<class聽Base>
class聽CComObjectStackEx聽:聽public聽Base
{
public:
聽聽聽聽CComObjectStackEx(
void*=聽NULL)聽
聽聽聽聽{聽
聽聽聽聽聽聽聽聽m_hResFinalConstruct聽=聽FinalConstruct();聽
聽聽聽聽}
聽聽聽聽
virtual~CComObjectStackEx()
聽聽聽聽{
聽聽聽聽聽聽聽
FinalRelease();
聽聽聽 }

聽聽聽聽STDMETHOD_(ULONG,聽AddRef)()
聽聽聽聽{
聽聽聽聽聽聽聽 return0;
聽聽聽聽}

聽聽聽聽STDMETHOD_(ULONG,聽Release)()
聽聽聽聽{
聽聽聽聽聽聽聽聽return0;
聽聽聽聽}

聽聽聽聽STDMETHOD(QueryInterface)(REFIID聽iid,聽
void**聽ppvObject)
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽_InternalQueryInterface(iid,聽ppvObject);
聽聽聽聽}

聽聽聽聽HRESULT聽m_hResFinalConstruct;
};

聽聽聽鏍堝璞℃湁濡備笅鐗瑰緛錛?br />錛?錛夊唴瀛樺垎閰嶄簬鏍堜笂 鈥斺?涓嶉渶瑕佸璞¤冭檻閲婃斁闂
錛?錛夋棤寮曠敤璁℃暟鍔熻兘
錛?錛夋瀯閫犳椂鍒濆鍖?鈥斺?闇瑕佸湪鏋勯犲嚱鏁拌皟鐢ㄥ悗媯鏌_hResFinalConstruct錛屼互鍒ゆ柇瀵硅薄鏄惁鏋勯犳垚鍔?br />錛?錛変笉閿佸畾鏈嶅姟鍣?br />
5. CComObjectGlobal 鈥斺?鍏ㄥ眬瀵硅薄
template聽<class聽Base>
class聽CComObjectGlobal聽:聽public聽Base
{
public:
聽聽聽聽CComObjectGlobal(
void*=聽NULL)
聽聽聽聽{
聽聽聽聽聽聽聽
m_hResFinalConstruct聽=聽FinalConstruct();
聽聽聽聽}
聽聽聽聽
virtual~CComObjectGlobal()
聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽FinalRelease();
聽聽
聽聽}
聽聽聽聽STDMETHOD_(ULONG,聽AddRef)()聽
throw()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽_pAtlModule->Lock();
聽聽聽聽}
聽聽聽聽STDMETHOD_(ULONG,聽Release)()聽
throw()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽_pAtlModule->Unlock();
聽聽聽聽}
聽聽聽聽STDMETHOD(QueryInterface)(REFIID聽iid,聽
void**聽ppvObject)聽throw()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽_InternalQueryInterface(iid,聽ppvObject);
聽聽聽聽}
聽聽聽聽HRESULT聽m_hResFinalConstruct;
};
聽聽聽
聽聽聽鍏ㄥ眬瀵硅薄鏈夊涓嬬壒寰侊細
錛?錛夊湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛?br />錛?錛夊垵濮嬪寲鏃朵笉閿佸畾鏈嶅姟鍣紝寮曠敤璁℃暟鍙樺寲鏃舵墠閿佸畾鎴栬呰В閿佹湇鍔″櫒錛岃繖浣垮緱鍏ㄥ眬瀵硅薄鍙互琚敤浜庡叏灞綾誨巶瀵硅薄錛屼互瑙e喅鏈嶅姟鍣ㄥ拰綾誨巶涔嬮棿鐨勬閿侀棶棰?br />錛?錛夋瀯閫犳柟寮忓悓鏍堝璞?br />
聽聽聽榪樻湁涓浜涘叾瀹冪綾葷殑鐢熷瓨鏈熺鐞嗙被錛屽CComObjectNoLock銆丆ComObjectCached銆丆ComPolyObject絳夌瓑錛屽畠浠篃閮芥湁鑷繁鐙埌鐨勭敤澶勶紝鎴戜滑涔熷彲浠ユ牴鎹嚜宸辯殑闇瑕佺紪鍐欒嚜瀹氫箟鐨勭被銆傛諱箣CComObjectRootBase銆丆ComObjectRootEx鍜岀嚎紼嬫ā鍨嬬壒寰佺被灝卞儚鏄Н鏈ㄤ竴鏍鳳紝鎴戜滑鍙互浠繪剰鐨勬妸瀹冧滑緇勫悎鎴愭兂瑕佺殑褰㈢姸銆?img src ="http://m.shnenglu.com/HeavenOnProg/aggbug/21408.html" width = "1" height = "1" />

michael 2007-04-06 15:33 鍙戣〃璇勮
]]>
ATL瀵笴OM瀹炰綋韜喚鐨勬敮鎸侊紙涓夛級鈥斺?璁塊棶鍚屾鏀寔http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21403.htmlmichaelmichaelFri, 06 Apr 2007 06:39:00 GMThttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21403.htmlhttp://m.shnenglu.com/HeavenOnProg/comments/21403.htmlhttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21403.html#Feedback0http://m.shnenglu.com/HeavenOnProg/comments/commentRss/21403.htmlhttp://m.shnenglu.com/HeavenOnProg/services/trackbacks/21403.html
class聽CComSingleThreadModel
{
public:
聽聽聽聽
static聽ULONG聽WINAPI聽Increment(LPLONG聽p)聽throw()聽{return++(*p);}
聽聽聽聽
static聽ULONG聽WINAPI聽Decrement(LPLONG聽p)聽throw()聽{return--(*p);}
聽聽聽聽typedef聽CComFakeCriticalSection聽AutoCriticalSection;
聽聽聽聽typedef聽CComFakeCriticalSection聽CriticalSection;
聽聽聽聽typedef聽CComSingleThreadModel聽ThreadModelNoCS;
};
class聽CComMultiThreadModel
{
public:
聽聽聽聽
static聽ULONG聽WINAPI聽Increment(LPLONG聽p)聽throw()聽{return聽InterlockedIncrement(p);}
聽聽聽聽
static聽ULONG聽WINAPI聽Decrement(LPLONG聽p)聽throw()聽{return聽InterlockedDecrement(p);}
聽聽聽聽typedef聽CComAutoCriticalSection聽AutoCriticalSection;
聽聽聽聽typedef聽CComCriticalSection聽CriticalSection;
聽聽聽聽typedef聽CComMultiThreadModelNoCS聽ThreadModelNoCS;
};
鍏朵腑鐨凜FakeCriticalSection瀹氫箟濡備笅錛?br />
class聽CComFakeCriticalSection
{
public:
聽聽聽聽HRESULT聽Lock()聽
throw()聽{聽return聽S_OK;聽}
聽聽聽聽HRESULT聽Unlock()聽
throw()聽{聽return聽S_OK;聽}
聽聽聽聽HRESULT聽Init()聽
throw()聽{聽return聽S_OK;聽}
聽聽聽聽HRESULT聽Term()聽
throw()聽{聽return聽S_OK;聽}
};

榪欎袱涓被鎻愪緵浜嗛拡瀵圭壒瀹氬闂村璞$殑鍚屾鎺у埗鏀寔銆?br />CComSingleThreadModel閫傜敤浜庡崟綰跨▼濂楅棿瀵硅薄錛屽畠涓嶉噰鐢ㄤ換浣曠嚎紼嬪悓姝ユ満鍒訛紱CComMultiThreadModel閫傜敤浜庡綰跨▼濂楅棿瀵硅薄錛屽畠浣跨敤win32鐨勫悓姝ユ満鍒舵潵瀹炵幇銆?br />
2.CComObjectRootEx妯℃澘綾?br />
template聽<class聽ThreadModel>
class聽CComObjectRootEx聽:聽public聽CComObjectRootBase
{
public:
聽聽聽聽typedef聽ThreadModel聽_ThreadModel;
聽聽聽聽typedef聽typename聽_ThreadModel::AutoCriticalSection聽_CritSec;
聽聽聽聽typedef聽CComObjectLockT
<_ThreadModel>聽ObjectLock;

聽聽聽聽ULONG聽InternalAddRef()
聽聽聽聽{
聽聽聽聽聽聽聽
return聽_ThreadModel::Increment(&m_dwRef);
聽聽聽聽}
聽聽聽聽ULONG聽InternalRelease()
聽聽聽聽{
聽聽聽聽聽聽聽聽return聽_ThreadModel::Decrement(&m_dwRef);
聽聽聽聽}

聽聽聽聽
void聽Lock()聽{m_critsec.Lock();}
聽聽聽聽
void聽Unlock()聽{m_critsec.Unlock();}

private:
聽聽聽聽_CritSec聽m_critsec;
};

瀹冧嬌鐢ㄤ紶鍏ョ殑綰跨▼妯″瀷鐗瑰緛綾繪潵瀹炵幇瀵硅薄鐙珛瀛樺湪鏃舵墍闇瑕佺殑寮曠敤璁℃暟鏀寔錛屽悓鏃舵彁渚涗簡涓涓柟渚垮璞″紑鍙戜嬌鐢ㄧ殑鍚屾閿侊紝鎴戜滑鍙互浣跨敤榪欎釜閿佹潵瀹屾垚瀵硅嚜瀹氫箟鏁版嵁璁塊棶鐨勪繚鎶ゃ?img src ="http://m.shnenglu.com/HeavenOnProg/aggbug/21403.html" width = "1" height = "1" />

michael 2007-04-06 14:39 鍙戣〃璇勮
]]>
ATL瀵笴OM瀹炰綋韜喚鐨勬敮鎸侊紙浜岋級鈥斺?CComObjectRootBasehttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21393.htmlmichaelmichaelFri, 06 Apr 2007 05:51:00 GMThttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21393.htmlhttp://m.shnenglu.com/HeavenOnProg/comments/21393.htmlhttp://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21393.html#Feedback0http://m.shnenglu.com/HeavenOnProg/comments/commentRss/21393.htmlhttp://m.shnenglu.com/HeavenOnProg/services/trackbacks/21393.html涓嬮潰鏄疌ComObjectRootBase鐨勫叧閿唬鐮侊細

class 聽CComObjectRootBase
{
public :
聽聽聽聽聽// 鏋勯犳敮鎸?br />聽聽聽聽聽//
聽聽
聽聽HRESULT聽FinalConstruct();
聽聽聽void聽FinalRelease();聽

聽聽聽聽聽//聽聽鎺ュ彛鏌ヨ鏀寔
聽聽聽聽聽//
聽聽聽聽聽static聽HRESULT聽WINAPI聽InternalQueryInterface(void*聽pThis,
聽聽聽聽聽聽聽聽
const聽_ATL_INTMAP_ENTRY*聽pEntries,聽REFIID聽iid,聽void**聽ppvObject);
聽聽聽
聽聽聽聽static聽HRESULT聽WINAPI聽_Break(void*,聽REFIID聽iid,聽void**,聽DWORD_PTR聽);
聽聽聽聽static聽HRESULT聽WINAPI聽_NoInterface(void*,聽REFIID聽,聽void**,聽DWORD_PTR聽);
聽聽聽聽static聽HRESULT聽WINAPI聽_Creator(void*聽pv,聽REFIID聽iid,聽void**ppvObject,聽DWORD_PTR聽dw);
聽聽聽聽static聽HRESULT聽WINAPI聽_Delegate(void*聽pv,聽REFIID聽iid,聽void**聽ppvObject,聽DWORD_PTR聽dw);
聽聽聽
static聽HRESULT聽WINAPI聽_Chain(void*聽pv,聽REFIID聽iid,聽void**聽ppvObject,聽DWORD_PTR聽dw);
聽聽聽
static聽HRESULT聽WINAPI聽_ChainAttr(void*聽pv,聽REFIID聽iid,聽void**聽ppvObject,聽DWORD_PTR聽dw);
聽聽聽
static聽HRESULT聽WINAPI聽_Cache(void*聽pv,聽REFIID聽iid,聽void**聽ppvObject,聽DWORD_PTR聽dw);

聽聽聽聽//聽 鑱氬悎鏀寔
聽聽聽 //
聽聽ULONG聽OuterAddRef()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽m_pOuterUnknown->AddRef();
聽聽聽聽}
聽聽聽聽ULONG聽OuterRelease()
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽m_pOuterUnknown->Release();
聽聽聽聽}
聽聽聽聽HRESULT聽OuterQueryInterface(REFIID聽iid,聽
void**聽ppvObject)
聽聽聽聽{
聽聽聽聽聽聽聽聽
return聽m_pOuterUnknown->QueryInterface(iid,聽ppvObject);
聽聽聽聽}
聽聽聽聽
聽聽聽 //聽瀹炰綋韜喚鏀寔
聽聽聽 //
聽聽聽聽union
聽聽聽聽{
聽聽聽聽聽聽聽聽
long聽m_dwRef;
聽聽聽聽聽聽聽聽 IUnknown
*聽m_pOuterUnknown;
聽聽聽聽};
};

CComObjectRootBase涓昏鍔熻兘鍒嗕負錛?br />錛?錛夋瀯閫犳敮鎸侊細
聽聽聽聽聽聽聽聽聽聽聽聽鍗矲inalConstruct鍜孎inalRelease錛屽畠浠敤浜庡畨鍏ㄧ殑鏋勯犲拰閿姣佸璞°?br />錛?錛夋帴鍙f煡璇㈡敮鎸?br />聽聽聽聽聽聽聽聽聽聽聽聽閫氳繃鎺ュ彛鏄犲皠琛ㄦ潵瀹屾垚鎺ュ彛鏌ヨ鍔熻兘錛岃緇嗗唴瀹硅鍚庨潰鐨勬枃绔犮?br />錛?錛夎仛鍚堢姸鎬佷笅寮曠敤璁℃暟鎿嶄綔鐨勬敮鎸?br />聽聽聽聽聽聽聽聽聽聽聽聽鎻愪緵浜嗗皢IUnknown璇鋒眰濮旀墭緇欏閮ㄧ粍浠剁殑鏀寔銆傚綋瀵硅薄鐙珛瀛樺湪鏃訛紝瀵瑰紩鐢ㄨ鏁版搷浣滅殑鏀寔琚斁緗簬CComObjectRootEx涓紝鍥犱負娑夊強鍒頒簡濂楅棿鍜岃闂悓姝ャ?br />錛?錛夊疄浣撹韓浠芥敮鎸?br />聽聽聽聽聽聽聽聽聽聽聽聽浣垮緱瀵硅薄鍙互鐙珛瀛樺湪鎴栬呰鑱氬悎錛屽洜涓鴻繍琛屾椂鍒誨璞″彧鑳戒互涓縐嶆柟寮忓瓨鍦紝鎵浠ヤ嬌鐢ㄤ簡union銆?img src ="http://m.shnenglu.com/HeavenOnProg/aggbug/21393.html" width = "1" height = "1" />

michael 2007-04-06 13:51 鍙戣〃璇勮
]]>
ATL瀵笴OM瀹炰綋韜喚鐨勬敮鎸侊紙涓錛夆斺?綾誨眰嬈$粨鏋?/title><link>http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21382.html</link><dc:creator>michael</dc:creator><author>michael</author><pubDate>Fri, 06 Apr 2007 03:46:00 GMT</pubDate><guid>http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21382.html</guid><wfw:comment>http://m.shnenglu.com/HeavenOnProg/comments/21382.html</wfw:comment><comments>http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/HeavenOnProg/comments/commentRss/21382.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/HeavenOnProg/services/trackbacks/21382.html</trackback:ping><description><![CDATA[ <img height="325" alt="ATLComClasses.JPG" src="http://m.shnenglu.com/images/cppblog_com/heavenonprog/ATLComClasses.JPG" width="568" border="0" /> <br />聽聽聽聽聽聽聽聽聽聽聽聽涓涓狢OM瀵硅薄蹇呴』瀹炵幇IUnknown鎺ュ彛鎵瑙勫畾鐨勫姛鑳斤紝鍗崇敓鍛芥湡綆$悊鍜岃繍琛屾椂綾誨瀷杞崲銆?br />錛?錛夊熀鏈琁Unknow鍔熻兘<br />聽聽聽聽聽聽聽聽聽聽聽 瀵硅薄鐨勭敓瀛樻柟寮忓彲浠ユ槸鍫嗗瓨鍌ㄣ佹爤瀛樺偍浠ュ強鍏ㄥ眬瀛樺偍錛屽悓鏃禖OM榪樻彁渚涗簡涓縐嶈鑱氬悎鐨勭敓瀛樻柟寮忋傜敓瀛樻柟寮忎笉鍚岋紝AddRef銆丷elease鍜孮ueryInterface鐨勫疄鐜版柟寮忓氨涓嶅悓銆傛瘮濡傦細瀵逛簬鍫嗘柟寮忥紝Release瑕佸湪寮曠敤璁℃暟褰掗浂鏃惰礋璐i噴鏀懼爢絀洪棿錛岃屾爤浠ュ強鍏ㄥ眬鏂瑰紡鍒欎笉蹇咃紱瀵逛簬鑱氬悎鏂瑰紡錛孉ddRef銆丷elease浠ュ強澶ч儴鍒嗙殑QueryInterface璋冪敤瑕佸鎵樼粰澶栭儴瀵硅薄銆?br />聽聽聽聽聽聽聽聽聽聽聽 涓轟簡杈懼埌瀵硅薄鐨勯昏緫鍔熻兘涓庡叾鐢熷瓨鏂瑰紡鐨勫垎紱伙紝COM鎶婂IUnknown鍩烘湰鍔熻兘鐨勫疄鐜版帹榪熷埌綾誨眰嬈$粨鏋勭殑鏈搴曞眰錛屽嵆CComObject錛堟垨瀹冪殑鍏朵粬浼欎即錛夊銆?br />聽聽聽聽聽聽聽聽聽聽聽 CComObjectRootBase涓篊ComObject鐨勫疄鐜版彁渚涘師鏉愭枡鐨勬敮鎸侊紝濡傛彁渚涘紩鐢ㄨ鏁板彉閲忋佸熀鏈殑鎺ュ彛鏌ヨ鏈哄埗絳夛紝瀹冩槸涓涓滃姛鑳介泦涓被鈥濄?br />錛?錛夊闂村畨鍏ㄦ敮鎸?br />聽聽聽聽聽聽聽聽聽聽聽 鏍規(guī)嵁瀵硅薄鎵澶勭殑濂楅棿綾誨瀷錛屽璞″姛鑳界殑瀹炵幇闇瑕佷笉鍚岀殑鍚屾鏀寔銆傚浜庡崟綰跨▼濂楅棿瀵硅薄錛岀敱COM搴撴潵淇濊瘉璁塊棶鐨勫悓姝ワ紱鑰屽浜庡綰跨▼濂楅棿瀵硅薄錛岄渶瑕佽嚜宸辨潵鍚屾璋冪敤銆備負浜嗕嬌濂楅棿瀹夊叏鏀寔涓庨昏緫鍔熻兘鍒嗙錛孉TL鎻愪緵浜嗕竴緇勬彁渚涚嚎紼嬪畨鍏ㄦ搷浣滄敮鎸佺殑鐗瑰緛綾伙紙traits綾伙級鈥斺?CComSingleThreadModel鍙婂叾浼欎即銆傚畠浠彁渚涗簡瀵逛竴涓狶ONG鍙橀噺鈥滄伆濂界嚎紼嬪畨鍏ㄢ濈殑澧炲噺鎿嶄綔錛屼互鍙婅窡濂楅棿綾誨瀷鍖歸厤鐨凜riticalSection鍔熻兘綾匯?br />聽聽聽聽聽聽聽聽聽聽聽 ATL鍚屾椂鎻愪緵浜咰ComObjectRootEx妯℃澘綾伙紝瀹冧互鏌愮ThreadModel鐗瑰緛綾諱綔涓哄弬鏁幫紝鎻愪緵瀵瑰紩鐢ㄨ鏁扳滄伆濂界嚎紼嬪畨鍏ㄢ濈殑鎿嶄綔錛屽茍涓旀彁渚涗簡涓涓敤浜庡璞″悓姝ョ殑閿併?br />聽聽聽聽聽聽聽聽聽聽聽聽PS:鈥滄伆濂界嚎紼嬪畨鍏ㄢ濈殑鎿嶄綔鐨勬剰鎬濇槸錛氬浜庨渶瑕佺嚎紼嬪悓姝ョ殑瀵硅薄錛屾彁渚泈in32 CriticalSection鏀寔錛涘浜庝笉闇瑕佺殑瀵硅薄錛屽垯浠涔堜篃涓嶅仛銆?br /><img src ="http://m.shnenglu.com/HeavenOnProg/aggbug/21382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/HeavenOnProg/" target="_blank">michael</a> 2007-04-06 11:46 <a href="http://m.shnenglu.com/HeavenOnProg/archive/2007/04/06/21382.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://yzsss.com" target="_blank">激情久久五月天</a>| <a href="http://wltaste.com" target="_blank">免费视频一区二区三区在线观看</a>| <a href="http://www-44442.com" target="_blank">午夜视频在线观看一区</a>| <a href="http://44779c.com" target="_blank">在线亚洲欧美</a>| <a href="http://mmmm26.com" target="_blank">亚洲欧美精品在线观看</a>| <a href="http://xxxbobba.com" target="_blank">午夜精品一区二区在线观看 </a>| <a href="http://18p2.com" target="_blank">欧美日韩在线电影</a>| <a href="http://118626cc.com" target="_blank">欧美日韩精品一区二区三区四区</a>| <a href="http://ipx758.com" target="_blank">欧美视频一区二区三区…</a>| <a href="http://ctmhotel.com" target="_blank">国产伦精品一区二区</a>| <a href="http://aqd1t.com" target="_blank">尤物精品在线</a>| <a href="http://chuangke168.com" target="_blank">一区二区三区精品久久久</a>| <a href="http://www789yys.com" target="_blank">欧美一级专区</a>| <a href="http://18av-2.com" target="_blank">亚洲国产日韩一区二区</a>| <a href="http://nn99dd.com" target="_blank">亚洲日本中文</a>| <a href="http://hkjccc.com" target="_blank">小嫩嫩精品导航</a>| <a href="http://saohu79.com" target="_blank">噜噜噜在线观看免费视频日韩</a>| <a href="http://sexx777.com" target="_blank">欧美国产一区二区三区激情无套</a>| <a href="http://www497171c.com" target="_blank">欧美午夜一区二区</a>| <a href="http://4438x28.com" target="_blank">亚洲电影在线播放</a>| <a href="http://www47011.com" target="_blank">亚洲欧美综合一区</a>| <a href="http://360695.com" target="_blank">亚洲电影激情视频网站</a>| <a href="http://taikonghua.com" target="_blank">亚洲免费一在线</a>| <a href="http://mimi78.com" target="_blank">欧美电影免费观看高清</a>| <a href="http://66666556.com" target="_blank">国产亚洲欧美另类中文</a>| <a href="http://ourskycity.com" target="_blank">一区二区日韩</a>| <a href="http://www5566szy.com" target="_blank">欧美国产亚洲另类动漫</a>| <a href="http://1392266.com" target="_blank">亚洲欧美日韩一区二区</a>| <a href="http://72966t.com" target="_blank">欧美日韩国产专区</a>| <a href="http://223533.com" target="_blank">亚洲国产精品精华液网站</a>| <a href="http://373gg.com" target="_blank">欧美一区二区三区的</a>| <a href="http://5207877.com" target="_blank">亚洲日本aⅴ片在线观看香蕉</a>| <a href="http://qiaoka526.com" target="_blank">性欧美xxxx大乳国产app</a>| <a href="http://xjksrbh.com" target="_blank">欧美日韩激情小视频</a>| <a href="http://638179.com" target="_blank">136国产福利精品导航网址</a>| <a href="http://szywsj.com" target="_blank">新狼窝色av性久久久久久</a>| <a href="http://ww245434.com" target="_blank">亚洲国产日韩综合一区</a>| <a href="http://kgg93.com" target="_blank">久久视频免费观看</a>| <a href="http://710477.com" target="_blank">国产一区二区精品久久99</a>| <a href="http://yp77741.com" target="_blank">中文av一区二区</a>| <a href="http://ggg4444.com" target="_blank">欧美ed2k</a>| <a href="http://6u6uuu666.com" target="_blank">久久免费精品日本久久中文字幕</a>| <a href="http://zb557.com" target="_blank">国产精品伦子伦免费视频</a>| <a href="http://www01614.com" target="_blank">9i看片成人免费高清</a>| <a href="http://eastasp.com" target="_blank">欧美mv日韩mv国产网站app</a>| <a href="http://041935.com" target="_blank">亚洲综合色网站</a>| <a href="http://www333393.com" target="_blank">欧美视频日韩视频在线观看</a>| <a href="http://4446666.com" target="_blank">亚洲精品黄色</a>| <a href="http://56718ca.com" target="_blank">欧美激情精品久久久久久蜜臀</a>| <a href="http://easypufu.com" target="_blank">欧美在线免费一级片</a>| <a href="http://www1982t.com" target="_blank">国内精品视频在线观看</a>| <a href="http://160160160.com" target="_blank">欧美精品久久一区</a>| <a href="http://ww323.com" target="_blank">亚洲高清资源</a>| <a href="http://66889h.com" target="_blank">欧美成人资源</a>| <a href="http://56myf.com" target="_blank">久久综合久色欧美综合狠狠 </a>| <a href="http://080177.com" target="_blank">欧美一区二区精美</a>| <a href="http://jnhrjixie.com" target="_blank">欧美午夜精品久久久久久人妖</a>| <a href="http://bizhijidi.com" target="_blank">亚洲黄色天堂</a>| <a href="http://www-44899.com" target="_blank">亚洲成人资源网</a>| <a href="http://avtb2120.com" target="_blank">欧美成人免费网</a>| <a href="http://456985.com" target="_blank">99国内精品</a>| <a href="http://55555549.com" target="_blank">99精品国产高清一区二区</a>| <a href="http://fengxinye.com" target="_blank">欧美日韩一区二区三区四区在线观看</a>| <a href="http://5657hh.com" target="_blank">亚洲精品乱码</a>| <a href="http://1069024.com" target="_blank">99国产精品99久久久久久</a>| <a href="http://042225.com" target="_blank">欧美日韩成人综合天天影院</a>| <a href="http://428368.com" target="_blank">一本色道久久精品</a>| <a href="http://xiangshi888.com" target="_blank">99热免费精品</a>| <a href="http://psykoptic.com" target="_blank">国产精品私房写真福利视频</a>| <a href="http://44ie.com" target="_blank">久久激情视频</a>| <a href="http://7v51.com" target="_blank">久久综合电影</a>| <a href="http://3838418.com" target="_blank">一区二区三区高清</a>| <a href="http://044925.com" target="_blank">亚洲欧美日韩一区二区</a>| <a href="http://chaoxibg.com" target="_blank">国内精品久久久</a>| <a href="http://www35177.com" target="_blank">亚洲第一区在线</a>| <a href="http://mauhorng.com" target="_blank">欧美日韩国产三级</a>| <a href="http://432dm.com" target="_blank">午夜精品婷婷</a>| <a href="http://dzyhjx.com" target="_blank">久久偷看各类wc女厕嘘嘘偷窃</a>| <a href="http://anal-movie-teen.com" target="_blank">亚洲国产午夜</a>| <a href="http://www-49386.com" target="_blank">亚洲午夜精品久久久久久浪潮</a>| <a href="http://75pppp.com" target="_blank">国产日韩欧美综合</a>| <a href="http://4488269.com" target="_blank">亚洲成在人线av</a>| <a href="http://wwdd44.com" target="_blank">国产精品久久毛片a</a>| <a href="http://8135777.com" target="_blank">久久亚洲国产精品日日av夜夜</a>| <a href="http://wg246.com" target="_blank">久久噜噜噜精品国产亚洲综合</a>| <a href="http://sese699.com" target="_blank">亚洲另类自拍</a>| <a href="http://chunshanketang.com" target="_blank">亚洲女同性videos</a>| <a href="http://32666066.com" target="_blank">在线观看精品视频</a>| <a href="http://cc1024.com" target="_blank">一本色道久久综合亚洲精品婷婷 </a>| <a href="http://833077.com" target="_blank">亚洲国产精品一区二区三区</a>| <a href="http://nebnb89.com" target="_blank">欧美日韩激情小视频</a>| <a href="http://www52y.com" target="_blank">久久黄色级2电影</a>| <a href="http://3451215.com" target="_blank">欧美精品一区二区三</a>| <a href="http://2502255.com" target="_blank">性欧美videos另类喷潮</a>| <a href="http://nachang5117.com" target="_blank">久久亚洲春色中文字幕</a>| <a href="http://961318.com" target="_blank">亚洲欧美三级伦理</a>| <a href="http://pgpg520.com" target="_blank">美国十次了思思久久精品导航</a>| <a href="http://55kam.com" target="_blank">亚洲一区二区三区免费在线观看</a>| <a href="http://caox8.com" target="_blank">欧美亚洲色图校园春色</a>| <a href="http://038226.com" target="_blank">亚洲免费大片</a>| <a href="http://7811c.com" target="_blank">久久久久国产精品www</a>| <a href="http://www34523.com" target="_blank">亚洲天天影视</a>| <a href="http://4449998.com" target="_blank">欧美成年人在线观看</a>| <a href="http://bgdete.com" target="_blank">久久久精品日韩</a>| <a href="http://www-919198.com" target="_blank">欧美视频在线免费</a>| <a href="http://erodasy.com" target="_blank">亚洲国产高清aⅴ视频</a>| <a href="http://www3344uh.com" target="_blank">国产主播精品在线</a>| <a href="http://gjjlzs.com" target="_blank">亚洲一区二区三区四区在线观看</a>| <a href="http://zyjzz.com" target="_blank">亚洲精品欧美在线</a>| <a href="http://youjizzbox.com" target="_blank">欧美福利小视频</a>| <a href="http://ekuyun.com" target="_blank">久久精品二区</a>| <a href="http://98956888.com" target="_blank">欧美亚一区二区</a>| <a href="http://kissgz.com" target="_blank">欧美黄色日本</a>| <a href="http://04781900.com" target="_blank">精品999日本</a>| <a href="http://zgztby.com" target="_blank">欧美一区二区精品久久911</a>| <a href="http://556626.com" target="_blank">宅男噜噜噜66一区二区66</a>| <a href="http://787622.com" target="_blank">蜜臀99久久精品久久久久久软件</a>| <a href="http://ylnnc.com" target="_blank">久久久91精品国产</a>| <a href="http://qqx123.com" target="_blank">国产欧美视频一区二区三区</a>| <a href="http://xjhzgy.com" target="_blank">日韩一区二区福利</a>| <a href="http://yw3329.com" target="_blank">99国产精品99久久久久久粉嫩</a>| <a href="http://jilcool.com" target="_blank">久久精品亚洲一区二区三区浴池</a>| <a href="http://www666se.com" target="_blank">亚洲一区国产一区</a>| <a href="http://www4411n.com" target="_blank">欧美日韩成人一区</a>| <a href="http://spyfaw.com" target="_blank">亚洲激情一区二区</a>| <a href="http://szxrdr.com" target="_blank">亚洲国产精品嫩草影院</a>| <a href="http://044925.com" target="_blank">久久国产精品72免费观看</a>| <a href="http://dxmdzz.com" target="_blank">欧美一区二区三区精品 </a>| <a href="http://www24822.com" target="_blank">欧美激情a∨在线视频播放</a>| <a href="http://xiehaihua.com" target="_blank">久久久久久网</a>| <a href="http://www-6410c.com" target="_blank">韩国av一区二区</a>| <a href="http://wwwcao88.com" target="_blank">欧美一区二区三区电影在线观看</a>| <a href="http://jivbus.com" target="_blank">午夜激情一区</a>| <a href="http://72avav.com" target="_blank">国产精品一区久久</a>| <a href="http://91chaopron.com" target="_blank">香蕉久久久久久久av网站</a>| <a href="http://677679.com" target="_blank">久久精品国产欧美亚洲人人爽</a>| <a href="http://sexx777.com" target="_blank">国产精品一级久久久</a>| <a href="http://402626com.com" target="_blank">亚洲欧美日本精品</a>| <a href="http://sdmsjd.com" target="_blank">久久精品青青大伊人av</a>| <a href="http://456985.com" target="_blank">红桃视频国产精品</a>| <a href="http://811914.com" target="_blank">久久一区亚洲</a>| <a href="http://www-35777.com" target="_blank">欧美激情亚洲自拍</a>| <a href="http://alex-bruni.com" target="_blank">91久久夜色精品国产九色</a>| <a href="http://www-90443.com" target="_blank">久色成人在线</a>| <a href="http://69kun.com" target="_blank">最新日韩欧美</a>| <a href="http://7ccdd.com" target="_blank">亚洲专区在线视频</a>| <a href="http://737sihu.com" target="_blank">国产乱码精品一区二区三区五月婷 </a>| <a href="http://322033.com" target="_blank">欧美四级伦理在线</a>| <a href="http://www-ty66.com" target="_blank">亚洲午夜精品久久久久久app</a>| <a href="http://belerbb.com" target="_blank">亚洲欧美日韩一区二区三区在线</a>| <a href="http://taotuango.com" target="_blank">国产精品久久国产精品99gif </a>| <a href="http://dusenborg.com" target="_blank">亚洲精品久久在线</a>| <a href="http://y65k.com" target="_blank">亚洲综合激情</a>| <a href="http://kakatok.com" target="_blank">国内伊人久久久久久网站视频</a>| <a href="http://26163c.com" target="_blank">久久精品在线</a>| <a href="http://my736.com" target="_blank">亚洲高清自拍</a>| <a href="http://www-787788.com" target="_blank">亚洲女同精品视频</a>| <a href="http://yjizzdizhigmail.com" target="_blank">国产资源精品在线观看</a>| <a href="http://www-964664.com" target="_blank">蜜臀久久久99精品久久久久久</a>| <a href="http://488f.com" target="_blank">亚洲国产精品久久</a>| <a href="http://7m08.com" target="_blank">香蕉久久一区二区不卡无毒影院 </a>| <a href="http://033530.com" target="_blank">国产精品美女主播</a>| <a href="http://fengxinye.com" target="_blank">欧美一区二区日韩</a>| <a href="http://246767.com" target="_blank">91久久久亚洲精品</a>| <a href="http://www-90443.com" target="_blank">欧美专区中文字幕</a>| <a href="http://21bridal.com" target="_blank">亚洲一区中文</a>| <a href="http://91sp136.com" target="_blank">国产欧美一区二区精品婷婷</a>| <a href="http://993934.com" target="_blank">久久久水蜜桃</a>| <a href="http://tuiliqi.com" target="_blank">一本色道久久综合亚洲精品不卡</a>| <a href="http://gjjlzs.com" target="_blank">久久狠狠久久综合桃花</a>| <a href="http://m-pisiwa.com" target="_blank">亚洲国产专区</a>| <a href="http://110673.com" target="_blank">国产日韩av在线播放</a>| <a href="http://goutoujunshi.com" target="_blank">乱人伦精品视频在线观看</a>| <a href="http://6666345.com" target="_blank">日韩一级在线观看</a>| <a href="http://www48929.com" target="_blank">欧美不卡视频</a>| <a href="http://avtb2120.com" target="_blank">亚欧成人在线</a>| <a href="http://yzstbjt.com" target="_blank">一区二区三区 在线观看视频</a>| <a href="http://2jjzz.com" target="_blank">韩国欧美一区</a>| <a href="http://6688se.com" target="_blank">欧美午夜精品伦理</a>| <a href="http://zhengnuoxin.com" target="_blank">免费一级欧美在线大片</a>| <a href="http://oimeal.com" target="_blank">香港久久久电影</a>| <a href="http://www-44469.com" target="_blank">日韩午夜激情电影</a>| <a href="http://anquye16.com" target="_blank">欧美www在线</a>| <a href="http://www24668.com" target="_blank">亚洲欧美日韩一区在线观看</a>| <a href="http://2061375.com" target="_blank">亚洲日本在线视频观看</a>| <a href="http://772ss.com" target="_blank">国产专区精品视频</a>| <a href="http://8013sf.com" target="_blank">国产精品一区二区你懂得</a>| <a href="http://tp112.com" target="_blank">欧美激情中文字幕在线</a>| <a href="http://8xfore.com" target="_blank">欧美一区二区三区视频免费</a>| <a href="http://huayoue.com" target="_blank">99精品久久免费看蜜臀剧情介绍</a>| <a href="http://ategpu.com" target="_blank">欧美99在线视频观看</a>| <a href="http://dacellflex.com" target="_blank">久久精品免视看</a>| <a href="http://bby99.com" target="_blank">性欧美xxxx大乳国产app</a>| <a href="http://bandycup.com" target="_blank">一区二区三区av</a>| <a href="http://448968.com" target="_blank">亚洲理伦在线</a>| <a href="http://www-787788.com" target="_blank">亚洲精品欧美日韩专区</a>| <a href="http://18av-77.com" target="_blank">亚洲国产精品999</a>| <a href="http://ju255.com" target="_blank">亚洲高清视频一区二区</a>| <a href="http://270909.com" target="_blank">一区二区三区在线观看欧美</a>| <a href="http://5110010.com" target="_blank">国产欧美一区二区精品性</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>