日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

DLL的向后兼容性问题

發布時間:2024/8/26 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 DLL的向后兼容性问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DLL的向后兼容性問題

  本文將要介紹DLL的向后兼容性問題,也就是著名的“DLL
Hell”問題。首先我會列出自己的研究結果,其中包括其它一些研究者的成果。在本文的最后,我還將給出“DLL Hell”問題的一個解決方案。

  介紹

 
 我曾經接受過一個任務,去解決一個DLL版本更新的問題————某個公司給用戶提供了一套SDK,這個SDK是由一系列DLL組成的;DLL中導出了很
多類,用戶使用這些類(直接使用或派生新的子類)來繼續他們的C++程序開發。用戶在使用這些DLL時沒有得到很詳細的使用說明(比如使用這些DLL中導
出的類有什么限制等)。當這些DLL更新為新的版本之后,他們發現他們開發的基于這些DLL的應用程序會經常崩潰(他們的應用程序從SDK的導出類派生了
新的子類)。為了解決這個問題,用戶必須重新編譯他們的應用程序,重新連接新版本的SDK DLL。

  我將對這個問題給出我的研究結果,同時還有我從其它地方搜集過來的相關信息。最后,我將來解決這個“DLL Hell”問題。

  研究結果

  就我個人的理解,這個問題是由SDK
DLL中導出的基類改動之后引起的。我查看了一些文章后發現,DLL的向后兼容性問題其實早有人提出。但作為一個實在的研究者,我決定自己做一些試驗。結
果,我發現如下的問題:

  1. 在DLL的導出類中增加一個新的虛函數將導致如下問題:

 
 (1)如果這個類以前就有一個虛函數B,此時在它之前增加一個新的虛函數A。這樣,我們改變了類的虛函數表。于是,表中的第一個函數指向了函數A(而不
是原來的B)。此時,客戶程序(假設沒有在拿到新版本的DLL之后重新編譯、連接)調用函數B就會產生異常。因為此時調用函數B實際上轉向了調用函數A,
而如果函數A和函數B的參數類型、返回值類型迥異的話問題就出來了!

  (2)如果這個類原本沒有虛函數(它的父類也沒有虛函數),那么
給這個類增加一個新的虛函數(或者在它的父類增加一個虛函數)將導致新增加一個類成員,這個成員是一個指針類型的,指向虛函數表。于是,這個類的尺寸將會
被改變(因為增加了一個成員變量)。這種情況下,客戶程序如果創建了這個類的實例,并且需要直接或間接修改類成員的值的時候就會有問題了。因為虛函數表的
指針是作為類的第一個成員加入的,也就是說,原本這個類定義的成員因為虛函數表指針的加入而都產生了地址的偏移。客戶程序對原成員的操作自然就出現異常
了。

  (3)如果這個類原本就有虛函數(或者只要它的父類有虛函數),而且這個類被導出了,被客戶程序當作父類來用。那么,我們不
要給這個類增加虛函數!不僅在類聲明的開頭不能加,即使在末尾處也不能加。因為加入虛函數會導致虛函數表內的函數映射產生偏移;即使你將虛函數加在類聲明
的末尾,這個類的派生類的虛函數表也會因此產生偏移。

  2. 在DLL的導出類中增加一個新的成員變量將導致如下問題:

  (1)給一個類增加一個成員變量將導致類尺寸的改變(給原本有虛函數表的類增加一個虛函數將不會改變類的尺寸)。假設這個成員增加在類聲明的最后。如
果客戶程序為創建這個類的實例少分配了內存,那么可能在訪問這個成員時導致內存越界。

  (2)如果在原有的類成員中間增加一個新的成員,情況會更糟糕。因為這樣會導致原有類成員的地址產生偏移。客戶程序操作的是一個錯誤的地址表,對于新
成員后面的成員尤其是這樣(它們都因為新成員的加入而導致了自己在類中的偏移的變化)。

  (注:上述的客戶程序就是指使用SDK DLL的應用程序。)

  除了上面這些原因外,還有其它操作會導致DLL的向后兼容性問題。下面列出了解決(大部分)這些問題的方法。

 DLL編碼約定簡述

  下面是我搜集到的所有的解決方案,其中一些是從網上的文章中拿來的,一些是跟不同的開發者交流后得到的。

  下面的約定主要針對DLL開發,而且是為解決DLL的向后兼容性問題:

  1. 編碼約定:

  (1)DLL的每個導出類(或者它的父類)至少包含一個虛函數。這樣,這個類就會始終保存一個指向虛函數表的指針成員。這么做可以方便后來新的虛函數
的加入。

  (2)如果你要給一個類增加一個虛函數,那么將它加在所有其它虛函數的后面。這樣就不會改變虛函數表中原有函數的地址映射順序。

 
 (3)如果你打算以后給一個類擴充類成員,那么現在預留一個指向一個數據結構的指針。這樣的話,增加一個成員直接在這個數據結構中修改,而不是在類中修
改。于是,新成員的加入不會導致類尺寸的改變。當然,為了訪問新成員,需要給這個類定義幾個操作函數。這種情況下,DLL必須是被客戶程序隱式
(implicitly)連接的。

  (4)為了解決前一點的問題,也可以給所有的導出類設計一個純接口的類,但此時,客戶程序將無法從這些導出類繼續派生,DLL導出類的層次機構也將無
法維持。

 
 (5)發布兩個版本的DLL和LIB文件(Debug版本和Release版本)。因為如果只發布Release版本,開發者將無法調試他們的程序,因
為Release版與Debug版使用了不同的堆(Heap)管理器,因而當Debug版本的客戶程序釋放Release版本DLL申請的內存時,會導致
運行時錯誤(Runtime
failure)。有一種辦法可以解決這個問題,就是DLL同時提供申請和釋放內存的函數供客戶程序調用;DLL中也保證不釋放客戶程序申請的內容。通常
遵守這個約定不是那么簡單!

  (6)在編譯的時候,不要改變DLL導出類函數的默認參數,如果這些參數將被傳遞到客戶程序的話。

  (7)注意內聯(inline)函數的更改。

  (8)檢查所有的枚舉沒有默認的元素值。因為當增加/刪除一個新的枚舉成員,你可能移動舊枚舉成員的值。這就是為什么每一個成員應該擁有一個唯一標識
