锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产手机视频一区二区,美女久久一区,噜噜噜在线观看免费视频日韩http://www.shnenglu.com/flagman/category/15574.html 鍞愪寒鐨勪釜浜烘妧鏈崥瀹? 銆愭榪庤漿杞斤紝浣嗚鏍囨槑鍘熶綔鑰呫?/description>zh-cnMon, 12 Dec 2011 16:19:44 GMTMon, 12 Dec 2011 16:19:44 GMT60C++ library series -- in the MFC multiple-thread environment, how to quit worker-thread safely which begins with AfxBeginThreadhttp://www.shnenglu.com/flagman/archive/2011/12/11/how_to_quit_worker-thread_safely_which_begins_with_AfxBeginThread.htmlflagmanflagmanSun, 11 Dec 2011 12:35:00 GMThttp://www.shnenglu.com/flagman/archive/2011/12/11/how_to_quit_worker-thread_safely_which_begins_with_AfxBeginThread.htmlhttp://www.shnenglu.com/flagman/comments/161934.htmlhttp://www.shnenglu.com/flagman/archive/2011/12/11/how_to_quit_worker-thread_safely_which_begins_with_AfxBeginThread.html#Feedback0http://www.shnenglu.com/flagman/comments/commentRss/161934.htmlhttp://www.shnenglu.com/flagman/services/trackbacks/161934.html
  In the MFC environment, normally, thread should be launched with AfxBeginThread for taking usage of MFC multiple-thread mechanism; In such mechanism, those datastructures, such as AFX_MODULE_STATE, would be used by MFC framework to maintain related thread information. It runs well when threads, launched with AfxBeginThread, quit before the main thread, which is responsible for initializing C run-time, but if such main thread quit before any other thread launched by AfxBeginThread, the current application would crash.
  Such crash comes from the _afxThreadData (CThreadSlotData* _afxThreadData, which is defined in AFXTLS.cpp as global data structure) has been destructed while the main thread quits and it will invoke related function to clean up global data structures, including _afxThreadData definitely.
  Consequently, serious developer should prepare for such case (other worker thread quits before main thread).
  
  The reasonable resolve for such issue, would ensure any other threads should quit before the main thread. 
  
.h file 
  /////////////////////////////////////////////////////////////////////////////
// CSafeEnterLeaveThread thread
class CSafeEnterLeaveThread : public CWinThread
{
DECLARE_DYNCREATE(CSafeEnterLeaveThread)
protected:
CSafeEnterLeaveThread();           // protected constructor used by dynamic creation
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSafeEnterLeaveThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CSafeEnterLeaveThread();
// Generated message map functions
//{{AFX_MSG(CSafeEnterLeaveThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
.cpp file 
/////////////////////////////////////////////////////////////////////////////
// CSafeEnterLeaveThread
IMPLEMENT_DYNCREATE(CSafeEnterLeaveThread, CWinThread)
CSafeEnterLeaveThread::CSafeEnterLeaveThread()
{
}
CSafeEnterLeaveThread::~CSafeEnterLeaveThread()
{
}
BOOL CSafeEnterLeaveThread::InitInstance()
{
// TODO:  perform and per-thread initialization here
ASSERT(this->m_hThread);
CMainApp::RegisterMFCThread(this->m_hThread);
return TRUE;
}
int CSafeEnterLeaveThread::ExitInstance()
{
// TODO:  perform any per-thread cleanup here
ASSERT(this->m_hThread);
CMainApp::UnRegisterMFCThread(this->m_hThread);
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CSafeEnterLeaveThread, CWinThread)
//{{AFX_MSG_MAP(CSafeEnterLeaveThread)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
And in the CMainApp,
set<HANDLE> g_ThreadHandleSet;
HANDLE g_ThreadHandleArray[MAXIMUM_WAIT_OBJECTS];
CCriticalSection g_csGlobalData;
void CAccgbApp::CheckAllOtherMFCThreadsLeave()
{
int count = g_ThreadHandleSet.size();
if (count == 0) return;
set<HANDLE>::iterator it;
int idx = 0;
for (it = g_ThreadHandleSet.begin(); it != g_ThreadHandleSet.end() && idx < MAXIMUM_WAIT_OBJECTS; it++, idx++)
{
g_ThreadHandleArray[idx] = *it;
}
if (count > idx) count = idx;
::WaitForMultipleObjects(count, g_ThreadHandleArray, TRUE, INFINITE);
}
void CAccgbApp::CleanupGlobalData()
{
g_csGlobalData.Lock();
g_ThreadHandleSet.empty();
g_csGlobalData.Unlock();
}
BOOL CAccgbApp::RegisterMFCThread(HANDLE hThread)
{
if (hThread == NULL) return FALSE;
g_csGlobalData.Lock();
if (g_ThreadHandleSet.find(hThread) == g_ThreadHandleSet.end()) 
g_ThreadHandleSet.insert(hThread);
g_csGlobalData.Unlock();
return TRUE;
}
void CAccgbApp::UnRegisterMFCThread(HANDLE hThread)
{
if (hThread == NULL) return;
g_csGlobalData.Lock();
if (g_ThreadHandleSet.find(hThread) != g_ThreadHandleSet.end())
g_ThreadHandleSet.erase(hThread);
g_csGlobalData.Unlock();
}


flagman 2011-12-11 20:35 鍙戣〃璇勮
]]>
鎿嶄綔緋葷粺鎬庝箞鏍規嵁涓涓狧WND鍙ユ焺錛屾壘鍒扮浉搴旂殑浠g爜http://www.shnenglu.com/flagman/archive/2011/04/04/Mapping_BetweenCppObjectAndHWND_InMFC.htmlflagmanflagmanMon, 04 Apr 2011 06:16:00 GMThttp://www.shnenglu.com/flagman/archive/2011/04/04/Mapping_BetweenCppObjectAndHWND_InMFC.htmlhttp://www.shnenglu.com/flagman/comments/143398.htmlhttp://www.shnenglu.com/flagman/archive/2011/04/04/Mapping_BetweenCppObjectAndHWND_InMFC.html#Feedback4http://www.shnenglu.com/flagman/comments/commentRss/143398.htmlhttp://www.shnenglu.com/flagman/services/trackbacks/143398.html銆?鍦?鏌?鐨勫ぇ浣滀腑鎻愬埌: 銆?/em>

: 姣斿鎴戞湁涓涓狢MyButton鐨勭被錛屾垜鐜板湪鏈変粬鐨勪竴涓猦andle
: 緙栬瘧鍣ㄦ庝箞鏍規嵁榪欎釜鍙ユ焺鎵懼埌CMyButton鐨勪唬鐮佺殑錛?/em>

銆?鍦?鏌愭煇 鐨勫ぇ浣滀腑鎻愬埌: 銆?br>: 榪欎釜鍜孫S/Compiler娌″叧緋伙紝鏄簱璧風殑浣滅敤
: 浠ヤ粠鏌愪釜鏂囩珷閲岀湅鐨勶紝璇碝FC鐢ㄤ簡涓涓ぇmap錛屾病楠岃瘉榪?br>: 鏈夋湰璁睪DI鐨勪功閲岋紝鐢ㄤ簡WNDCLASS閲岀殑extra bytes鏉ュ疄鐜扮殑榪欎釜鏄犲皠

 


MFC鐨勫簲鐢ㄩ噷錛屾瘡涓狹FC綰跨▼錛堝繀欏昏浣跨敤MFC鏂瑰紡鍚姩鐨勭嚎紼嬶級閮界淮鎶ゆ湁涓涓狹FC object鍜孒WND涔嬮棿鐨?/p>

mapping錛屾暣涓狹FC妗嗘灦灝辨槸浣跨敤榪欎釜鏈哄埗鏉ュ疄鐜板簲鐢ㄧ駭C++瀵硅薄鍜岀郴緇熺駭鍘熺敓紿楀彛鍐呮牳瀵硅薄涔嬮棿鐨勫叧鑱旓紱

