亚洲成人一区在线观看_天堂网www_国产精品久久9_中文在线播放_伊人天天_久久精品久久久精品美女

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 深入分析D語言接口與COM接口的關系

深入分析D語言接口與COM接口的關系
2010-01-13 21:04:58  作者:佚名  來源:


深入分析D語言接口與COM接口的關系
   
    前兩天為了解決dxpcom項目中遇到的xpcom接口兼容性問題,看了一下DMD編譯器的源碼,對D的接口有了一些了解,現在總結出來,備忘。

    D中有了專門用于標識接口的關鍵字interface,而不用象C++中使用抽象類來代替。
    D代碼:
Java代碼
interface ITest  
{  
int test();  

interface ITest
{
int test();
}
    C++代碼:
Java代碼
class ITest  
{  
int test()=0;  

class ITest
{
int test()=0;
}

    而D中的接口與C++中的接口不同之處是,D中的接口仍然含有ClassInfo,存放在虛表的0項上。

    從DMD的源碼中可以得知,D中的類,接口都在虛表的0項上保存了ClassInfo指針。
    這樣,D中的接口是無法與C++接口兼容的,則D就無法調用Windows的COM對象,至少是無法“優雅”的調用(仍然可以使用struct進行二進制兼容代替)。

    為了解決這個問題,DMD就需要能夠表示出與C++兼容的COM接口,即需要一個虛表是"干凈"的接口。又由于,從一個COM接口繼承的接口仍然是一個COM接口,而COM模型的實現上又恰好定義了一個“IUnknown”根接口(COM體系中的所有的接口都是繼承了IUnknown)。

    所以,出于簡單實現的原則,DMD區分一個接口是D接口還是COM接口,關鍵就是判斷這個接口是不是叫做IUnknown,以及這個接口是否繼承自IUnknown,雖然接口都是通過Interface關鍵字聲明。更有趣的是,DMD僅僅判斷接口的名字是否為"IUnknown"而根本不管接口中的方法如何定義。

    以上所述內容在進行Windows COM編程時,幾乎不會被察覺,因為Windows的所有接口都是繼承自IUnknown,只要正常使用就可以了。

    而在進行Mozilla xpcom編程的時候,xpcom的根接口叫做ISupports,DMD根本就不會認為這是需要編譯為C++兼容的COM接口,而仍然會將虛表的0項進行保留,結果給使用者造成了虛表指針偏移了的印象。

    基于D的這個識別COM接口的方式,在dxpcom項目中,qiezi使用了別名的方式進行了變換,既將dxpcom項目中的所有的接口名稱進行了優雅的統一,又能夠使DMD生成正確的COM接口:
Java代碼
extern(Windows)  
interface IUnknown {  
  static const char[] IID_STR = NS_ISUPPORTS_IID_STR;  
  static const nsIID IID = NS_ISUPPORTS_IID;  
 
  /* void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result); */ 
  nsresult QueryInterface(nsIID * uuid, void * *result);  
 
  /* [noscript, notxpcom] nsrefcnt AddRef (); */ 
  nsrefcnt AddRef();  
 
  /* [noscript, notxpcom] nsrefcnt Release (); */ 
  nsrefcnt Release();  
 
}  
 
alias IUnknown nsISupports; 

extern(Windows)
interface IUnknown {
  static const char[] IID_STR = NS_ISUPPORTS_IID_STR;
  static const nsIID IID = NS_ISUPPORTS_IID;

  /* void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result); */
  nsresult QueryInterface(nsIID * uuid, void * *result);

  /* [noscript, notxpcom] nsrefcnt AddRef (); */
  nsrefcnt AddRef();

  /* [noscript, notxpcom] nsrefcnt Release (); */
  nsrefcnt Release();

}

alias IUnknown nsISupports;

   這個現象同時也很好的說明了,D中的別名(alias)在符號的處理方面僅僅是一個符號的替換,同C/C++中的#define的作用相同。

    下面的兩段代碼就能很好的詮釋本文的內容(感謝qiezi提供)