值。如果枚舉可以被擴展,也應該對其進行文檔說明。這樣,客戶程序開發者就會引起注意。

 
 (9)不要改變DLL提供的頭文件中定義的宏。 2.
對DLL進行版本控制:如果主要的DLL發生了改變,最好同時將DLL文件的名字也改掉,就象微軟的MFC
DLL一樣。例如,DLL文件可以按照如下格式命名:Dll_name_xx.dll,其中xx就是DLL的版本號。有時候DLL中做了很大的改動,使得
向后兼容性問題無法解決。此時應該生成一個全新的DLL。將這個新DLL安裝到系統時,舊的DLL仍然保留。于是,舊的客戶程序仍然能夠使用舊的DLL,
而新的客戶程序(使用新DLL編譯、連接)可以使用新的DLL,兩者互不干涉。

  3. DLL的向后兼容性測試:還有很多很多中可能會破壞DLL的向后兼容性,因此實施DLL的向后兼容性測試是非常必要的!

  接下去,我將來討論一個虛函數的問題,以及對應的一個解決方案。

  虛函數與繼承

  首先來看一下如下的虛函數和繼承結構:

/**********DLL導出的類 **********/
class EXPORT_DLL_PREFIX VirtFunctClass{
 public:
  VirtFunctClass(){}
  ~VirtFunctClass(){}
  virtual void DoSmth(){
   //this->DoAnything();
   // Uncomment of this line after the corresponding method
   //will be added to the class declaration
  }
  //virtual void DoAnything(){}
  // Adding of this virtual method will make shift in
  // table of virtual methods
};

/**********客戶程序,從DLL導出類派生一個新的子類**********/
class VirtFunctClassChild : public VirtFunctClass {
 public:
  VirtFunctClassChild() : VirtFunctClass (){}
  ~VirtFunctClassChild(){};
  virtual void DoSomething(){}
};

  假設上面的兩個類,VirtFunctClass在my.dll中實現,而VirtFunctClassChild在客戶程序中實現。接下去,我們做
一些改變,將如下兩個注釋行放開:

//virtual void DoAnything(){}

  和

//this->DoAnything();

 
 也就是說,DLL導出的類作了改動!現在如果客戶程序沒有重新編譯,那么客戶程序中的VirtFunctClassChild將不知道DLL中
VirtFunctClass類已經改變了:增加了一個虛函數void
DoAnything()。因此,VirtFunctClassChild類的虛函數表仍然包含兩個函數的映射:

  1. void DoSmth()
  2. void DoSomething()

  而事實上這已經不對了,正確的虛函數表應該是:

  1. void DoSmth()
  2. void DoAnything()
  3. void DoSomething()

 
 問題就在于,當實例化VirtFunctClassChild之后,如果調用它的void
DoSmth()函數,DoSmth()函數轉而要調用void
DoAnything()函數,但此時基類VirtFunctClass只知道要調用虛函數表中的第二個函數,而VirtFunctClassChild
類的虛函數表中的第二個函數仍然是void DoSomething(),于是問題就出來了!

  另外,禁止在DLL的導出類的派生類
(上例中的VirtFunctClassChild)中增加虛函數也是于事無補的。因為,如果VirtFunctClassChild類中沒有
virtual void DoSomething()函數,基類中的void
DoAnything()函數(虛函數表中的第二個函數)調用將會指向一個空的內存地址(因為VirtFunctClassChild類維持的虛函數表僅
僅維持有一個函數地址)。

  現在可以看出,在DLL的導出類中增加虛函數是一個多么嚴重的問題!不過,如果虛函數是用來處理回調事件的,我們有辦法來解決這個問題。

COM及其它

  現在可以看出,DLL的向后兼容性問題是一個很出名的問題。解決這些問題,不僅可以借助于一些約定,而且可以通過其它一些先進的技術,比如COM技
術。因此,如果你想擺脫“DLL Hell”問題,請使用COM技術或者其它一些合適的技術。

  讓我們回到我接受的那個任務(我在本文開頭的地方講到的那個任務)————解決一個使用DLL的產品的向后兼容性問題。

  我對COM有些了解,因此我的第一個建議是使用COM技術來克服那個項目中的所有問題。但這個建議因為如下原因最終被否決了:

  1. 那個產品已經在某個內部層中有一個COM服務器。

  2. 將一大堆接口類重寫到COM的形式,投入比較大。

  3. 因為那個產品是DLL庫,而且已經有很多應用程序在使用它了。因此,他們不想強制他們的客戶重寫他們的應用程序。

 
 換句話說,我被要求完成的任務是,以最小的代價來解決這個DLL向后兼容性問題。當然,我應該指出,這個項目最主要的問題在于增加新的成員和接口類上的
虛回調函數。第一個問題可以簡單地通過在類聲明中增加一個指向一個數據結構的指針來解決(這樣可以任意增加新的成員)。這種方法我在上面已經提到過。但是
第二個問題,虛回調函數的問題是新提出的。因此,我提出了下面的最小代價、最有效的解決方法。

  虛回調函數與繼承

  
然我們想象一下,我們有一個DLL,它導出了幾個類;客戶應用程序會從這些導出類派生新的類,以實現虛函數來處理回調事件。我們想在DLL中做一個很小的
改動。這個改動允許我們將來可以給導出類“無痛地”增加新的虛回調函數。同時,我們也不想影響使用當前版本DLL的應用程序。我們期望的就是,這些應用程
序只有在不得已的時候才協同新版本的DLL進行一次重新編譯。因此,我給出了下面的解決方案:

  我們可以保留DLL導出類中的每個虛回
調函數。我們只需記住,在任何一個類定義中增加一個新的虛函數,如果應用程序不協同新版本的DLL重新編譯,將導致嚴重的問題。我們所做的,就是想要避免
這個問題。這里我們可以一個“監聽”機制。如果在DLL導出類中定義并導出的虛函數被用作處理回調,我們可以將這些虛函數轉移到獨立的接口中去。

  讓我們來看下面的例子:

// 如果想要測試改動過的DLL,請將下面的定義放開
//#define DLL_EXAMPLE_MODIFIED

#ifdef DLL_EXPORT
#define DLL_PREFIX __declspec(dllexport)
#else
#define DLL_PREFIX __declspec(dllimport)
#endif

/********** DLL的導出類 **********/
#define CLASS_UIID_DEF static short GetClassUIID(){return 0;}
#define OBJECT_UIID_DEF virtual short
GetObjectUIID(){return this->GetClassUIID();}

// 所有回調處理的基本接口
struct DLL_PREFIX ICallBack
{
 CLASS_UIID_DEF
 OBJECT_UIID_DEF
};

#undef CLASS_UIID_DEF

#define CLASS_UIID_DEF(X) public: static
short GetClassUIID(){return X::GetClassUIID()+1;}

// 僅當DLL_EXAMPLE_MODIFIED宏已經定義的時候,進行接口擴展
#if defined(DLL_EXAMPLE_MODIFIED)
// 新增加的接口擴展
struct DLL_PREFIX ICallBack01 : public ICallBack
{
 CLASS_UIID_DEF(ICallBack)
 OBJECT_UIID_DEF
 virtual void DoCallBack01(int event) = 0; // 新的回調函數
};
#endif // defined(DLL_EXAMPLE_MODIFIED)

class DLL_PREFIX CExample{
 public:
  CExample(){mpHandler = 0;}
  virtual ~CExample(){}
  virtual void DoCallBack(int event) = 0;
  ICallBack * SetCallBackHandler(ICallBack *handler);
  void Run();
 private:
  ICallBack * mpHandler;
};

  很顯然,為了給擴展DLL的導出類(增加新的虛函數)提供方便,我們必須做如下工作:

  1. 增加ICallBack * SetCallBackHandler(ICallBack *handler);函數;

  2. 在每個導出類的定義中增加相應的指針;

  3. 定義3個宏;

  4. 定義一個通用的ICallBack接口。

  為了演示給CExample類增加新的虛回調函數,我在這里增加了一個ICallBack01接口的定義。很顯然,新的虛回調函數應該加在新的接口
中。每次DLL更新都新增一個接口(當然,每次DLL更新時,我們也可以給一個類同時增加多個虛回調函數)。

 
 注意,每個新接口必須從上一個版本的接口繼承。在我的例子中,我只定義了一個擴展接口ICallBack01。如果DLL再下個版本還要增加新的虛回調
函數,我們可以在定義一個ICallBack02接口,注意ICallBack02接口要從ICallBack01接口派生,就跟當初
ICallBack01接口是從ICallBack接口派生的一樣。

  上面代碼中還定義了幾個宏,用于定義需要檢查接口版本的函數。例
如我們要為新接口ICallBack01增加新函數DoCallBack01,如果我們要調用ICallBack * mpHandler;
成員的話,就應該在CExample類進行一下檢查。這個檢查應該如下實現:

if(mpHandler != NULL &&
mpHandler->GetObjectUIID()>=ICallBack01::GetClassUIID()){
 ((ICallBack01 *) mpHandler)->DoCallBack01(2);
}

  我們看到,新回調接口增加之后,在CExample類的實現中只需簡單地插入新的回調調用。

 
 現在你可以看出,我們上述對DLL的改動并不會影響客戶應用程序。唯一需要做的,只是在采用這種新設計后的第一個DLL版本(為DLL導出類增加了宏定
義、回調基本接口ICallBack、設置回調處理的SetCallBackHandler函數,以及ICallBack接口的指針)發布后,應用程序進
行一次重編譯。(以后擴展新的回調接口,應用程序的重新編譯不是必需的!)

  以后如果有人想要增加新的回調處理,他就可以通過增加新接
口的方式來實現(向上例中我們增加ICallBack01一樣)。顯然,這種改動不會引起任何問題,因為虛函數的順序并沒有改變。因此應用程序仍然以以前
的方式運行。唯一你要注意的是,除非你在應用程序中實現了新的接口,否則你就接收不到新增加的回調調用。

  我們應該注意到,DLL的用戶仍然能夠很容易與它協同工作。下面是客戶程序中的某個類的實現例子:

// 如果DLL_EXAMPLE_MODIFIED沒有定義,使用以前版本的DLL
#if !defined(DLL_EXAMPLE_MODIFIED)
// 此時沒有使用擴展接口ICallBack01
class CClient : public CExample{
 public:
  CClient();
  void DoCallBack(int event);
};

#else // !defined(DLL_EXAMPLE_MODIFIED)
// 當DLL增加了新接口ICallBack01后,客戶程序可以修改自己的類
// (但不是必須的,如果他不想處理新的回調事件的話)
class CClient : public CExample, public ICallBack01{
 public:
  CClient();
  void DoCallBack(int event);

  // 聲明DoCallBack01函數(客戶程序要實現它,以處理新的回調事件)
  // (DoCallBack01是ICallBack01接口新增加的虛函數)
  void DoCallBack01(int event);
};

總結