鍥犱負榪欎釜mapping鏄互綰跨▼涓哄崟浣嶆潵緇存姢鐨勶紝姣忎釜綰跨▼闂翠簰涓嶅叧鑱旓紝鎵浠ワ紝涓涓簲鐢ㄩ噷瀵逛簬娑夊強UI紿楀彛鐨?/p>

浠誨姟鏈濂芥槸閮芥斁鍦ㄥ悓涓涓嚎紼嬮噷闈紝涓鑸氨鏄綋鍓嶈繘紼嬬殑涓葷嚎紼嬶紝鍚﹀垯鍙兘鍑虹幇MFC object鍜孒WND涔嬮棿

鍏寵仈涓嶄笂鐨勯棶棰橈紝鑰屼笖榪欐牱鐨勯棶棰樿繕寰堥殣钄姐?br>

鑷充簬WNDCLASS緇撴瀯鑷甫鐨別xtra bytes鍩燂紝鏄互鍓嶇己涔忓簲鐢ㄦ鏋剁殑鏃朵唬錛屼嬌鐢╓in32 API鐩存帴寮鍙戞椂錛岃姣忎釜

紿楀彛綾伙紙榪欓噷鐨勭被錛屼笉鏄疌++ class鐨勬蹇碉紝鑰屾槸Windows緋葷粺紿楀彛瀹氫箟鏃剁殑涓縐嶆暟鎹粨鏋勶級閮借兘鏈変釜闄?/p>

甯︿竴浜涢澶栫殑鑷畾涔夋暟鎹殑絀洪棿錛岃繖涓┖闂村線寰琚敤鏉ュ瓨鏀句笌褰撳墠紿楀彛綾葷浉鍏崇殑鐢ㄦ埛鏁版嵁錛岄氬父鏄寚鍚?/p>

鏌愪釜鍐呭瓨鍖哄煙鐨勬寚閽堬紝褰撶▼搴忔搷浣滆繖涓睘浜庤繖涓獥鍙g被鐨勭獥鍙f椂灝卞彲浠ユ牴鎹繖涓檮甯︾殑鑷畾涔夋暟鎹紙鎴?/p>

鑰呮寚閽堬級鏉ユ搷浣滃搴旂殑鍏寵仈鑷畾涔夋暟鎹紱寰堝鍚庢潵鍑虹幇鐨勬鏋訛紝涔熼兘浣跨敤浜嗚繖涓猠xtra bytes鍩燂紝鏉ュ瓨鏀?/p>

妗嗘灦鏈韓鐨勪竴浜涘拰紿楀彛綾葷浉鍏寵仈鐨勬暟鎹粨鏋勩備粠鐩墠瓚嬪娍鐪嬶紝鐩存帴浣跨敤WNDCLASS浠ュ強extra bytes鐨勫彲鑳?/p>

鎬ф槸寰箮鍏跺井浜嗭紝浣嗘槸濡傛灉瑕佸仛濂藉師鐢熷簲鐢ㄧ殑寮鍙戯紝寰堝搴曞眰鐨勫疄鐜扮粏鑺傛渶瑕佽繕鏄鐭ラ亾涓涓嬶紝浠ヤ究浜?/p>

浼樺寲緇撴瀯鍜屾ц兘錛屼互鍙婂嚭閿欐椂鐨勮皟璇曞鐞嗭紱鍥犱負鏃犺鏄疻inform/WPF錛岃繕鏄法騫沖彴鐨刉TL/QT/WxWindows絳?/p>

絳夋柊鍨嬬殑鏈哄埗鎴栬呮鏋躲佺被搴擄紝鍙鏄湪Windows騫沖彴涓婃惌寤虹殑錛岄偅閮芥槸鍩轟簬鍓嶉潰璇磋繃鐨勮繖濂楁渶鍩烘湰涔熸槸

鏈鏍稿績鐨刉in32 API鍩虹涔嬩笂銆?/p>

 



flagman 2011-04-04 14:16 鍙戣〃璇勮
]]>
C++ library緋誨垪 -- static destructors in multiple threadshttp://www.shnenglu.com/flagman/archive/2011/02/08/static_destructors_in_multiple_threads.htmlflagmanflagmanTue, 08 Feb 2011 12:57:00 GMThttp://www.shnenglu.com/flagman/archive/2011/02/08/static_destructors_in_multiple_threads.htmlhttp://www.shnenglu.com/flagman/comments/139812.htmlhttp://www.shnenglu.com/flagman/archive/2011/02/08/static_destructors_in_multiple_threads.html#Feedback0http://www.shnenglu.com/flagman/comments/commentRss/139812.htmlhttp://www.shnenglu.com/flagman/services/trackbacks/139812.html  In VC++ 8.0, while  code compiled with /clr or /clr:pure, static destructors sometimes would not being properly called before process exites in multiple threads.

  CRT incorrectly set a lock at _global_unlock which resulted in such issue.

  In CLR-mixed mode, during the inialization of static local object, CRT would call _atexit_m(_CPVFV func) in msilexit.cpp to register a special __clrcall callback function which would be called back to destroy such static object when the current AppDomain quited.

  In the multithread environment, _atexit_helper which was invoked by _atexit_m, could register such callbace function successfully because it had been guarded by __global_lock() and __global_unlock(). But in the same environment, the _atexit_m would fail to assign the correct value to __onexitbegin_m and __onexitend_m.

  __onexitbegin_m and __onexitend_m were shared by the different threads; It's the key point of such issue. For example, the following statements,

  __onexitbegin_m = (_CPVFV *)_encode_pointer(onexitbegin_m);
  __onexitend_m = (_CPVFV *)_encode_pointer(onexitend_m);

should also guarded by __global_lock() and __global_unlock() or other syn primitives.


__global_lock();
__onexitbegin_m = (_CPVFV *)_encode_pointer(onexitbegin_m);
__onexitend_m   = (_CPVFV *)_encode_pointer(onexitend_m);
__global_unlock();


extern "C" int __clrcall _atexit_m(_CPVFV func)
{
 MANAGED_ASSERT(AppDomain::CurrentDomain->IsDefaultAppDomain(), "This fuction must be called in the default domain");

 __global_lock();
 _CPVFV* onexitbegin_m = (_CPVFV*)_decode_pointer(__onexitbegin_m);
 _CPVFV* onexitend_m = (_CPVFV*)_decode_pointer(__onexitend_m);
 __global_unlock();

 int retval = _atexit_helper((_CPVFV)_encode_pointer(func), &__exit_list_size, &onexitend_m, &onexitbegin_m);

 __global_lock();
 __onexitbegin_m = (_CPVFV*)_encode_pointer(onexitbegin_m);
 __onexitend_m  = (_CPVFV*)_encode_pointer(onexitend_m);
 __global_unlock();

 return retval;
}



flagman 2011-02-08 20:57 鍙戣〃璇勮
]]>
C++ library緋誨垪 -- STL瀹炵幇涓殑ODR 鈥渙ne-definition-rule鈥?for typeshttp://www.shnenglu.com/flagman/archive/2010/12/19/136923.htmlflagmanflagmanSun, 19 Dec 2010 03:09:00 GMThttp://www.shnenglu.com/flagman/archive/2010/12/19/136923.htmlhttp://www.shnenglu.com/flagman/comments/136923.htmlhttp://www.shnenglu.com/flagman/archive/2010/12/19/136923.html#Feedback0http://www.shnenglu.com/flagman/comments/commentRss/136923.htmlhttp://www.shnenglu.com/flagman/services/trackbacks/136923.htmlLinking issue
- While different modules (.obj) using istreambuf_iterator/ostreambuf_iterator, compiled with different options on HID/no-HID and SCL/no-SCL, these modules could not be linked successfully;

The error comes directly from the CLR when a type has multiple definitions that are not consistent based upon the ODR, one-definition-rule for types. And, the linker itself isn't involved.