    代碼一,無法通過運行期斷言,因為接口IInterface仍然為標準D接口,虛表的0項為ClassInfo指針無法被顯示的調用,在執行的結果中就表現為虛表進行了偏移。
Java代碼
extern(Windows):     
int test1(IInterface p)     
{     
    return 1;     
}     
    
int test2(IInterface p)     
{     
    return 2;     
}     
    
int test3(IInterface p)     
{     
    return 3;     
}     
    
struct InterfaceVtbl     
{     
extern(Windows):     
    int function(IInterface) test1;     
    int function(IInterface) test2;     
    int function(IInterface) test3;     
}     
    
struct Interface     
{     
    InterfaceVtbl* vtbl;     
    
    InterfaceVtbl vtbl_;     
    
    static Interface opCall()     
    {     
        Interface res;     
        res.vtbl_.test1 = &test1;     
        res.vtbl_.test2 = &test2;     
        res.vtbl_.test3 = &test3;     
        res.vtbl = &res.vtbl_;     
        return res;     
    }     
}     
    
interface IInterface     
{     
    int test1();     
    int test2();     
    int test3();     
}     
    
extern (D):     
    
void main()     
{     
    Interface i = Interface();     
    assert(i.vtbl.test1(cast(IInterface)&i) == 1);     
    assert(i.vtbl.test2(cast(IInterface)&i) == 2);     
    assert(i.vtbl.test3(cast(IInterface)&i) == 3);     
    
    IInterface ii = cast(IInterface)&i;     
    assert(ii.test1() == 1);     
    assert(ii.test2() == 2);     
    assert(ii.test3() == 3);     

extern(Windows):  
int test1(IInterface p)  
{  
    return 1;  
}  
 
int test2(IInterface p)  
{  
    return 2;  
}  
 
int test3(IInterface p)  
{  
    return 3;  
}  
 
struct InterfaceVtbl  
{  
extern(Windows):  
    int function(IInterface) test1;  
    int function(IInterface) test2;  
    int function(IInterface) test3;  
}  
 
struct Interface  
{  
    InterfaceVtbl* vtbl;  
 
    InterfaceVtbl vtbl_;  
 
    static Interface opCall()  
    {  
        Interface res;  
        res.vtbl_.test1 = &test1;  
        res.vtbl_.test2 = &test2;  
        res.vtbl_.test3 = &test3;  
        res.vtbl = &res.vtbl_;  
        return res;  
    }  
}  
 
interface IInterface  
{  
    int test1();  
    int test2();  
    int test3();  
}  
 
extern (D):  
 
void main()  
{  
    Interface i = Interface();  
    assert(i.vtbl.test1(cast(IInterface)&i) == 1);  
    assert(i.vtbl.test2(cast(IInterface)&i) == 2);  
    assert(i.vtbl.test3(cast(IInterface)&i) == 3);  
 
    IInterface ii = cast(IInterface)&i;  
    assert(ii.test1() == 1);  
    assert(ii.test2() == 2);  
    assert(ii.test3() == 3);  
}

    代碼二,與代碼一的結構完全一致,卻能夠通過運行時斷言的檢查。唯一的不同僅僅是IInterface的名字換成了IUnknown!!
Java代碼
extern(Windows):     
int test1(IUnknown p)     
{     
    return 1;     
}     
    
int test2(IUnknown p)     
{     
    return 2;     
}     
    
int test3(IUnknown p)     
{     
    return 3;     
}     
    
struct InterfaceVtbl     
{     
extern(Windows):     
    int function(IUnknown) test1;     
    int function(IUnknown) test2;     
    int function(IUnknown) test3;     
}     
    
struct Interface     
{     
    InterfaceVtbl* vtbl;     
    
    InterfaceVtbl vtbl_;     
    
    static Interface opCall()     
    {     
        Interface res;     
        res.vtbl_.test1 = &test1;     
        res.vtbl_.test2 = &test2;     
        res.vtbl_.test3 = &test3;     
        res.vtbl = &res.vtbl_;     
        return res;     
    }     
}     
    
interface IUnknown     
{     
    int test1();     
    int test2();     
    int test3();     
}     
    
extern (D):     
    
void main()     
{     
    Interface i = Interface();     
    assert(i.vtbl.test1(cast(IUnknown)&i) == 1);     
    assert(i.vtbl.test2(cast(IUnknown)&i) == 2);     
    assert(i.vtbl.test3(cast(IUnknown)&i) == 3);     
    
    IUnknown ii = cast(IUnknown)&i;     
    assert(ii.test1() == 1);     
    assert(ii.test2() == 2);     
    assert(ii.test3() == 3);     

extern(Windows):  
int test1(IUnknown p)  
{  
    return 1;  
}  
 
int test2(IUnknown p)  
{  
    return 2;  
}  
 
int test3(IUnknown p)  
{  
    return 3;  
}  
 
struct InterfaceVtbl  
{  
extern(Windows):  
    int function(IUnknown) test1;  
    int function(IUnknown) test2;  
    int function(IUnknown) test3;  
}  
 
struct Interface  
{  
    InterfaceVtbl* vtbl;  
 
    InterfaceVtbl vtbl_;  
 
    static Interface opCall()  
    {  
        Interface res;  
        res.vtbl_.test1 = &test1;  
        res.vtbl_.test2 = &test2;  
        res.vtbl_.test3 = &test3;  
        res.vtbl = &res.vtbl_;  
        return res;  
    }  
}  
 
interface IUnknown  
{  
    int test1();  
    int test2();  
    int test3();  
}  
 
extern (D):  
 
void main()  
{  
    Interface i = Interface();  
    assert(i.vtbl.test1(cast(IUnknown)&i) == 1);  
    assert(i.vtbl.test2(cast(IUnknown)&i) == 2);  
    assert(i.vtbl.test3(cast(IUnknown)&i) == 3);  
 
    IUnknown ii = cast(IUnknown)&i;  
    assert(ii.test1() == 1);  
    assert(ii.test2() == 2);  
    assert(ii.test3() == 3);  
}

    另外需要說明的是extern(D),extern(Windows),extern(Pascal)等特征,只是用來描述函數的調用約定,與接口的類型無關。
    一句話:D中的類與標準D接口都有ClassInfo在虛表的0項上,而COM接口的虛表是干凈的;而將一個接口聲明為COM接口的方式為:將這個接口命名為IUnknown或繼承自IUnknown。

 
更多信息請登陸http://61.191.27.74:802/ 最后,歡迎加入http://61.191.27.74:802/的會員


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 欧美伦理一区二区 | 五月天在线婷婷 | 二区在线观看 | 农村末发育av片四区五区 | 超碰一区 | 久久777 | 精品国产不卡一区二区三区 | av免费网站在线观看 | 国产精品一二三区视频 | 国产高清自拍 | 国产精品美女久久久久aⅴ国产馆 | 免费亚洲网站 | 国产成人精品一区二区视频免费 | 欧美一级二级片 | 黑人一区| 国产精品久久久99 | 日韩国产一区二区三区 | 欧美美女黄色网 | 青青草在线免费视频 | 久久三区 | 夜夜爽99久久国产综合精品女不卡 | 精品护士一区二区三区 | 一区二区三区亚洲精品国 | 欧美激情网 | 日韩一区免费在线观看 | 91亚洲国产 | 亚洲精品第一区在线观看 | 久久久成人av | 欧美激情第二页 | 91在线观看视频 | 999在线观看精品免费不卡网站 | 伊人一区 | 国产在线观看一区 | 国产情侣激情 | 91精品综合久久久久久五月天 | 国产精品国产三级国产aⅴ原创 | 欧美激情专区 | 免费黄色网址在线播放 | 欧美精品在线观看 | 伊人网址 | 亚洲国产精品第一区二区 | 亚洲综合婷婷 | 91免费在线 | 天天干夜夜骑 | 久久伊人一区二区 | 色网站在线观看 | 99国产精品99久久久久久 | 黄色毛片在线观看 | 午夜精品久久久久 | 激情久久久久 | h视频网站在线 | 国产成人精品久久二区二区91 | 黄色三级网站 | 亚洲欧洲一区二区 | 久久av一区二区 | 亚洲电影一区二区 | 亚洲一区二区三区视频 | 色黄视频在线观看 | 国产一级片| 99精品视频免费在线观看 | 91精品国产综合久久久久久 | 日本高清视频网站www | av电影手机在线看 | 国产超碰人人模人人爽人人添 | av片网站| 国产一区二区在线免费观看 | 一级毛片电影 | 亚洲欧美日韩精品 | 五月婷婷激情 | 日韩在线永久免费播放 | 黄色一级网址 | 亚洲一区在线日韩在线深爱 | 一区二区三区福利视频 | 免费看片91 | 伊人干综合 | 日本在线一区二区 | 欧美高清一区 | 在线色站 | 我要看一级黄色 | av免费资源| 拍拍无遮挡人做人爱视频免费观看 | 日韩免费在线观看视频 | 国产一区二区在线播放 | 亚洲在线免费观看 | 亚洲一区二区视频在线观看 | 日本成人片网站 | 欧美日本一区 | 久久av资源网 | 精品三区在线观看 | 欧美大片网站 | 亚洲精品资源在线观看 | 国产精品一二三区 | 国产人免费人成免费视频 | 一级毛片观看 | 日韩大尺度电影在线观看 | 老牛嫩草一区二区三区眼镜 | 欧美成人一区二区三区片免费 | 日韩精品一区二区三区中文在线 | 成年人福利 | 免费成人av网站 | 国产精品一区二区久久 | 亚洲精品影院 | 久久久国产视频 | 久久国产精彩视频 | 天天干天天操天天爽 | 91在线视频免费观看 | 亚洲精品成人无限看 | 免费国产在线视频 | 99精品国产在热久久 | 欧美色综合天天久久综合精品 | 日韩av在线中文字幕 | 日韩精品一区在线 | h在线看| 国产精品久久久久久久粉嫩 | 国产黄色av | 国产精品一区二区久久久 | 国产成人在线播放 | 中国妞xxxhd露脸偷拍视频 | 亚洲一区精品在线 | 久久久久久亚洲一区二区三区蜜臀 | 亚洲国产精品一区二区久久 | 中文字幕乱码一区二区三区 | 亚洲欧美综合 | 中文在线a在线 | a毛片在线免费观看 | 在线观看国产视频 | 久久国产精品免费一区二区三区 | 天天干天天看天天操 | 成人精品一区二区三区中文字幕 | 国产一区二区三区四区视频 | 九九资源站 | 欧美一区二区三区电影 | 亚洲a网 | 欧美一区二区在线 | 91视频.www | 五月综合婷| 99视频在线播放 | 看一级毛片视频 | 美女黄视频网站 | 成人欧美一区二区三区视频xxx | 一区二区三区免费av | 欧美国产一区二区 | 国产裸体永久免费视频网站 | 久久久久久久久久穴 | 玖玖在线精品 | 国产一区二区三区精品久久久 | 中文字幕第二十六页页 | 天天澡天天狠天天天做 | 欧美日韩高清 | 日韩一区二区三区av | 国产精品久久久久久久久久10秀 | 国产精品99精品久久免费 | 亚洲欧洲一区二区 | 91视频免费看 | 日韩精品一区二区三区在线 | 黄色在线观看 | 毛片免费观看 | aⅴ色国产 欧美 | 国产在线一区二区三区 | 国产激情综合五月久久 | 国产乱码精品一区二区三区中文 | 理论黄色片 | 中文字幕第一页在线 | 亚洲人成网站999久久久综合 | av官网在线 | 精品在线一区二区三区 | 国产精品一区二区在线观看 | 毛片av在线 | 国产av毛片| 日韩久久影院 | 亚洲精品久久久久一区二区三区 | 欧美在线视频一区二区 | 一区二区三区免费 | av片在线观看 | 亚洲精品久久久久久久久久久久久 | 天天干天天干天天干天天射 | 日韩av资源站 | 日韩在线看片 | 午夜视频福利在线观看 | 视频一区二区三区免费观看 | 1级毛片| 午夜精品久久久久久久男人的天堂 | 中文字幕日韩一区二区不卡 | 欧美,日韩,国产精品免费观看 | 日本一区高清 | 欧美三级网 | 欧美色阁 | 国产欧美精品一区二区三区 | 日韩在线免费 | 三级在线观看 | 日韩中文不卡 | 欧美日韩亚洲国产综合 | 亚洲天堂男人 | 国产精品视频一区二区三区 | 玖玖免费| 天堂资源最新在线 | 欧美在线观看一区 | 精品国产一区二区三区久久久蜜 | 亚洲美女性视频 | 暖暖成人免费视频 | 丁香婷婷久久久综合精品国产 | 国产一区精品视频 | 亚洲国产精品99久久久久久久久 | 不卡的一区二区 | 国产一区在线视频 | 久久三区 | 美日韩在线 | 国产成人片 | 超碰在线一区二区三区 | 成年免费视频 | 一区二区免费看 | 精品视频一区二区 | 在线高清av | 伊人久色 | 国产中文字幕在线观看 | 国产精品久久久久久久久久久新郎 | 日韩性视频 | 九九热视频在线 | 91视频一区二区 | 亚洲一区二区高清视频 | 在线99| 日本一区二区高清视频 | 91麻豆精品国产91久久久久久 | 在线观看视频一区 | 91精品国产欧美一区二区成人 | 91久久久久久久久 | 亚洲国产精品99久久久久久久久 | 91在线网址 | 操久久| 久热伊人 | 91.xxx.高清在线 | 成人毛片在线观看 | 中文av字幕| 日韩欧美第一页 | 亚洲最大av网站 | 国产精品自拍视频 | 538在线精品| 欧美日韩在线观看视频 | 欧洲免费视频 | 99re视频在线观看 | 国产精品一区二区三区免费视频 | 国产在线观看91一区二区三区 | 青青久久久 | 一区二区免费 | 日日操天天爽 | 久久激情视频 | 日韩伦理一区二区 | 亚洲 欧美 日韩 丝袜 另类 | www..99re| 国产日韩精品久久 | 日韩一区二区在线观看视频 | av在线成人| 91精品久久久久久久久 | 成人免费大片黄在线播放 | 日韩视频免费在线播放 | 国产偷录视频叫床高潮对白 | 午夜精品福利一区二区三区蜜桃 | 成人午夜av | 中文字幕乱码一区二区三区 | 成人资源在线观看 | 日本久久久久久久久 | 伊人爽 | 一区二区久久 | 国产成人精品网站 | 精品欧美一区二区三区 | 成人免费av| 国产精品久久久久久久久免费桃花 | 欧美日韩精品一区二区三区在线观看 | 亚洲一区二区免费看 | 欧美一区久久 | 女朋友的闺蜜3韩国三级 | 99热日本 | 欧美高清一区 | www.国产| 国产成人一区二区三区 | jlzzjlzz国产精品久久 | 久久久网站 | 麻豆一区| 91aiai| 香蕉大人久久国产成人av | 国产精品久久久久久久久久免费 | 91精品亚洲 | 国产欧美日韩综合精品一区二区 | 国产成人99 | 国产成人涩涩涩视频在线观看 | 激情婷婷 | 国产一区二区三区四区在线观看 | 国产精品一区二 | 免费观看羞羞视频网站 | 亚洲中出 | 成人一区电影 | 亚洲一区视频网站 | 国产一区二区精品在线观看 | 黄色一级毛片免费 | 成人区一区二区三区 | 成人精品视频一区二区三区 | 国产一区国产二区在线观看 | 黄色直接看| 日韩精品视频在线观看一区二区 | 国产免费一区二区 | 四虎网址 | 成人在线网址 | 狠狠操电影 | 亚洲视频一区二区三区 | 久热免费在线观看 | 久久国内精品 | 日韩视频一区在线观看 | 国产美女视频网站 | 免费在线精品视频 | 日韩欧美网址 | 免费一看一级毛片 | 91精品国产福利在线观看 | 在线观看国产精品一区 | 国产精品成人国产乱一区 | 黄色毛片在线看 | 国产黄色大全 | 日本免费xxxx| 91精品在线播放 | 国产在线一区二区三区 | 国产片一区二区三区 | 一本色道精品久久一区二区三区 | 老司机深夜福利在线观看 | 国产一区二区三区av在线 | 国产美女视频网站 | 性视频网 | 亚洲小视频网站 | 狠狠亚洲| 国产精品毛片久久久久久久 | 久久手机在线视频 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产精品高清在线 | 日韩在线免费 | 久久国产一区 | 色婷婷久久一区二区三区麻豆 | 狠狠操狠狠干 | 久草新免费| 成人在线精品视频 | 欧美日韩午夜 | 我要看a级毛片 | 日本亚洲精品一区二区三区 | 欧美一区二区大片 | 欧美日韩在线播放 | 九色影院 | 日韩精品久久久 | 国产免费视频在线 | 国产精品视频一区二区三区 | 国产成人精品一区二区三区视频 | 国产精品精品久久久 | 亚洲第一成年免费网站 | 亚洲欧美一| 91夜夜操 | 狠狠操狠狠干 | 免费亚洲视频 | 欧美色视频在线观看 | 国产高清在线视频 | 麻豆成人在线 | 国产精品精品久久久 | 丁香五月网久久综合 | 91国内精品久久 | 影音先锋资源av | 国产精品a久久久久 | 91精品中文字幕一区二区三区 | 欧美一区二区大片 | 欧美国产精品一区二区 | 久久久影院 | 国内自拍视频网 | 99成人 | 国外爱爱视频 | 日韩视频免费 | 国产精品自产拍在线观看 | 午夜影皖| 欧美日韩亚洲二区 | 大香伊在人线免97 | 国产精品久久久久久 | 久久夜夜 | 欧美精品一区二区三区四区 | 久久久久久av | 色婷婷一区二区三区四区 | 国产一在线 | 国产在线乱 | 91精品电影 | 97色在线观看免费视频 | 精品国产成人 | 亚洲精品一区二区另类图片 | 超碰在线播 | 免费在线成人av | 久久精品久久久 | 欧美精品一区二区在线观看 | 午夜激情在线 | 国产三级精品在线 | 毛片视频播放 | 在线观看成人 | 97色综合| 精品一区二区三区免费 | 亚洲欧美国产精品久久 | 国产福利一区二区三区视频 | 日韩中文字幕在线观看 | 无码日韩精品一区二区免费 | 午夜午夜精品一区二区三区文 | 精品久久久久久久久久久久 | 激情欧美一区二区三区中文字幕 | 午夜精品久久久久久久久 | 黄色国产大片 | 狠狠躁日日躁夜夜躁东南亚 | 中文字幕在线第一页 | 在线观看你懂的网站 | 一区二区三区四区在线 | 自拍视频在线 | 日韩亚洲在线 | 国产精品毛片久久久久久久 | 久二影院| 91欧美激情一区二区三区成人 | 日韩欧美二区 | 久久亚洲精品视频 | 久久精品网 | 亚洲视频一区二区三区 | 伊人久久爱 | 国产视频中文字幕 | 曰本人一级毛片免费完整视频 | 一区二区三区精品视频免费看 | 自拍小电影 | 日日日日干干干干 | 精品网站999www | 精品视频一区二区三区 | 成年人在线观看 | 亚洲日本中文 | 91电影在线看 | 成人免费看 | 婷婷久久综合 | 91久久国产综合久久91精品网站 | 伊人免费视频二 | 国产精品九九九 | 精品视频在线观看 | 91麻豆精品国产91久久久资源速度 | 一区二区三区高清不卡 | 日韩在线成人 | 99动漫| 在线中文字幕av | 亚洲精品影院 | 在线观看欧美日韩 | 日韩在线不卡视频 | 黄色电影天堂 | 免费亚洲网站 | 91精品国产99久久久久久红楼 | 欧美精品区 | 在线h观看| 精品久久久久久 | 精品国产不卡一区二区三区 | 欧美一区二区免费在线 | 狠狠躁夜夜躁人人爽天天高潮 | 草草精品视频 | 午夜影院a | 久久99精品久久久久久 | 久久久精品国产 | 精品三区在线观看 | 久久久久久综合 | 成人国产精品久久久 | 日韩网站免费观看 | 9999亚洲| 午夜午夜精品一区二区三区文 | 综合网激情 | 中文字幕 亚洲一区 | 亚洲一区 国产 | 97久久精品午夜一区二区 | 夜夜爽99久久国产综合精品女不卡 | 国产精品久久久久aaaa九色 | 国产精品日产欧美久久久久 | 日韩综合 | 精品国产一区二区三区久久久蜜臀 | 91在线精品秘密一区二区 | 日韩精品一区二区三区免费观看视频 | 日日人人 | 成人超碰在线观看 | 久久精品国产免费 | 国产精品www | 国产激情精品一区二区三区 | 美女视频一区二区三区 | 91精品国产人妻国产毛片在线 | 日本色道视频 | 日韩精品一区二区三区在线 | 久久精品国产99国产精品 | 国产精品久久久久久久久久三级 | 午夜影院在线观看免费 | 成人国产精品免费观看 | 91看片淫黄大片一级在线观看 | 男女啪啪无遮挡 | 亚洲第一黄色 | 不卡中文一区 | 大桥未久亚洲精品久久久强制中出 | 日韩理伦片在线观看视频播放 | 亚洲精品二区 | 成年无码av片在线 | 91精品一区二区三区久久久久久 | 欧美lesbianxxxxhd视频社区 | 精品欧美一区二区三区久久久 | 婷婷久久五月天 | 国产主播一区 | 91网站在线看 | 成人在线免费 | 狠狠色综合久久丁香婷婷 | 亚洲一区中文字幕在线观看 | 国产视频第一页 | 91免费在线视频 | 欧美一性一交 | 国产精品91视频 | 欧美啪| 人人爱人人草 | 在线亚洲人成电影网站色www | 国产精品一区一区 | 亚洲综合网站 | 久久激情五月丁香伊人 | www.日韩在线观看 | 美国一级毛片a | 成人精品一区二区三区 | 国产精品国色综合久久 | 爱爱视频网站 | 国产精品久久九九 | 在线视频91 | 免费看a| 蜜桃一区二区 | 日韩精品一区二区三区在线观看 | www.一区二区三区 | 久久久久国产一区二区三区 | 女同理伦片在线观看禁男之园 | 欧洲精品在线观看 | 精品国产成人 | 亚洲男人av | 国产视频中文字幕 | 成人av网站在线观看 | 久久国产精品久久久久久 | 成人亚洲一区二区 | 91精品久久久久久久久中文字幕 | 欧美日本韩国一区二区三区 | 国产精品1区2区3区 欧美 中文字幕 | 国产一区二区三区在线免费观看 | 91精品国产自产精品男人的天堂 | 二区三区 | 日韩一区二区三区在线看 | www国产精品 | 秋霞a级毛片在线看 | 欧美日韩视频在线第一区 | 四虎最新入口 | 日本aa级毛片免费观看 | 狠狠综合久久av一区二区老牛 | 在线观看一区二区三区四区 | 日韩成人精品视频在线观看 | 亚洲自啪 | 亚洲网站在线观看 | 一区二区三区视频在线观看 | 久久亚洲网| 久久久久久av | 国产成人精品一区二区三区视频 | 精品国产一区二区三区在线观看 | 欧美在线视频不卡 | 男女做爰高清无遮挡免费视频 | 99久久免费观看 | 国产精品视频网站 | 欧美久久精品 | 亚洲精品美女久久久 | 91久久精品一区二区二区 | 成人网av| 国产成人一区二区三区 | 亚洲a人| 日韩国产高清在线 | 在线观看欧美一区二区三区 | 国产美女精品人人做人人爽 | 亚洲欧洲av在线 | 亚洲视频免费在线观看 | 国产成人视屏 | 国产一级免费视频 | 精品国产一区二区三区久久久蜜月 | 精品99在线 | 精品国产一区二区三区久久影院 | 自拍偷拍视频网 | 午夜影院操 | 青青草免费在线视频 | 欧美一区二区三区在线看 | 日韩成人在线视频 | 95香蕉视频 | 激情视频网站 | 99久久婷婷| 久在线 | 国产免费一区二区三区网站免费 | 视频久久精品 | 日韩av高清在线 | 欧美视频免费看 | 欧美视频免费在线 | 国产亚洲精品精品国产亚洲综合 | 欧美一区视频 | 天天干视频 | 色婷婷综合网 | 天天爱天天草 | 欧美久久一区二区三区 | 欧美一级毛片日韩一级 | 亚洲国产网站 | 国产日韩欧美一区二区 | 日韩福利 | 精品亚洲永久免费精品 | 在线色站 | 国产精品第一国产精品 | 国产精品s色 | 亚洲一区国产视频 | 色在线看 | 免费日本视频 | 乱轮一区| 欧美一区二区在线视频 | 亚洲国产精品99久久久久久久久 | 国产在线不卡 | 一区二区在线 | 国产精品久久久久久久久久久久冷 | 亚洲精品久久久久久久久久 | 久久国产经典视频 | 日韩中文字幕在线播放 | 精品国产91久久 | 精品国产乱码一区二区三 |