以上是生活随笔為你收集整理的DLL的向后兼容性问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品久久久久久久妇 | 国产精品成人在线 | www看片网站 | 精品亚洲午夜久久久久91 | 久草视频免费 | 久久久av电影 | 97偷拍在线视频 | 国产男女免费完整视频 | 黄色在线观看污 | 黄色亚洲 | 国产在线视频资源 | 免费色视频 | 国产成人精品久久二区二区 | 天天操天天干天天综合网 | 中文字幕一区二区三区久久 | 精品国产一二区 | 国产欧美最新羞羞视频在线观看 | 开心激情五月婷婷 | 九九热在线免费观看 | 伊人影院得得 | 久久久久国产精品免费 | 中文字幕在线免费观看视频 | 日日爽天天操 | 色综合网在线 | 久久九九久久精品 | 在线观看免费视频你懂的 | 成人h动漫在线看 | 日b视频在线观看网址 | 深爱婷婷激情 | 波多野结衣一区二区 | 西西4444www大胆无视频 | 91一区二区三区在线观看 | 在线观看国产永久免费视频 | 久久久久久久国产精品视频 | 四川妇女搡bbbb搡bbbb搡 | 日韩二区在线播放 | 久久有精品 | 激情五月看片 | 亚洲精品国偷拍自产在线观看 | 国产成人精品一区一区一区 | 久久精品毛片 | 韩国精品福利一区二区三区 | 国产91免费在线 | 国产精品麻豆99久久久久久 | 久久久精品电影 | 色婷婷电影网 | 开心激情综合网 | 免费视频 你懂的 | 日韩毛片在线一区二区毛片 | 天堂av最新网址 | 久久国产福利 | 国产一区二区高清视频 | 久久综合色播五月 | 在线 影视 一区 | 亚洲国产小视频在线观看 | 狠狠综合久久 | 综合网在线视频 | 在线亚洲精品 | 天天干天天上 | 伊人欧美 | 国产一区在线视频 | av在线成人 | 91成人亚洲 | 久久精品久久久久电影 | 亚洲精品免费在线观看视频 | 特级西西444www大精品视频免费看 | 欧美福利久久 | 日本丶国产丶欧美色综合 | 日韩免费中文字幕 | 一区二区不卡 | 日本大片免费观看在线 | 91尤物国产尤物福利在线播放 | 美女网站在线免费观看 | 久久综合久久综合九色 | 亚洲日韩欧美一区二区在线 | 久草在线免费新视频 | 在线精品视频免费播放 | 九九热在线视频 | 最新日韩在线观看视频 | 欧美日韩精品区 | 久久天天躁夜夜躁狠狠85麻豆 | 六月激情婷婷 | 国产精品成人一区二区 | 久久这里只有精品久久 | 最新婷婷色 | 在线观看免费黄色 | 999ZYZ玖玖资源站永久 | 久久视频一区二区 | 在线观看国产永久免费视频 | 亚洲成人精品影院 | 中文在线 | 国产午夜麻豆影院在线观看 | 涩涩在线 | 开心激情五月婷婷 | 欧美男同视频网站 | 久久五月网 | 日韩av电影中文字幕在线观看 | 日日精品 | 91污污视频在线观看 | 91高清视频在线 | 超碰夜夜| 久热国产视频 | 国产一区成人 | 精品专区一区二区 | 亚洲午夜av电影 | 欧美成人区 | 亚州免费视频 | 日韩小视频网站 | 亚洲中字幕 | 国产精品久久久久久a | av电影中文字幕在线观看 | 男女拍拍免费视频 | 国产欧美日韩精品一区二区免费 | 国产高清在线一区 | 99久久99热这里只有精品 | 在线视频18在线视频4k | 中文字幕资源网在线观看 | 午夜三级在线 | 九九免费精品视频 | 国产黄色在线观看 | 国产成人高清在线 | 狠狠操天天操 | 四虎免费av | 国产美女视频免费观看的网站 | 一区免费观看 | 天天操天天怕 | 干 操 插| 欧美成人免费在线 | 久久精品国产99国产 | 亚洲成人av影片 | 欧美日韩精品在线 | 成人av播放| 国产视频黄 | 一区二区三区视频在线 | 中文国产字幕在线观看 | 日韩电影一区二区在线观看 | 狠狠躁日日躁夜夜躁av | 91高清视频 | 亚洲精品一区二区网址 | 日韩av资源站 | 福利视频网址 | 五月婷婷另类国产 | 亚洲性少妇性猛交wwww乱大交 | 国产精品资源在线观看 | 国产精品第10页 | 日韩在线不卡av | 色吧久久 | 最近中文字幕免费av | 久久久久久久18 | 五月激情综合婷婷 | 99热在线国产 | 国外成人在线视频网站 | 国语对白少妇爽91 | 国产精品18久久久久久久 | 91成人免费观看视频 | 久久av在线播放 | 久久丁香网 | 丁香九月激情综合 | 黄色天堂在线观看 | 五月开心综合 | 久久精品导航 | 91伊人久久大香线蕉蜜芽人口 | 天天天射| 日韩欧美xxx | 狠狠操导航 | 97超碰总站 | 97精产国品一二三产区在线 | 久久久在线 | 色欧美88888久久久久久影院 | 亚洲欧美一区二区三区孕妇写真 | 亚洲成人黄色av | 国产又粗又硬又长又爽的视频 | 免费看片网页 | 欧美午夜激情网 | 久久精品资源 | 国产一区免费观看 | 99久久99久国产黄毛片 | 欧美视频在线观看免费网址 | 国产黄免费在线观看 | 国际精品久久久久 | 国产黄大片 | 91精品视频在线看 | 日韩精品免费一线在线观看 | 成人动漫一区二区 | 久久久久久久久久免费 | 国产大陆亚洲精品国产 | 超碰在线人人97 | 国产色在线 | 2019免费中文字幕 | 香蕉视频导航 | 日韩动态视频 | 欧美色图亚洲图片 | 麻豆首页 | 国产一区二区不卡在线 | 久久99最新地址 | 日本性生活一级片 | 天天天操天天天干 | 国产一区影院 | 国产精选在线 | 亚洲成a人片综合在线 | 国产一级在线 | 18国产精品白浆在线观看免费 | 久久国产欧美日韩 | 丰满少妇高潮在线观看 | 日韩99热 | 久久狠狠一本精品综合网 | 欧美午夜一区二区福利视频 | 中文在线最新版天堂 | 色婷婷88av视频一二三区 | 亚洲黄色高清 | 在线 高清 中文字幕 | 国产91在线播放 | av电影在线观看 | 在线免费观看一区二区三区 | 一区二区三区四区不卡 | 国产97色| 久久婷婷五月综合色丁香 | 国产在线一线 | 伊人手机在线 | 91av大全| 成年人在线免费看视频 | 亚洲日本欧美在线 | 成人av电影免费在线观看 | 麻豆视频免费播放 | 丰满少妇对白在线偷拍 | 97看片网| 国产精品一区二区久久精品爱涩 | 日日激情 | 成人wwwxxx视频 | 99久久综合精品五月天 | 玖玖爱国产在线 | 国产精品免费看 | 综合色狠狠 | 一区二区三区四区不卡 | 欧美黄污视频 | 在线免费国产视频 | 高清国产在线一区 | 蜜臀av在线一区二区三区 | 国产精品久久毛片 | 精品国精品自拍自在线 | 在线播放日韩av | 视频一区二区在线观看 | 91视频这里只有精品 | 超碰97国产在线 | 看片在线亚洲 | 日本精品一区二区三区在线播放视频 | 国产精品av在线免费观看 | 免费看v片网站 | 国产视频精品网 | www五月天com | 91免费网| 在线精品视频在线观看高清 | 日韩av影视| 国产一区二区三区四区大秀 | 91桃色免费观看 | 国产精品久久久久影院日本 | 亚洲经典中文字幕 | 激情小说网站亚洲综合网 | 国产黄色片免费 | a色视频 | 免费在线国产 | 午夜精品久久久久99热app | www.xxxx欧美 | 久久久 精品| 免费亚洲婷婷 | 日日夜夜免费精品视频 | 一级电影免费在线观看 | 手机看片国产日韩 | 国产精品久久久区三区天天噜 | 国产日韩精品一区二区三区 | 日韩免费电影一区二区三区 | 亚洲 综合 精品 | 亚洲免费永久精品国产 | 亚洲伦理一区二区 | 久久精品网站视频 | 天天操夜夜爱 | 色综合久久久久网 | 欧美一级性视频 | 色射爱 | 欧美日韩不卡一区二区三区 | 亚洲日韩精品欧美一区二区 | 亚洲影院色 | 国产高清视频在线观看 | 免费一级片久久 | 中文字幕日韩伦理 | 欧美日韩高清一区二区 国产亚洲免费看 | 国模吧一区| 中文字幕精品一区久久久久 | 精品国产片 | 欧美精品亚洲二区 | 国产精品成人自产拍在线观看 | 在线天堂中文在线资源网 | 久久久免费观看完整版 | 色妞色视频一区二区三区四区 | 久久人91精品久久久久久不卡 | 91精品国自产拍天天拍 | 久久久人人爽 | 欧美日韩大片在线观看 | 久久免费国产 | 99视频在线免费 | 麻豆视频在线免费 | 国产一二区视频 | 五月激情丁香婷婷 | 曰韩在线 | 亚洲精品成人 | 97视频网站 | 久久久高清免费视频 | 久久久久久国产精品久久 | 亚洲 中文字幕av | 国产精品一区久久久久 | 欧美精品做受xxx性少妇 | 综合色站| 成人黄色大片在线免费观看 | 日韩,中文字幕 | 99久国产| 九色91在线 | 亚洲天堂精品视频在线观看 | 人人澡人人澡人人 | 免费在线观看av网址 | 粉嫩av一区二区三区免费 | 日韩av午夜| 粉嫩av一区二区三区入口 | 美女视频黄是免费的 | 国产成人一区二区三区在线观看 | 国产一级免费观看视频 | 深爱激情综合网 | 在线香蕉视频 | 激情五月***国产精品 | 国产精品亚洲成人 | 国产精品欧美一区二区三区不卡 | 亚洲视频精品在线 | www.99av| 绯色av一区| 狠狠狠色丁香婷婷综合激情 | 亚洲精品在线国产 | 国产精品麻豆果冻传媒在线播放 | 国产精品欧美一区二区 | 中文字幕在线观看第一页 | 一区二区在线影院 | 99在线精品视频 | 精品久久久成人 | 青春草免费在线视频 | 五月天丁香综合 | 永久av免费在线观看 | 久久91网 | 久久av网址| 免费视频在线观看网站 | 96精品高清视频在线观看软件特色 | 国产亚洲精品成人av久久ww | 日韩高清不卡在线 | 一本一本久久aa综合精品 | 国产精品毛片久久蜜 | 国产69精品久久久久9999apgf | 婷婷久操 | 久久歪歪 | 亚洲日本精品 | 久久99精品国产 | 精品久久一区 | 国产日韩精品在线观看 | 国色天香在线 | 日韩视频在线观看视频 | 日韩有码在线播放 | 视频一区在线播放 | 久精品在线 | 99视频精品| 久久精品第一页 | 免费人成网ww44kk44 | 丁香婷婷激情啪啪 | 亚洲精品综合欧美二区变态 | 美女视频免费一区二区 | 99视频精品全部免费 在线 | 99成人免费视频 | 欧美精品一区二区蜜臀亚洲 | 国产热re99久久6国产精品 | 日韩黄色免费在线观看 | 91网址在线观看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 午夜视频在线观看一区二区三区 | www.色综合.com | 免费视频91蜜桃 | 丁香激情网 | 亚洲专区欧美专区 | 国产不卡视频在线 | 亚洲专区在线视频 | 最近中文字幕大全 | 黄色免费大片 | 成人黄色视 | 91 在线视频播放 | 粉嫩高清一区二区三区 | 三级在线视频观看 | 国产精品一区久久久久 | 亚洲国产福利视频 | 福利视频第一页 | 91高清视频在线 | 欧美国产精品久久久久久免费 | 国产一区电影在线观看 | 中文字幕免费不卡视频 | 狠狠色狠狠色综合日日小说 | 久久a v电影 | 亚洲国产播放 | 日色在线视频 | 欧美日韩在线免费观看视频 | 在线观看精品一区 | 麻豆激情电影 | 中文字幕免费观看视频 | 丁香亚洲 | 国内精品久久久久久久久久清纯 | 久久久久女教师免费一区 | 国产精品av免费在线观看 | 超碰在线cao | 天天操天天色天天射 | 中文字幕一区二区三区在线视频 | 狠狠五月婷婷 | 久草在线免 | 精品国产乱码一区二 | 2019中文最近的2019中文在线 | 亚洲激情 在线 | 国产成人精品免费在线观看 | 国内三级在线观看 | 欧美精品亚洲精品日韩精品 | 欧美 激情 国产 91 在线 | 93久久精品日日躁夜夜躁欧美 | 丁香六月五月婷婷 | 二区三区精品 | 色综合久久精品 | 亚洲一二区视频 | 中文字幕在线视频免费播放 | 中文字幕av在线 | 国产精品久久久久久五月尺 | 亚洲视频高清 | av在线播放网址 | av丁香花| 91九色在线视频观看 | 日日射av | 五月激情六月丁香 | 免费看片成人 | 亚洲美女精品视频 | 久久免费播放 | 久草.com| av最新资源 | 国产女人40精品一区毛片视频 | 中文字幕999 | 国产精品福利视频 | 日本精品视频网站 | 中文字幕a∨在线乱码免费看 | 人人干免费 | 天天鲁天天干天天射 | 国产精品毛片久久久久久 | 国产精品一区免费在线观看 | 欧美色综合天天久久综合精品 | 久久久久久久久久久影视 | 天天操天天操天天操天天操天天操天天操 | 亚洲最大在线视频 | 国产精彩视频一区 | 狠狠激情中文字幕 | 99久久一区 | 探花视频免费在线观看 | 91在线看免费| 成人黄色av免费在线观看 | 在线看av网址 | 最新国产精品久久精品 | 午夜三级福利 | 国产麻豆剧果冻传媒视频播放量 | 日韩精品 在线视频 | 国产免费美女 | 国产精品一区二区在线播放 | 激情电影在线观看 | 欧美乱淫视频 | 99视屏 | 中文字幕中文字幕在线中文字幕三区 | 日韩电影中文 | 国产色久 | 九色精品免费永久在线 | 亚洲在线看 | 视频在线在亚洲 | 91看片在线 | 久久99久久99精品 | 夜夜躁狠狠躁日日躁视频黑人 | 国产精品麻豆三级一区视频 | 最近中文字幕 | 亚洲国产精品一区二区久久hs | 免费在线观看成人小视频 | 欧美成a人片在线观看久 | 丁香六月婷婷 | av资源免费看 | japanesefreesex中国少妇 | 日本中文字幕电影在线免费观看 | 99久久精品国产系列 | 亚洲 欧美 91 | 人人澡视频 | 久久久久草 | 夜添久久精品亚洲国产精品 | 亚洲精品资源在线观看 | 亚洲 欧美变态 另类 综合 | 婷婷丁香七月 | 欧美久久久| 欧美久草视频 | 久久久久久久久久久久久久电影 | www.com黄色| 亚洲天堂网在线视频观看 | 91精品国产乱码久久桃 | 国产亚洲永久域名 | 精品乱码一区二区三四区 | 国产精品久久嫩一区二区免费 | 色999视频 | 色综合天天射 | 久久99国产精品二区护士 | 国产精品免费观看网站 | 亚洲狠狠 | 91福利区一区二区三区 | 久久不射网站 | 欧美一级视频免费看 | 成人av午夜 | 亚洲丁香久久久 | 欧美疯狂性受xxxxx另类 | 成人午夜电影久久影院 | 97影视 | 午夜精品一区二区三区视频免费看 | 久久尤物电影视频在线观看 | 久久99国产精品视频 | 99精品国产99久久久久久福利 | 婷婷性综合 | 丁香六月天婷婷 | 国产精品美女久久久久aⅴ 干干夜夜 | 久久精品99国产精品亚洲最刺激 | 国产精品毛片一区 | 99色在线观看 | 国产精品综合久久久久 | 国产精品国产三级国产aⅴ无密码 | 黄污网站在线 | 国产小视频免费在线观看 | 免费观看成人网 | 欧美日韩国产综合一区二区 | 色狠狠操 | 97精品国自产拍在线观看 | 中文字幕av电影下载 | 97在线视频免费观看 | 亚洲欧美成人在线 | 2023年中文无字幕文字 | 亚洲天堂激情 | 99久久日韩精品视频免费在线观看 | 欧美成人中文字幕 | 国产九九精品 | 国产视频午夜 | 久久久久久高潮国产精品视 | 久久tv | 国产自制av | 国产美女在线免费观看 | 在线免费黄色av | 亚洲一级在线观看 | 中文字幕一区二区三区精华液 | 国产精品手机视频 | 中文字幕文字幕一区二区 | 亚洲精品免费视频 | 日韩精品专区在线影院重磅 | 日韩中文字幕网站 | 五月激情综合婷婷 | 欧美男男激情videos | 成人免费在线看片 | 伊人天天狠天天添日日拍 | 国产精品四虎 | 欧美日韩国产精品一区二区 | 国产伦精品一区二区三区… | 亚洲欧美日韩国产精品一区午夜 | 美女在线免费观看视频 | 成人va在线观看 | 中文字幕免费久久 | 久久久久中文 | 在线观看中文字幕dvd播放 | 国产精品二区在线 | 国产不卡在线视频 | 久热色超碰 | 五月婷婷激情六月 | 亚洲永久精品一区 | a'aaa级片在线观看 | 色婷婷成人网 | 美女天天操 | 片黄色毛片黄色毛片 | 福利片视频区 | 久草精品视频在线播放 | 69av久久| 国产亚洲婷婷 | 成人久久影院 | 中文成人字幕 | 丁香婷婷激情国产高清秒播 | 88av网站| 中文字幕在线播出 | 日韩激情久久 | 免费高清在线观看成人 | 精品在线亚洲视频 | 国产精品videoxxxx | 国产91精品看黄网站 | 久久亚洲私人国产精品va | 免费av黄色 | 91中文字幕在线播放 | 国产成人精品999 | 手机在线中文字幕 | 五月天免费网站 | 久久夜色精品国产欧美乱 | av久久久 | 欧美aaa视频 | 婷婷av网| 天天天天爱天天躁 | 久久久久日本精品一区二区三区 | 日日夜夜精品免费 | 中文字幕中文字幕 | 九九热视频在线播放 | 色综合婷婷 | 中午字幕在线 | 正在播放久久 | 91亚色在线观看 | 国产视频精选在线 | 91丨九色丨高潮 | 免费观看一区二区三区视频 | 亚洲春色奇米影视 | 一区二区三区在线视频观看58 | 精品伊人久久久 | 日日干日日操 | 四虎影视成人精品 | 中文字幕三区 | 午夜视频在线观看一区二区三区 | 欧美成人tv | 中文字幕超清在线免费 | 久久香蕉电影网 | 国产精品国内免费一区二区三区 | 黄色1级大片 | 香蕉视频久久 | 91x色| 国产精品麻豆三级一区视频 | 亚洲精品国产精品乱码在线观看 | 国产一区二区三区在线免费观看 | 久久经典国产 | 精品久久久久久久久久久久 | 久久久久二区 | 成人免费在线观看电影 | 在线欧美a| 国产免费一区二区三区最新 | 欧美成人xxxxxxxx | 在线免费黄色片 | av电影一区二区三区 | 国产中文字幕亚洲 | 激情欧美一区二区免费视频 | 欧美国产大片 | 天天射网| 久久视频国产精品免费视频在线 | 91亚洲精 | 国产精品普通话 | 久草免费电影 | 国产成人在线网站 | 国产精品久久久久久久久久久久午 | 国产精品毛片久久久久久久久久99999999 | 久久久久久久久久久久影院 | 青青河边草免费直播 | 五月天激情婷婷 | 夜夜骑首页 | 精品少妇一区二区三区在线 | 操操综合网 | 欧美性做爰猛烈叫床潮 | 成人久久精品 | 国产精品久久久久久久久久久久 | 国产片免费在线观看视频 | 精品在线播放视频 | 国产一区二区不卡在线 | 亚洲专区中文字幕 | 久久久久久中文字幕 | 成人国产综合 | 中文字幕中文字幕在线中文字幕三区 | 婷婷国产v亚洲v欧美久久 | 九九有精品 | 国产黄色精品在线 | 亚洲国产欧美在线看片xxoo | 精品国产一区二区三区久久久久久 | 久99久在线视频 | av大片网站| 97人人网 | 中文字幕网站视频在线 | 国产高清在线一区 | 在线一区电影 | 99精品国产免费久久久久久下载 | 久久久久久综合网天天 | 欧美性色xo影院 | 亚洲国产99 | 免费91麻豆精品国产自产在线观看 | 91麻豆产精品久久久久久 | 一区二区三区四区精品 | 91精品视频免费看 | 亚洲色图美腿丝袜 | 久久精品三级 | 在线91视频 | 国产精品成人一区二区三区吃奶 | 日韩午夜在线观看 | 狠狠狠狠狠狠 | 精品久久久久国产免费第一页 | av中文资源在线 | 欧美aa在线观看 | 日日夜夜狠狠干 | 国产精品99久久久精品免费观看 | 国产二区视频在线 | 久久 地址 | 国产精品青青 | 国产精品久久久久久久久久久杏吧 | 日韩网站在线 | 天天色天天草天天射 | 免费三级骚| 精品视频久久久 | 丁香六月伊人 | www.久久爱.cn | 精品一区电影国产 | 91九色最新地址 | 一区 二区 精品 | 深夜免费网站 | 天天激情站| 国产五月 | 97视频在线 | 97免费中文视频在线观看 | 黄色www在线观看 | 中文字幕2021 | 久草在线视频看看 | 亚洲精品一区二区三区在线观看 | 亚洲天堂网在线观看视频 | 日韩av影视 | 亚洲精品久久久久久久蜜桃 | 99婷婷狠狠成为人免费视频 | 三级视频片 | 久久99国产综合精品免费 | 欧美日韩国产一区二区在线观看 | 国产成人精品一区二区在线观看 | a级片在线播放 | 欧美一级黄大片 | 在线观看国产www | 国产免费视频一区二区裸体 | 免费看片亚洲 | 香蕉视频在线播放 | 激情欧美丁香 | 国产高h视频 | 国产乱对白刺激视频在线观看女王 | 三级小视频在线观看 | 中文字幕在线免费看 | 中文av一区二区 | 美女视频黄是免费的 | 久久狠狠一本精品综合网 | 亚洲在线视频免费 | 97国产一区 | 中文字幕精品三区 | 性色xxxxhd| 国产无吗一区二区三区在线欢 | 婷婷夜夜| 天天综合五月天 | 亚洲欧洲精品在线 | 性色视频在线 | 久久手机免费视频 | 精品国产aⅴ一区二区三区 在线直播av | 亚洲一级黄色片 | 久久影院亚洲 | 色999五月色 | 亚洲人精品午夜 | 992tv又爽又黄的免费视频 | 欧美先锋影音 | 精品福利视频在线 | 午夜精品久久久久久久99婷婷 | 婷婷五情天综123 | 免费久久99精品国产婷婷六月 | 欧美久久久久久久久久久久 | av看片网| 日韩精品一卡 | 国产精品免费一区二区三区在线观看 | 丁香5月婷婷 | 亚洲高清国产视频 | 色视频成人在线观看免 | 综合天堂av久久久久久久 | 亚洲精品ww | av一本久道久久波多野结衣 | 久久精品视频观看 | 日韩av成人免费看 | 最近日本韩国中文字幕 | av解说在线 | 午夜国产一区二区 | 毛片网站在线看 | av线上看| 色综合久久中文综合久久牛 | 久草在线资源视频 | 亚洲综合黄色 | 69夜色精品国产69乱 | 亚洲国产免费看 | 黄色片视频在线观看 | 久久精品国产一区二区三区 | 免费中文字幕在线观看 | 婷婷视频导航 | 97国产小视频 | 久久露脸国产精品 | 亚洲欧美日韩精品久久久 | 免费一级黄色 | 精品久久久久久亚洲综合网站 | 国产精品一区二区av麻豆 | 国产在线精品二区 | 操操操天天操 | 免费三级大片 | 黄色毛片在线 | 奇米影视999 | www.色在线| 亚洲91精品| 99久久夜色精品国产亚洲96 | 尤物97国产精品久久精品国产 | 欧美视频日韩视频 | 色wwwww| 欧美特一级| 日韩中文字幕免费视频 | 久久国产精品99国产精 | 国产做aⅴ在线视频播放 | 日日干干 | 在线免费视频a | 欧美福利片在线观看 | 综合网成人 | 日日夜夜天天久久 | 韩国精品一区二区三区六区色诱 | 国产又黄又猛又粗 | 久久国产精品精品国产色婷婷 | 国产精品免费不卡 | 欧美另类性 | www.五月天婷婷 | 久久人人爽人人爽人人 | 国产视频1| 欧美日韩高清在线观看 | 一本一本久久aa综合精品 | 久久久久免费网站 | 欧美日韩一区二区三区视频 | 亚洲春色成人 | 黄色网址在线播放 | 亚洲九九九在线观看 | 欧美日韩91 | 久久免费视频一区 | 国产精品免费观看视频 | 国产色婷婷 | 成人在线黄色电影 | 韩日成人av | 在线小视频国产 | 久草在线免费看视频 | 高清精品视频 | 久草在线视频在线 | 狠狠色丁香久久婷婷综合五月 | 久久99精品久久久久久清纯直播 | 在线观看欧美成人 | 99 国产精品| 97视频在线免费观看 | 久久首页 | 高清一区二区三区av | 精品视频一区在线 | 国产精品久久久久久久久久久久冷 | 在线观看视频日韩 | 人人插人人 | 福利一区视频 | 免费在线观看的av网站 | 一级a毛片高清视频 | 国内少妇自拍视频一区 | 久久精品国产99 | 福利网在线 | 婷婷丁香六月天 | 成人av在线亚洲 | 精品在线观看一区二区三区 | 探花视频免费观看高清视频 | 狠狠狠色丁香婷婷综合久久88 | av丝袜在线 | 综合色狠狠 | 91av电影网 | 日韩欧美国产免费播放 | 国产精品久久久久四虎 | 日日夜夜狠狠干 | 在线播放精品一区二区三区 | 久久新视频 | 日韩欧美视频免费观看 | 亚洲天堂毛片 | 国产精品美女久久久久久2018 | 国产精品99久久久久人中文网介绍 | 国产黄a三级三级三级三级三级 | 久久字幕网 | 国产18精品乱码免费看 | 天天做天天爱天天综合网 | 中文字幕91 | 亚洲日韩中文字幕 | 欧美日一级片 | 91麻豆精品一区二区三区 | 99精品热视频只有精品10 | 欧美日本不卡视频 | 在线观看国产v片 | 久久免费在线观看 | 999国内精品永久免费视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 色综合久久综合中文综合网 | 国产午夜视频在线观看 | 国产视频综合在线 | 欧美一级片播放 | 成人h在线观看 | 久久视频国产 | 成年人免费av网站 | 99视频在线免费 | 天天狠狠操 | 成人黄色电影免费观看 | 免费a v在线| 久久久久久久久久久久久久电影 | 激情五月网站 | 外国av网 | 九九九九九国产 | 久久午夜鲁丝片 | 国产精品2020 | 免费看片成年人 | 99精品在线观看 | 欧美日韩亚洲第一页 | 中文字幕在线观看播放 | www.狠狠色| 夜夜夜夜猛噜噜噜噜噜初音未来 | 91免费的视频在线播放 | 精品在线视频播放 | 国产精品去看片 | 一级性生活片 | 91精品久久久久久综合乱菊 | 人人舔人人爽 | 精品国产免费观看 | 精品xxx | 成人影片在线免费观看 | 久久久久免费看 | 久久成电影 | 日韩区视频 | 国产精选在线 | 天天综合入口 | 精品一区二区三区久久 | 狠狠色狠狠色 | 国产三级香港三韩国三级 | 精品国产伦一区二区三区观看方式 | 亚洲 欧洲 国产 日本 综合 | 久久免费福利视频 | 99久久www | 亚洲1区在线 | 成人免费xxxxxx视频 | 日韩电影一区二区三区 | 手机在线中文字幕 | a视频免费 | 久久国产精品网站 | 日韩精品一区二区三区在线播放 | 免费观看版 | 国产精品乱码久久久久久1区2区 | 久久免费看av | 久久调教视频 | 中文字幕三区 | 精品亚洲免费视频 | 中文字幕一区二区三区久久蜜桃 | 国产伦精品一区二区三区无广告 | 在线观看国产中文字幕 | 草久电影 | 久久精品美女视频 | 午夜999| 欧洲高潮三级做爰 | 天天干,狠狠干 | 久久精品在线免费观看 | 在线观看国产www | 九九电影在线 | 日本一区二区三区免费看 | 中文字幕在线视频国产 | 超碰官网 | 国产精品久久久久久久久久久久 | 日日夜夜天天射 | 五月av在线 | 国产色婷婷精品综合在线手机播放 | 日本在线观看中文字幕 | 久久99国产精品久久99 | 久久国产精品免费一区二区三区 | 国产午夜精品理论片在线 | 97综合网 | 国产精品ⅴa有声小说 | 色亚洲激情 | 九九99 | 五月天亚洲激情 | 麻豆精品视频在线观看免费 | 国产自偷自拍 | 精品久久久亚洲 | 波多野结衣一区二区三区中文字幕 | 国产精品日韩久久久久 | 亚洲1区在线 | 久久久久久免费视频 | 免费进去里的视频 | 日韩久久在线 | 天操夜夜操 | 黄色av网站在线免费观看 | 热久久影视 | 免费午夜网站 | 香蕉在线影院 | 国产亚洲成人精品 | 在线91网| 五月天丁香亚洲 | 色综合久久88色综合天天人守婷 | 久久久精品久久 | 99热亚洲精品 | 国产老太婆免费交性大片 | 天天操月月操 | 中文字幕一二 | 国产一区二区精品久久91 | 色综合天天狠天天透天天伊人 | 成人欧美一区二区三区黑人麻豆 | 亚洲国产欧美在线人成大黄瓜 |