For example, with one module compile with /D_SECURE_SCL=0, while another is compiled with _SECURE_SCL=1;

At first, it's found that with _SECURE_SCL, the only thing that could be different as following,

#if _SECURE_SCL
    typedef _Range_checked_iterator_tag _Checked_iterator_category;
#endif

But, actually, it's not the typedef that changed the layout the these iterators (istreambuf_iterator/ostreambuf_iterator), and further they don't really use the extra pointer that _SECURE_SCL adds.

Finally, it's found the root cause is that, these iterators, istreambuf_iterator/ostreambuf_iterator  had been moved from <xutility> to <streambuf>, and their ultimate base class had been changed from _Iterator_base_secure to _Iterator_base. And, the layout of _Iterator_base would be different between HID and no-HID, and between SCL and no-SCL. It is the cause where the issue comes from.

What we can learn from such issue,
These iterators really shouldn't derive from either _Iterator_base_secure or _Iterator_base, because these classes contain data members (pointers) which are entirely unused. It would result in unnecessary bloat and extra work being performed in ctor/dtor etc.

Introduce a new class, _Iterator_base_universal, which is defined identically regardless of HID/no-HID and SCL/no-SCL. It would contains the three internal typedefs that all standard iterators need to have, and nothing else. And _Iterator_base (in all of its variants) and _Iterator_base_secure now should derive from _Iterator_base_universal to get these typedefs.

Now, when an iterator wants these typedefs, but not the data members of _Iterator_base and _Iterator_base_secure, it could derive from _Iterator_base_universal. And istreambuf_iterator and ostreambuf_iterator are now as small as possible, and keep identical representations or layout across HID/no-HID, SCL/no-SCL.



flagman 2010-12-19 11:09 鍙戣〃璇勮
]]>
鍏充簬COM鍜?net鐨勬濊?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Sun, 19 Dec 2010 03:04:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/136922.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/136922.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/136922.html</trackback:ping><description><![CDATA[<p><em>銆?鏌愭煇鎻愬埌: 銆?br>: 涓鑸COM澶嶆潅錛岄鍏堟槸鍚嶈瘝澶錛屽叾嬈℃槸鍩轟簬ATL鐨勫疄鐜版瘮杈冮毦鎳?br>: 榪欏茍涓嶆槸COM鏈韓澶嶆潅錛岃屾槸C++宸茬粡钀藉悗浜庢椂浠d簡銆傛墍浠TL鐪嬭搗鏉ユ墠浼氬儚澶╀功涓鑸?/em></p> <p><br>铏界劧瀵逛簬鍏ㄦ柊鐨勫伐紼嬮」鐩紝鎺ㄨ崘閫氳繃.net瀹炵幇錛屼絾鏄紝鍙浣犲伐浣滃湪Windows騫沖彴涓婏紝蹇呯劧浼氶亣鍒板拰COM鐩稿叧鐨勬妧鏈拰鏈哄埗錛屾棤璁烘槸澶ч噺鐨刲egacy鐨勫伐紼嬪拰浠g爜錛岃繕鏄綔涓篛S閲嶈鍔熻兘浠ュ強native緇勪歡鐨勯閫変氦浜掑艦寮忓拰鎺ュ彛鏆撮湶鏂瑰紡錛屾瘮濡侱irectX API錛屾瘮濡備竴浜沇MI鐨凙PI錛涙渶鏈夎叮鐨勬槸錛屽嵆浣挎槸.net鐨勬牳蹇僀LR鏈韓涔熸槸涓涓狢OM緇勪歡錛屽彲浠ラ氳繃Host鐩稿叧鎺ュ彛璁﹏ative搴旂敤鏉ュ姞杞斤紝浠ュ湪褰撳墠榪涚▼涓惎鍔ㄦ暣涓狢LR鐨勮櫄鎷熸墽琛岀幆澧冩垨鑰呭彨鎵樼鎵ц鐜(managed executive environment)銆?/p> <p>鎶婃彙COM鏈変袱鐐瑰緢鍏抽敭錛?br>1錛塈nterface-based design錛屼粠璁捐鍜岀紪鐮佹濊礬涓婂氨鏄瀹屽叏鍩轟簬鎺ュ彛錛?br>2錛塚irtualTable-based binary compatibility, 瀹炵幇涓婃棤璁轟綍縐嶈璦鎴栬呮満鍒訛紝鍙絎﹀悎鍩轟簬铏氳〃鐨勪簩榪涘埗鍏煎瑙勮寖錛屽氨閮藉彲浠ュ疄鏂斤紱</p> <p>COM浠呬粎鏄釜瑙勮寖錛屽熀浜嶤OM鐨勫叿浣撴妧鏈潪甯鎬箣澶氾紝OLE錛孉utomation錛孲tructural storage錛孉ctiveX...姹楃墰鍏呮爧錛岃繕鏈塁OM+錛岃繖涓槸鎻愪緵浼佷笟綰у紑鍙戝繀澶囩殑涓浜涘熀紜鍔熻兘鍜岃鏂斤紝姣斿錛屼簨鍔$鐞嗘満鍒訛紝瀵硅薄姹狅紝瀹夊叏綆$悊錛屾秷鎭槦鍒?..闇瑕佹寚鍑猴紝鐩墠鍗充究鏄?net Framework涔熸病鏈夊疄鐜癈OM+鎵鎻愪緵榪欎簺鏈哄埗錛屽彧鏄畝鍗曠殑灝佽浜嗗悗鑰呫?/p> <p>COM鎶鏈腑鍙兘鏈変竴浜涙瘮杈冨洶闅劇殑鍦版柟錛屾帴鍙g殑涓鑷存э紝瀵硅薄鐨勮仛鍚堝拰鐢熷懡鍛ㄦ湡錛屽闂達紝璺ㄥ闂寸殑鎺ュ彛璁塊棶錛屽悕瀛楀璞★紝絳夌瓑錛涜繖浜涘茍涓嶆槸COM瑙勮寖浜轟負鍒墮犵殑鍥伴毦錛岃屾槸涓轟簡璁捐鍜屾彁渚涳紝鍙互璺ㄨ繘紼嬪拰鏈哄櫒杈圭晫錛岃法寮傛瀯騫沖彴錛堝綋鐒跺繀欏誨疄鐜頒簡COM鎵瑙勫畾鐨勫熀紜鏈嶅姟錛夛紝閫忔槑鍖栧叿浣撳璞$被鍨嬪強瀵硅薄鐢熷懡鍛ㄦ湡錛屼究浜庣粺涓閮ㄧ講鍜岀増鏈鐞嗙殑緇勪歡鎶鏈紝鎵蹇呴』浠樺嚭鐨勪唬浠鳳紝榪欎釜浠d環浠庡紑鍙戜漢鍛樿搴︾湅鍏蜂綋琛ㄧ幇涓猴紝姒傚康鐞嗚В鐨勫洶闅句互鍙婂叿浣撲簩榪涘埗瀹炵幇鐨勫洶闅撅紱</p> <p>涓嶈繃浠庡彟涓涓搴︾湅錛孋OM宸茬粡寰堝鏄撲簡錛?br>a) COM瑙勮寖宸叉妸瑕佽揪鑷磋繖浜涚洰鏍囩殑緋葷粺錛屾墍蹇呴』鎻愪緵鐨勬帴鍙e拰鐗規ф娊璞′簡鍑烘潵錛屽彧涓嶈繃涓轟簡琛ㄨ揪榪欎簺鎶借薄鐨勬蹇佃屾柊閫犵殑鏈鍚嶈瘝鏈変簺闄岀敓鍜岀獊鍏錛涘鏋滆閬囧埌鐩鎬技闂鐨勬瘡涓涓璁″拰寮鍙戜漢鍛橀兘鑷繁鏉ュ仛鎶借薄錛屾湭蹇呬細鐢熸垚鏇村ソ鐨勬柟妗堬紱</p> <p>b) 涓轟簡甯姪璁捐鍜屽紑鍙戜漢鍛橈紝浜轟滑鎻愪緵浜嗗緢澶氱殑寮鍙戝簱錛屼互鎻愰珮COM寮鍙戠殑姝g‘鎬у拰鏁堢巼錛涙渶鏄捐憲鐨勫氨鏄疢FC涓叧浜嶤OM/OLE鐨勮緟鍔╃被鍜屽嚱鏁幫紝浠ュ強涓轟簡COM鑰岀敓鐨凙TL錛涗粠鏈川涓婄湅錛岃繖浜涚被搴撻兘鏄妸COM瑙勮寖涓繀欏誨疄鐜扮殑錛學indows騫沖彴鏈韓娌℃湁鎻愪緵錛屽叿浣撹璁″拰寮鍙戜漢鍛樺疄闄呭疄鏂芥椂浼氶噸澶嶅疄鐜扮殑錛屽悓鏃跺張闈炲父瀹規槗鍑洪敊鐨勯偅閮ㄥ垎鍔熻兘錛岄泦涓埌浜嗚繖浜涚被搴撻噷緇熶竴瀹炵幇錛岃鍏蜂綋璁捐鍜屽紑鍙戜漢鍛樹互浠g爜閲嶇敤鐨勫艦寮忔潵瀹炵幇COM瑙勮寖錛?/p> <p>褰撶劧浜轟滑涔熸剰璇嗗埌浜咰OM榪欐牱鐨勪竴浜涢棶棰橈紝鐗瑰埆鏄叿浣撳疄鐜版椂璁捐鍜屽紑鍙戜漢鍛樺繀欏昏鍏蟲敞鍑犱箮鎵鏈夌殑浜岃繘鍒剁粏鑺傦紝浜庢槸.net灝辮癁鐢熶簡錛屾妸榪欎簺瑙勮寖鐨勮澶氬鏉傛ч兘灝佽鍦ㄤ簡铏氭嫙鏈洪噷闈紝鎶婅繖浜涚洰鏍囧姛鑳斤紙璺ㄨ竟鐣屻侀忔槑鎬х瓑絳夛級閫氳繃涓鑷磋屽張騫蟲粦鐨勫鉤鍙版帴鍙e拰鑷弿榪扮殑meta data錛屼互涓縐嶈璁捐鍜屽紑鍙戜漢鍛樻洿鏄撴帴鍙楃殑椋庢牸寮鏀句簡鍑烘潵錛?/p> <p>COM鐨勫獎鍝嶆槸闈炲父騫垮ぇ鐨勶紝姣斿XPCOM 錛孎irefox涓婄殑涓縐嶆彃浠舵妧鏈爣鍑嗭紝灝辨槸鏍規嵁COM鐨勬濇兂鍜屽師鍒欏埗瀹氱殑錛涜澶氳瘎璁鴻錛孎irefox鐨勬垚鍔熸槸鍥犱負瀹冩彃浠舵槸濡傛鐨勬垚鍔燂紝榪欎篃綆楁槸COM鏈韓鎵鎰忔枡涓嶅埌鐨勮礎鐚箣涓銆?/p> <p>鍦?net鐨勫鉤鍙頒笂錛屽嵆浣挎槸.net CLR/SSCLI鐨勫叿浣撳疄鐜頒篃澶ч噺榪愮敤浜咰OM鐨勬濇兂鍜屾満鍒訛紝鍙互璇?net灝辨槸鎼緩鍦–OM浜岃繘鍒剁粍浠跺鉤鍙頒箣涓婄殑铏氭嫙鏈烘墭綆″鉤鍙般?/p> <p>鏈鍚庯紝.net寮濮嬫椂鐨勫唴閮ㄧ紪鍙鋒槸COM 2.0</p> <p> </p> <p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p> <p>*) 鍏充簬“鍚嶈瘝澶”<br>榪欐槸瑕佸疄鐜板彲浠ヨ法榪涚▼鍜屾満鍣ㄨ竟鐣岋紝璺ㄥ紓鏋勫鉤鍙幫紙褰撶劧蹇呴』瀹炵幇浜咰OM鎵瑙勫畾鐨勫熀紜鏈嶅姟錛夛紝閫忔槑鍖栧叿浣撳璞$被鍨嬪強瀵硅薄鐢熷懡鍛ㄦ湡錛屼究浜庣粺涓閮ㄧ講鍜岀増鏈鐞嗙殑緇勪歡鎶鏈紝鎵蹇呴』浠樺嚭鐨勪唬浠楓?/p> <p>COM瑙勮寖宸叉妸瑕佽揪鑷磋繖浜涚洰鏍囩殑緋葷粺錛屾墍蹇呴』鎻愪緵鐨勬帴鍙e拰鐗規ф娊璞′簡鍑烘潵錛屽彧涓嶈繃涓轟簡琛ㄨ揪榪欎簺鎶借薄鐨勬蹇佃屾柊閫犵殑鏈鍚嶈瘝鏈変簺闄岀敓鍜岀獊鍏錛涘鏋滆閬囧埌鐩鎬技闂鐨勬瘡涓涓璁″拰寮鍙戜漢鍛橀兘鑷繁鏉ュ仛鎶借薄錛屾湭蹇呬細鐢熸垚鏇村ソ鐨勬柟妗堬紱</p> <p>涓句釜渚嬪瓙錛宎partment錛屽闂達紝灝辨槸涓轟簡鎶借薄浼犵粺OS涓繘紼嬪拰綰跨▼鐨勫疄鐜拌屾柊閫犵殑鏈鍚嶈瘝鍜屾蹇碉紱浠諱綍浜鴻鎶借薄榪欐牱鐨勪竴浜涙蹇碉紝涓嶆柊閫犳湳璇紝鏄潪甯稿洶闅劇殑錛屽姣?net錛屽悗鑰呯敤浜咰LR铏氭嫙鏈烘潵灝佽浜嗗ぇ澶氭暟鐨勫疄鐜扮粏鑺傦紝騫剁敤璁╀漢鏇村鏄撴帴鍙楃殑椋庢牸鏉ュ紑鏀炬帴鍙o紝鍙簨瀹炰笂浠嶇劧鏂伴犱簡涓浜涘悕璇嶅拰姒傚康錛屽綾諱技鑼冪暣鐨凙ppDomain錛?/p> <p>*) 鍏充簬“鍩轟簬ATL鐨勫疄鐜版瘮杈冮毦鎳?#8221;<br>ATL涓昏浣跨敤浜唗emplate鎶鏈紝COM鎺ュ彛鏅鴻兘鎸囬拡錛岀敤闈欐佽漿鎹㈡潵妯℃嫙鍔ㄦ佺粦瀹氾紝絳夌瓑錛屽疄闄呭茍涓嶆槸寰堝鏉傦紝鍙兘綆梒++瀹炵幇鏈哄埗鐨勪腑絳夐毦搴︼紝涓昏娑夊強Modern C++ design涓涔︿腑涓浜涚浉鍏寵璁$悊蹇電殑榪愮敤銆傚姣擝oost涓煇浜涘簱鐨勫疄鐜幫紝ATL寰堜漢閬撲簡銆?/p> <p>*) 鍏充簬“榪欏茍涓嶆槸COM鏈韓澶嶆潅錛岃屾槸C++宸茬粡钀藉悗浜庢椂浠d簡”<br>棣栧厛COM鐨勮鑼冪殑紜槸澶嶆潅鐨勶紝涓哄暐錛熺涓鐐瑰凡緇忚浜嗭紝灝辨槸涓轟簡瑕佹娊璞″嚭璺ㄨ竟鐣屽拰瀵硅薄閫忔槑鐨勭粍浠舵妧鏈紱.net琛ㄨ薄涓婄湅姣旇緝“綆鍗曞鏄?#8221;錛岄鏍間翰榪戣璁″拰寮鍙戜漢鍛橈紝瀹為檯涓婂鏉備簨鍔″拰瀹炵幇緇嗚妭閮借鍒掑垎鍒癈LR閭d釜灞傞潰涓婂幓瀹炵幇浜嗭紱鍘葷湅涓涓婥LR鐨勫紑婧愬疄鐜癝SCLI錛屼綘浼氬彂鐜幫紝鏁翠釜铏氭嫙鏈哄鉤鍙扮殑瀹炵幇錛屽ぇ閲忚繍鐢ㄤ簡COM鐨勬濇兂鍜屾満鍒訛紝灝辨槸涓涓法鍨嬬郴緇熷鉤鍙扮駭鐨凜OM server錛?/p> <p>鍏舵錛孋OM瑙勮寖鏈韓鏄嫭绔嬩簬瀹炵幇璇█鐨勶紝鍙鏋勫緩鍑虹殑緇勪歡絎﹀悎瑙勮寖鍒跺畾鐨勪簩榪涘埗鍏煎錛岀郴緇熷氨鍙互榪愪綔錛岃繖鍜孋++鏄惁钀藉悗鏃朵唬娌℃湁鍏崇郴銆傚鏋滃紑鍙戜漢鍛樿涓猴紝.net鎵嶅鍏堣繘錛屼篃瀹屽叏鍙互鐢?net涓殑鎵樼璇█錛屽C#鏉ュ疄鐜癈OM緇勪歡錛?/p> <p>鏈鍚庯紝姣忕璇█閮芥湁鍏墮傜敤鐨勮寖鍥達紝鐜板湪鍙互榪欎箞璇?#8220;濡傛灉鏈変竴涓叏鏂扮殑欏圭洰闇姹傦紝瑕佽揪鑷磋法杈圭晫鍜屽璞¢忔槑緇勪歡錛屽茍涓旀病鏈夊お榪囦弗鑻涚殑鎬ц兘闇姹傦紝閭d箞.net騫沖彴鍙婂叾涓婄殑鎵樼璇█鏉ュ疄鐜幫紝姣旂敤C++鍙婄浉鍏寵緟鍔╃被搴撴潵浠OM緇勪歡褰㈠紡鏉ュ疄鐜幫紝瑕佹洿鍚堥傦紝涔熸洿蹇熶究鎹峰拰鑺傜渷棰勭畻銆?#8221;浣嗘槸錛屽湪榪欎釜鍒ゆ柇涓婃垜浠姞浜嗗緢澶氫弗鏍肩殑綰︽潫錛屼竴鏃﹂渶姹傚彉鏇達紝鐗瑰埆鏄」鐩殑闈炲姛鑳芥ч渶姹傦紝瑕佹眰楂樻ц兘榪愮畻鎴栬呮洿欏虹晠鐨勪笌legacy鐨刵ative緋葷粺鐩鎬簰錛岄偅涔?#8220;浣跨敤native璇█鏉ュ疄鐜版ц兘鍏抽敭浠ュ強legacy浜や簰鍔熻兘錛岄氳繃COM灝佽錛屽啀鐢盋OMInterop浜?net鎵樼搴旂敤璋冪敤”鍙兘鏄洿鐜板疄鐨勬柟妗堛侰++鏄竴闂ㄦ椿鐨勮璦錛屼笉鏂彂灞曠殑璇█錛屽嵆浣垮湪鏈鏂扮殑鎵樼鏃朵唬閲岋紝C#鎴愪負鏍囧噯涓繪祦錛屼絾C++/CLI浠嶇劧鏄墭綆¤璦閲屽姛鑳芥渶瀹屾暣鐨勮璦銆?/p> <p> </p> <img src ="http://www.shnenglu.com/flagman/aggbug/136922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-19 11:04 <a href="http://www.shnenglu.com/flagman/archive/2010/12/19/AboutComAndDotNet.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CLR緋誨垪--鎺㈢儲SSCLI銆?銆?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Mon, 13 Dec 2010 01:02:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/136255.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/136255.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/136255.html</trackback:ping><description><![CDATA[<p>Fusion is one of the most importants features among ones in the runtime implementation of CLI.</p> <p>In the fusion, or any other components or modules, how to retrieve the execution engine instance and how to generate such engine?</p> <p>UtilExecutionEngine, implemented as COM object, support Queryinterface/AddRef/Release, and exposed via interface IExecutionEngine.</p> <p>With SELF_NO_HOST defined, <br>BYTE g_ExecutionEngineInstance[sizeof(UtilExecutionEngine)];<br>g_ExecutionEngineInstance would be the singleton instance of current execution engine,</p> <p>otherwise, without SELF_NO_HOST, the 'sscoree' dll would be loaded and try to get the exported function, which is named 'IEE' from such dll. Here, it is the well-known shim, in .net CLR, such module is named 'mscoree'. Further, if 'IEE' could not be found in such dll, system would try to locate another exported function, named 'LoadLibraryShim', and use such function to load the 'mscorwks' module, and try to locate the 'IEE' exportd functionin it.</p> <p>It's very obvious that Rotor has implemented its own execution engine, but it also gives or make space for implementation of execution engine from 3rd party. Here, .net CLR is a good candidate definitely, Rotor might load the mscorwks.dll module for its usage.</p> <p>PAL, PALAPI, for example, HeapAlloc, one famous WIN32 API, has been implemented as one PALAPI (defined in Heap.c), to make it possible that the CLI/Rotor be ported smoothly to other OS, such freebsd/mac os.</p> <p>CRT routines are also reimplemented, such as memcpy, it has been implemented as GCSafeMemCpy</p> <p>There're many macros in fuctions, such as SCAN_IGNORE_FAULT/STATIC_CONTRACT_NOTHROW/STATIC_CONTRACT_NOTRIGGER, they are for static analysis tool to scan, analyse and figour out the potential issues in code.</p> <p>From view point of the execution model by CLI, the act of compiling (including JIT) high-level type descriptions would be separated from the act of turning these type descriptions into processor-specific code and memory structures.</p> <p>And such executino model, in other word, the well-known 'managed execution', would defer the loading, verification and compilation of components until runtime really needs; At the same time, the type-loading is the key trigger that causes CLI's tool chain to be engaged at runtime. Deferred compilation(lead to JIT)/linking/loading would get better portability to different target platform and be ready for version change; The whole deferred process would driven by well-defined metadata and policy, and it would be very robust for building a virtual execution environment;</p> <p>At the top of such CLI tool chain, fusion is reponsible for not only finding and binding related assemblies, which are via assembly reference defined in assembly, fusion also takes another important role, loader, and its part of functionality is implemented in PEAssembly, ClassLoader classes. For example, ClassLoader::LoadTypeHandleForTypeKey.</p> <p>For types in virtual execution environment of CLI, rotor defines four kinds of elements for internal conducting, <br>ELEMENT_TYPE_CLASS for ordinary classes and generic instantiations(including value types);<br>ELEMENT_TYPE_ARRAY AND ELEMENT_TYPE_SZARRAY for array types<br>ELEMENT_TYPE_PRT and ELEMENT_TYPE_BYREF for pointer types<br>ELEMENT_TYPE_FNPTR for function pointer types</p> <p>every type would be assigned unique ulong-typed token, and such token would be used to look up in m_TypeDefToMethodTableMap (Linear mapping from TypeDef token to MethodTable *)which is maintained by current module; If there it is, the pointer to method table of such type would be retrieved, or it would look up in the loader module, where the method table should exist in while it's JIT loaded, not launched from NGEN image;</p> <p>And all the unresolved typed would be maintained in a hash table, PendingTypeLoadTable; Types and only those types that are needed, such as dependencies, including parent types, are loaded in runtime, such type is fully loaded and ready for further execution, and other unresolved types would be kept in the previous hash table.</p> <img src ="http://www.shnenglu.com/flagman/aggbug/136255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-13 09:02 <a href="http://www.shnenglu.com/flagman/archive/2010/12/13/136255.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓轟綍C++涓殑綾繪垚鍛樺嚱鏁版病鏈夐噰鐢ㄧ被浼糐ava涓殑鈥滃叏铏氣濊璁?/title><link>http://www.shnenglu.com/flagman/archive/2010/12/13/WhyNotCPPadoptAllVirtualFuction.html</link><dc:creator>flagman</dc:creator><author>flagman</author><pubDate>Mon, 13 Dec 2010 00:57:00 GMT</pubDate><guid>http://www.shnenglu.com/flagman/archive/2010/12/13/WhyNotCPPadoptAllVirtualFuction.html</guid><wfw:comment>http://www.shnenglu.com/flagman/comments/136254.html</wfw:comment><comments>http://www.shnenglu.com/flagman/archive/2010/12/13/WhyNotCPPadoptAllVirtualFuction.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/flagman/comments/commentRss/136254.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flagman/services/trackbacks/136254.html</trackback:ping><description><![CDATA[<p>鍏充簬紼嬪簭璁捐璇█鏈韓鐨勮璁℃湁璁稿鏈夎叮鐨勮瘽棰橈紝姣斿錛屼負浣旵++涓殑綾繪垚鍛樺嚱鏁版病鏈夐噰鐢ㄧ被浼糐ava涓殑“鍏ㄨ櫄”璁捐錛?br><br>1) 浠庤璦鏈韓璁捐涓婄湅錛?br>鏁堢巼瀹氱劧鏄痗++褰撳垵璁捐鏃惰冭檻鐨勯噸鐐逛箣涓錛屼婦涓緥瀛愶紝涓轟簡鑺傜渷涓嶅繀瑕佺殑VTable寮閿錛孉TL鐢╰emplate鎶鏈潤鎬佽漿鎹㈡潵妯℃嫙鍔ㄦ佺粦瀹氫互鏀寔COM鐗規х殑瀹炵幇錛涘拰C鐨勫吋瀹癸紝灝盫Table瑙掑害鐪嬶紝闂涓嶅ぇ錛屽洜涓哄悗鑰呭彲浠ョ敤鍑芥暟鎸囬拡鏁扮粍鏉ユā鎷燂紱</p> <p>2) 鍐嶄粠澶у鏁板簲鐢ㄤ腑甯歌鐨勭被緇ф壙浣撶郴涓婄湅錛?br>闄や簡鏁翠釜緇ф壙浣撶郴鎵緇熶竴寮鏀懼嚭鏉ョ殑鎺ュ彛闆嗭紙涔熷氨鏄敱铏氬嚱鏁版墍緇勬垚錛夛紝鍦ㄧ戶鎵夸綋緋葷殑姣忎釜灞傞潰鍙﹀浼氭湁澶ч噺鐨勫叾浠栬緟鍔╂垚鍛樺嚱鏁幫紙鍏舵暟閲忛氬父姣旇櫄鍑芥暟澶氱殑澶氾級錛岃繖浜涙垚鍛樺嚱鏁板畬鍏ㄦ病蹇呰璁捐鎴愯櫄鍑芥暟錛?/p> <p>3) 浠庡叾浠栬璦鐪嬶紝<br>鍗充嬌杈冩柊鐨勮櫄鎷熸満璇█C#(Java綆楁槸杈冭佺殑铏氭嫙鏈鴻璦),鍙嶈屽畾涔変簡姣擟++鏇翠負涓ユ牸鏇翠負鏄懼紡鐨勬垚鍛樻柟娉曞疄鐜版垨瑕嗙洊鎴栭噸杞芥垨鏂板緩鐨勮鍒欙紱榪欐槸闈炲父閲嶈鐨勫C++浠ュ強Java璁捐鎬濇兂鐨勫弽鎬濄?/p> <p>4) 浠庤璦鐨勯傜敤鍦哄悎鐪嬶紝<br>鎴戜滑鐜板湪鐨勮璁猴紝緇濆ぇ澶氭暟鎯呭喌涓嬪甫鏈変竴涓潪甯擱噸瑕佺殑榛樿鍓嶆彁錛岄偅灝辨槸鍦ㄧ敤鎴鋒佹ā寮忎笅浣跨敤C++錛屽鏋滄斁瀹借繖涓害鏉燂紝鍦ㄥ唴鏍告ā寮忎笅浣跨敤C++錛岄偅鎯呭喌鍙堝畬鍏ㄤ笉鍚屼簡銆?br>寮曠敤涓嬮潰榪欎釜鏂囨。鐨勮鐐癸紝<a >http://www.microsoft.com/china/whdc/driver/kernel/KMcode.mspx</a><br>棣栧厛錛岀敤鎴鋒佷笅闈炲父寤変環鍑犱箮涓嶇敤鑰冭檻鐨勮祫婧愶紝鍦ㄥ唴鏍鎬腑鏄潪甯告槀璐電殑錛屾瘮濡傚唴鏍稿爢鏍堜竴鑸氨3涓猵age錛?/p> <p>鍦ㄥ唴鏍鎬笉鑳藉垎欏?paging)鏃跺繀欏諱繚璇佸皢琚墽琛岀殑鎵鏈変唬鐮佸拰鏁版嵁蹇呴』鏈夋晥鐨勯┗鐣欏湪鐗╃悊鍐呭瓨涓紝濡傛灉榪欐椂闇瑕佸椹葷暀鍑犲紶铏氳〃浠ュ強铏氳〃鎸囬拡閭h繕鏄樉寰楅潪甯告槀璐電殑錛屽悓鏃剁紪璇戝櫒涓鴻櫄鍑芥暟錛屾ā鏉跨瓑鐢熸垚浠g爜鐨勬柟寮忥紝璁╁紑鍙戜漢鍛樺緢闅劇‘瀹氳鎵ц涓涓嚱鏁版墍闇瑕佺殑鎵鏈変唬鐮佺殑鎵鍦ㄤ綅緗紝鍥犳涔熸棤娉曠洿鎺ユ帶鍒剁敤浜庡畨緗繖浜涗唬鐮佺殑鑺傦紙涓漢璁や負鍙兘閫氳繃progma segment/datasegment/codesegment瀵逛簬浠g爜鍜屾暟鎹繘琛岄泦涓帶鍒訛級錛屽洜姝ゅ湪闇瑕佽繖浜涗唬鐮佹椂錛屽彲鑳藉凡緇忚page out浜嗭紱</p> <p>鎵鏈夋秹鍙婄被灞傛緇撴瀯錛屾ā鏉匡紝寮傚父絳夌瓑榪欐牱鐨勪竴浜涜璦緇撴瀯鍦ㄥ唴鏍告佷腑閮藉彲鑳芥槸涓嶅畨鍏ㄧ殑錛屾渶濂芥槸鎶婄被鐨勪嬌鐢ㄩ檺瀹氫負POD綾伙紝鍥炲埌鎴戜滑鐨勪富棰樿櫄鍑芥暟錛屼篃灝辨槸璇村唴鏍告佷笅綾昏璁′腑娌℃湁铏氬嚱鏁般?/p> <img src ="http://www.shnenglu.com/flagman/aggbug/136254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flagman/" target="_blank">flagman</a> 2010-12-13 08:57 <a href="http://www.shnenglu.com/flagman/archive/2010/12/13/WhyNotCPPadoptAllVirtualFuction.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.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://81ffff.com" target="_blank">性欧美xxxx视频在线观看</a>| <a href="http://www-833898.com" target="_blank">久久国产精品久久国产精品</a>| <a href="http://woaigougou.com" target="_blank">久久精品国产一区二区电影</a>| <a href="http://wlhtgj.com" target="_blank">一本久久a久久免费精品不卡</a>| <a href="http://by1422.com" target="_blank">欧美成年人视频网站</a>| <a href="http://p35cc.com" target="_blank">亚洲国产精品www</a>| <a href="http://555yye.com" target="_blank">欧美激情精品久久久久久免费印度</a>| <a href="http://www-4157.com" target="_blank">午夜视频一区二区</a>| <a href="http://360cabin.com" target="_blank">国产伦精品一区二区三区视频孕妇 </a>| <a href="http://669528.com" target="_blank">久久综合色天天久久综合图片</a>| <a href="http://miya2223.com" target="_blank">亚洲欧美一区二区原创</a>| <a href="http://cytus2wiki.com" target="_blank">欧美黄色视屏</a>| <a href="http://zhuankee.com" target="_blank">黄色国产精品</a>| <a href="http://7kz6.com" target="_blank">欧美二区在线</a>| <a href="http://628155.com" target="_blank">欧美精品久久久久久</a>| <a href="http://hbsmhy.com" target="_blank">亚洲午夜精品</a>| <a href="http://jzsp121.com" target="_blank">亚洲欧洲av一区二区</a>| <a href="http://jisuyswang.com" target="_blank">黄色在线成人</a>| <a href="http://zzztt04.com" target="_blank">亚洲大胆女人</a>| <a href="http://jpqueyou.com" target="_blank">欧美日韩精品欧美日韩精品</a>| <a href="http://mishangmi.com" target="_blank">亚洲最新在线</a>| <a href="http://7kz6.com" target="_blank">一区二区三区视频观看</a>| <a href="http://www909059.com" target="_blank">国产日韩欧美三级</a>| <a href="http://zz9876.com" target="_blank">欧美福利电影网</a>| <a href="http://www249aaa.com" target="_blank">欧美日韩另类视频</a>| <a href="http://aidou28.com" target="_blank">在线视频日韩精品</a>| <a href="http://042225.com" target="_blank">一道本一区二区</a>| <a href="http://www38044.com" target="_blank">国产一区二区无遮挡</a>| <a href="http://jivbus.com" target="_blank">欧美成人精品不卡视频在线观看</a>| <a href="http://wzlingfeng.com" target="_blank">欧美激情一区</a>| <a href="http://rljyy.com" target="_blank">亚洲欧美综合v</a>| <a href="http://gmqgw.com" target="_blank">久久欧美中文字幕</a>| <a href="http://xhs1039.com" target="_blank">亚洲视频免费在线观看</a>| <a href="http://www962aa.com" target="_blank">午夜精品电影</a>| <a href="http://5252bnet.com" target="_blank">亚洲精品一二区</a>| <a href="http://aiqianfang.com" target="_blank">亚洲深夜福利</a>| <a href="http://www-55655.com" target="_blank">亚洲国产一区二区三区高清</a>| <a href="http://xiuxiu124.com" target="_blank">日韩一级黄色av</a>| <a href="http://sao320.com" target="_blank">国产精品久久久久久久久久久久</a>| <a href="http://cmtqd.com" target="_blank">久久精品久久综合</a>| <a href="http://5138555.com" target="_blank">久久久91精品国产一区二区精品</a>| <a href="http://5555547.com" target="_blank">aa成人免费视频</a>| <a href="http://830085.com" target="_blank">欧美在线国产精品</a>| <a href="http://152mu.com" target="_blank">一本一本久久</a>| <a href="http://uu6623.com" target="_blank">久色成人在线</a>| <a href="http://jxrisen.com" target="_blank">午夜一区不卡</a>| <a href="http://y7y7s.com" target="_blank">欧美日韩午夜在线</a>| <a href="http://yyyy456.com" target="_blank">蜜桃av综合</a>| <a href="http://eee2244.com" target="_blank">国产精品天天摸av网</a>| <a href="http://xianqyd.com" target="_blank">欧美成人精品在线视频</a>| <a href="http://yimeimc.com" target="_blank">国产精品一区二区你懂得 </a>| <a href="http://yw8333.com" target="_blank">亚洲精品视频免费在线观看</a>| <a href="http://335848.com" target="_blank">亚洲在线黄色</a>| <a href="http://anal-movie-teen.com" target="_blank">激情欧美一区二区三区</a>| <a href="http://www5123ri.com" target="_blank">日韩午夜三级在线</a>| <a href="http://spvicarb.com" target="_blank">一区二区三区中文在线观看</a>| <a href="http://4466o.com" target="_blank">亚洲午夜一区二区</a>| <a href="http://y87b.com" target="_blank">aa级大片欧美三级</a>| <a href="http://cecelife.com" target="_blank">美女精品网站</a>| <a href="http://eastasp.com" target="_blank">久久中文精品</a>| <a href="http://sapronlee.com" target="_blank">国产亚洲精品资源在线26u</a>| <a href="http://1181318.com" target="_blank">一本色道久久88综合日韩精品 </a>| <a href="http://by8556.com" target="_blank">欧美日韩免费一区二区三区</a>| <a href="http://ae262.com" target="_blank">欧美xxx成人</a>| <a href="http://happyelephantv.com" target="_blank">国产偷国产偷精品高清尤物</a>| <a href="http://www-440447.com" target="_blank">亚洲色诱最新</a>| <a href="http://www-132377.com" target="_blank">一区二区三区欧美亚洲</a>| <a href="http://syruili.com" target="_blank">欧美激情综合色</a>| <a href="http://390642.com" target="_blank">亚洲国产成人不卡</a>| <a href="http://www1122fu.com" target="_blank">亚洲大胆美女视频</a>| <a href="http://638179.com" target="_blank">欧美一级片在线播放</a>| <a href="http://bjlaosha.com" target="_blank">亚洲综合色自拍一区</a>| <a href="http://188293.com" target="_blank">久久亚洲国产精品一区二区</a>| <a href="http://my8823.com" target="_blank">久久久久综合网</a>| <a href="http://mmmm26.com" target="_blank">国产午夜亚洲精品不卡</a>| <a href="http://xsxcn.com" target="_blank">亚洲欧美日韩在线不卡</a>| <a href="http://dracotek.com" target="_blank">午夜精品av</a>| <a href="http://1515t.com" target="_blank">国产麻豆综合</a>| <a href="http://cn1357.com" target="_blank">欧美中在线观看</a>| <a href="http://avtt0.com" target="_blank">久久久另类综合</a>| <a href="http://123086.com" target="_blank">在线观看av不卡</a>| <a href="http://by4433.com" target="_blank">亚洲综合清纯丝袜自拍</a>| <a href="http://www-87633.com" target="_blank">亚洲伊人伊色伊影伊综合网</a>| <a href="http://www442222.com" target="_blank">欧美日韩小视频</a>| <a href="http://8x27.com" target="_blank">亚洲一区亚洲</a>| <a href="http://dahuxu.com" target="_blank">久久av一区</a>| <a href="http://456316.com" target="_blank">精品成人一区二区</a>| <a href="http://www44552.com" target="_blank">久久精品观看</a>| <a href="http://www24822.com" target="_blank">欧美激情一区二区三区在线视频 </a>| <a href="http://mauhorng.com" target="_blank">欧美色综合网</a>| <a href="http://www515678.com" target="_blank">亚洲伊人观看</a>| <a href="http://xiaokd666.com" target="_blank">久久只精品国产</a>| <a href="http://www278999.com" target="_blank">红桃视频亚洲</a>| <a href="http://ww9494.com" target="_blank">欧美激情一二区</a>| <a href="http://1zz8903.com" target="_blank">这里只有精品丝袜</a>| <a href="http://k68c.com" target="_blank">久久精品av麻豆的观看方式 </a>| <a href="http://283575.com" target="_blank">亚洲制服少妇</a>| <a href="http://taoseav8.com" target="_blank">久久久中精品2020中文</a>| <a href="http://7c3e.com" target="_blank">亚洲国产综合视频在线观看</a>| <a href="http://54zcr.com" target="_blank">欧美精品免费观看二区</a>| <a href="http://xp1025.com" target="_blank">99视频精品在线</a>| <a href="http://xyyssa.com" target="_blank">久久av免费一区</a>| <a href="http://derinsolar.com" target="_blank">亚洲大胆人体在线</a>| <a href="http://1323123.com" target="_blank">欧美日韩在线播放三区四区</a>| <a href="http://qibilly.com" target="_blank">午夜精品美女久久久久av福利</a>| <a href="http://921367.com" target="_blank">久久久久免费观看</a>| <a href="http://www-132377.com" target="_blank">日韩亚洲欧美一区二区三区</a>| <a href="http://bandycup.com" target="_blank">国产精品高清在线</a>| <a href="http://488f.com" target="_blank">亚洲亚洲精品三区日韩精品在线视频 </a>| <a href="http://www49966.com" target="_blank">久久三级福利</a>| <a href="http://497988.com" target="_blank">最新亚洲激情</a>| <a href="http://y7y7s.com" target="_blank">国产精品久久久久三级</a>| <a href="http://hbdfgq.com" target="_blank">久久嫩草精品久久久久</a>| <a href="http://www-3121.com" target="_blank">亚洲免费av网站</a>| <a href="http://aa224.com" target="_blank">久久久久国色av免费看影院</a>| <a href="http://jiangnanmm.com" target="_blank">国产农村妇女精品</a>| <a href="http://8bc3.com" target="_blank">欧美黄在线观看</a>| <a href="http://016889.com" target="_blank">欧美资源在线</a>| <a href="http://23230066.com" target="_blank">亚洲精品一区中文</a>| <a href="http://www901aaa.com" target="_blank">久久久欧美一区二区</a>| <a href="http://muwendada.com" target="_blank">99re8这里有精品热视频免费</a>| <a href="http://799858.com" target="_blank">国产欧美精品在线观看</a>| <a href="http://874805.com" target="_blank">欧美不卡在线视频</a>| <a href="http://2061856.com" target="_blank">亚洲最新在线</a>| <a href="http://yh5557.com" target="_blank">亚洲第一福利视频</a>| <a href="http://vipaqdx29.com" target="_blank">久久国产精品一区二区</a>| <a href="http://551731.com" target="_blank">一区二区高清在线</a>| <a href="http://zjjieda.com" target="_blank">极品尤物av久久免费看</a>| <a href="http://cl6m.com" target="_blank">国产精品美女主播在线观看纯欲</a>| <a href="http://my6557.com" target="_blank">久久视频免费观看</a>| <a href="http://9uu91.com" target="_blank">亚洲欧美日韩电影</a>| <a href="http://rxbbei.com" target="_blank">99成人精品</a>| <a href="http://3bmmxyz.com" target="_blank">亚洲激情欧美</a>| <a href="http://482b.com" target="_blank">欧美成人精品高清在线播放</a>| <a href="http://woniuminsu.com" target="_blank">欧美一区二视频</a>| <a href="http://xpj493.com" target="_blank">亚洲一区二区免费</a>| <a href="http://cloakok.com" target="_blank">亚洲精品日韩在线</a>| <a href="http://ju255.com" target="_blank">伊人成人在线</a>| <a href="http://3dmh145.com" target="_blank">欧美午夜精品久久久久久孕妇</a>| <a href="http://ssni888.com" target="_blank">久久综合成人精品亚洲另类欧美</a>| <a href="http://555134.com" target="_blank">午夜精品一区二区三区在线播放</a>| <a href="http://dailymailnepal.com" target="_blank">亚洲精品视频一区</a>| <a href="http://www33779.com" target="_blank">欧美国产日韩亚洲一区</a>| <a href="http://cnc800.com" target="_blank">久久艳片www.17c.com</a>| <a href="http://411233.com" target="_blank">久久尤物电影视频在线观看</a>| <a href="http://430390.com" target="_blank">久久男女视频</a>| <a href="http://www17bxbx.com" target="_blank">欧美v日韩v国产v</a>| <a href="http://53xxxx.com" target="_blank">亚洲高清影视</a>| <a href="http://7749137.com" target="_blank">亚洲伦理中文字幕</a>| <a href="http://rainbowbpm.com" target="_blank">av不卡在线</a>| <a href="http://wg135.com" target="_blank">性亚洲最疯狂xxxx高清</a>| <a href="http://www-13413.com" target="_blank">欧美一区精品</a>| <a href="http://wwwby2232.com" target="_blank">免播放器亚洲一区</a>| <a href="http://929889.com" target="_blank">欧美激情按摩</a>| <a href="http://59199m.com" target="_blank">国产精品高潮粉嫩av</a>| <a href="http://gbandal.com" target="_blank">国产精品一区二区黑丝</a>| <a href="http://80hogo.com" target="_blank">激情视频一区二区三区</a>| <a href="http://044925.com" target="_blank">在线日韩欧美</a>| <a href="http://287975.com" target="_blank">一区二区三区 在线观看视</a>| <a href="http://www-ty177.com" target="_blank">中文在线不卡视频</a>| <a href="http://cm168168.com" target="_blank">久久国产精品久久w女人spa</a>| <a href="http://689657.com" target="_blank">美玉足脚交一区二区三区图片</a>| <a href="http://wwwbbb888999.com" target="_blank">欧美成人午夜</a>| <a href="http://fanwenok.com" target="_blank">99re6热只有精品免费观看</a>| <a href="http://wawabt.com" target="_blank">亚洲欧美成人精品</a>| <a href="http://77xyc77.com" target="_blank">久久久成人网</a>| <a href="http://www-733999.com" target="_blank">欧美精品色综合</a>| <a href="http://www-6410c.com" target="_blank">国产精品一卡二</a>| <a href="http://ythbhg.com" target="_blank">在线成人免费观看</a>| <a href="http://sanlans888.com" target="_blank">亚洲一区二区成人</a>| <a href="http://zgztby.com" target="_blank">久久夜色精品一区</a>| <a href="http://mimi78.com" target="_blank">亚洲乱码久久</a>| <a href="http://5767j.com" target="_blank">亚洲在线观看视频网站</a>| <a href="http://765409.com" target="_blank">麻豆免费精品视频</a>| <a href="http://maogo666.com" target="_blank">国产精品久久久久国产a级</a>| <a href="http://92y5.com" target="_blank">精品成人在线观看</a>| <a href="http://99cheats.com" target="_blank">亚洲午夜高清视频</a>| <a href="http://myasker.com" target="_blank">免费不卡中文字幕视频</a>| <a href="http://1069024.com" target="_blank">一本久道久久久</a>| <a href="http://pao449.com" target="_blank">久久久在线视频</a>| <a href="http://dxmdzz.com" target="_blank">国产精品久久久久久久久借妻</a>| <a href="http://shiselol.com" target="_blank">在线免费观看日本欧美</a>| <a href="http://9952222.com" target="_blank">亚洲欧美日韩国产一区</a>| <a href="http://leohacks.com" target="_blank">欧美激情综合色</a>| <a href="http://llyx888.com" target="_blank">欧美一级理论性理论a</a>| <a href="http://www101804.com" target="_blank">欧美人与性禽动交情品</a>| <a href="http://833077.com" target="_blank">黄色成人片子</a>| <a href="http://556626.com" target="_blank">亚洲欧美中文在线视频</a>| <a href="http://hu62.com" target="_blank">亚洲精品1区</a>| <a href="http://44ie.com" target="_blank">久久精品最新地址</a>| <a href="http://free18teen.com" target="_blank">国产精品美女主播</a>| <a href="http://zgztby.com" target="_blank">99国产精品私拍</a>| <a href="http://cc1024.com" target="_blank">麻豆freexxxx性91精品</a>| <a href="http://sinojinxing.com" target="_blank">亚洲一区综合</a>| <a href="http://042225.com" target="_blank">欧美色精品天天在线观看视频</a>| <a href="http://bby99.com" target="_blank">亚洲电影观看</a>| <a href="http://youminwang.com" target="_blank">久久资源在线</a>| <a href="http://9273829.com" target="_blank">亚洲女人天堂av</a>| <a href="http://679776.com" target="_blank">欧美无乱码久久久免费午夜一区</a>| <a href="http://y77778.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>