亚洲成人一区在线观看_天堂网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/的會員


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 成人免费精品视频 | 日韩一二三区在线观看 | 日韩一区二区在线观看 | 欧美大成色www永久网站婷 | 国产高清精品一区二区三区 | 女人夜夜春高潮爽av片 | 激情毛片| 精品久久久久久久 | 午夜免费视频网站 | 在线看av的网址 | 狠狠色综合久久丁香婷婷 | 99日韩| 国产精品久久久久久中文字 | 中文字幕一二三区 | 久久精品久久久 | 国产成人61精品免费看片 | 亚洲成人av片 | 成人免费在线观看 | 亚洲精品乱码久久久久久蜜桃图片 | 亚洲色图偷拍视频 | 精品久久久久国产 | 欧美天天| 天天操天天拍 | 成人精品鲁一区一区二区 | 欧洲精品在线观看 | 中文字幕99 | 九九热精品视频 | 羞羞视频免费观看入口 | 久久久一区二区 | 看亚洲a级一级毛片 | 国产一区二区三区在线免费观看 | 日韩成人tv | 夜夜骑av| 午夜四虎 | 在线免费黄色小视频 | 成人不卡视频 | 欧美,日韩,国产精品免费观看 | 国产精品国产a级 | 中文字幕在线免费看 | 久久久麻豆 | 国产2区| 欧美激情精品 | 亚洲成人久久久 | 久久久国产一区 | 国产三级日本三级美三级 | 日韩av一区二区三区四区 | 欧美一级免费大片 | 欧美在线亚洲 | 97精品在线| 亚洲欧洲av在线 | 亚洲视频 欧美视频 | 成人av播放| 乱人伦xxxx国语对白 | 国产高清一区二区三区 | 亚洲午夜精品一区二区三区他趣 | 天天看天天操 | 成人二区| 日韩免费| 91精品国产91久久久久久吃药 | 在线观看精品自拍私拍 | 一区视频网站 | 午夜精品久久久久久久男人的天堂 | 久久精品久久久久电影 | 久久国产精品久久精品 | 亚洲精品电影在线观看 | 欧美成人精品在线观看 | 国产特级毛片aaaaaa毛片 | 精品成人av| 一区二区中文字幕 | 精品国产精品国产偷麻豆 | 久久亚洲国产精品 | 午夜精品一区二区三区在线播放 | 毛片网站在线观看 | 日韩一区二区三区在线播放 | 四虎5151久久欧美毛片 | 91视频免费在线 | 亚洲视频在线观看免费 | 日韩精品一区在线 | 国产中文字幕在线 | 欧美国产精品一区 | 久久综合九色综合欧美狠狠 | 成人在线视频免费观看 | 日韩视频国产 | 久久久久久成人 | 伊人免费在线观看高清版 | 日韩在线观看 | 亚洲成人网一区 | 亚洲区在线| 亚洲视频欧美视频 | 国产精品九九九 | 久久久精品免费观看 | 国产精久久久久 | 免费国产视频 | 国产精品久久久久久福利一牛影视 | 韩国av片在线观看 | 自拍偷拍在线视频 | 精品日韩一区二区三区 | 欧美一区免费 | 中文字幕综合在线 | 亚洲一区国产视频 | 日本精品视频在线播放 | 免费二区| 色婷婷一区二区三区 | 91精品国产乱码久久久久久久久 | 国产在线一区二区 | 国产精品无码专区在线观看 | 狠狠中文字幕 | 精品亚洲一区二区 | 一区二区三区高清不卡 | 国产午夜精品一区二区三区 | 国产一区二区三区久久久久久久久 | 黄色的视频免费 | 黄色片免费 | 日韩视频一区在线观看 | 级毛片| 国产欧美精品一区aⅴ影院 毛片视频网站 | 国产精品中文字幕在线播放 | 青青草国产成人av片免费 | 久久精品| 欧美久久久久久久久久久久久久 | 日日摸日日碰夜夜爽不卡dvd | 欧美在线亚洲 | 亚洲一区在线视频 | 亚洲欧美激情精品一区二区 | 日本在线播放 | 国产偷国产偷精品高清尤物 | 免费看的毛片 | 亚洲大尺度视频 | 午夜大片在线观看 | 国产一二区在线观看 | 国产欧美综合一区 | 天堂一区 | 一区二区不卡 | 日本高清视频在线播放 | 日韩视频一区二区三区 | 在线免费观看黄 | 国产精品精品视频一区二区三区 | 人人干人人干人人干 | 成人av在线播放 | 欧美美女爱爱视频 | 久久99亚洲精品 | 国产精品一码二码三码在线 | 久久国产精品精品国产 | 国产成人精品亚洲日本在线观看 | 成人免费福利视频 | 91久久综合亚洲鲁鲁五月天 | 国产九九精品 | 国产日韩精品一区二区 | 亚洲香蕉精品 | 在线观看国产www | www.久久.com| 久久久久久久久综合 | 国产香蕉视频在线播放 | jizz在线播放 | 国产视频综合 | 国产一区二区精品 | 日本一区二区成人 | 91社区福利| 在线观看亚洲大片短视频 | 国产三区在线视频 | 成年人综合网 | 国产亚洲欧美一区 | www伊人| 国产午夜精品一区二区三区嫩草 | 日韩午夜在线 | 欧美性猛交一区二区三区精品 | 国产精品久久久久久久久久久杏吧 | 久日精品| av一区二区三区四区 | 成人免费在线电影 | 国产精品久久国产精品99 gif | 欧美一级在线 | 在线不卡a资源高清 | 在线观看免费视频91 | 国产一级视频在线观看 | 亚洲天堂成人在线 | 97国产精品视频人人做人人爱 | 国产视频三区 | 欧美成年视频 | 国产乱码精品1区2区3区 | 久久久久久91亚洲精品中文字幕 | 免费一区二区 | 在线激情视频 | 国产黄色av | 亚洲一区中文字幕在线观看 | 亚洲成人网一区 | 天天干天天操天天干 | 日本视频二区 | 欧美日一区二区 | 欧美第一页 | 一本一本久久a久久精品综合妖精 | 亚欧洲精品视频在线观看 | 亚洲视频观看 | 麻豆专区一区二区三区四区五区 | 日韩电影免费在线观看中文字幕 | 91日韩精品一区二区三区 | 亚洲aaa在线观看 | 男女视频免费 | 国产欧美一区二区三区国产幕精品 | 成人在线免费av | 91成人黄色 | 亚洲视频1区 | 亚洲精品久久久 | 久久精品国产99国产 | 伊人电院网 | 亚洲国产高清在线 | 中文字幕在线免费视频 | 一区二区在线视频 | 4h影视| 国产一区中文字幕 | 久久视频国产 | 国产女人爽到高潮免费视频 | 亚洲精品9999 | 激情久久av一区av二区av三区 | 一级毛片免费观看 | 在线小视频 | 中文字幕在线观看网站 | 91精品中文字幕一区二区三区 | 一级毛片在线播放 | 久久草在线视频 | 华丽的挑战在线观看 | 欧美精品网站 | 国产99久久 | 国产高清在线精品 | 国产欧美一区二区精品性色 | 日日骚| 精品久久久久一区二区国产 | 国产91视频一区二区 | 欧美一区久久 | 天堂成人国产精品一区 | av2014天堂网 | 精品一区二区不卡 | 欧美日韩一区二区三区四区 | 国产一级特黄aaa大片评分 | 日韩一级免费在线观看 | 国产在线视频网站 | 国产精品一区二区不卡 | 日本不卡免费新一二三区 | 麻豆色呦呦 | 视色视频在线观看 | 操操操操操操操操操操操操操操 | 91九色在线 | 最新国产在线视频 | 欧美一级二级三级视频 | 国产免费一区二区 | 久久99国产精品 | www.99热.com | 中文在线一区二区 | 精品国产18久久久久久二百 | 天堂资源在线 | 午夜视频福利 | 亚洲香蕉视频 | 欧美一级片在线观看 | 久久久国产精品入口麻豆 | 99日韩 | 久久久久久国产视频 | 超碰高清 | 日本在线免费观看 | 激情综合在线 | 成人福利视频网 | 欧美日韩视频网站 | 夜夜操操 | 在线 亚洲 欧美 | 中文字幕在线观看精品视频 | 国产精品久久久久久久久小说 | 一道本一二三区 | 夜夜操com | 免费一区二区三区视频在线 | 性欧美大战久久久久久久免费观看 | 毛片在线网站 | 日韩免费一区 | 99视频只有精品 | 性高湖久久久久久久久aaaaa | 午夜精品一区二区三区在线 | 91精品国产乱码久久久久久久久 | 久久久精品一区 | 99草草| 亚洲每日更新 | 91成人区 | av超碰| 国产69精品99久久久久久宅男 | 成人亚洲 | 国产福利电影一区 | 国内自拍偷拍视频 | 日韩精品专区在线影院重磅 | 欧美福利在线观看 | 国产特一级黄色片 | 亚洲成人精品 | 在线免费国产 | 欧美一级免费看 | 日韩中文字幕免费观看 | 97色婷婷成人综合在线观看 | 青青草免费在线 | av日韩一区| 欧美日免费 | 久久久国产精品视频 | 91精品久久久久久久91蜜桃 | 国产女人爽到高潮免费视频 | 成人高清视频免费观看 | 黄a免费看 | 亚洲国产精品福利 | 亚洲欧美高清 | 国产区91| 亚洲一区二区三区四区的 | 天天干狠狠干 | 久久久久久久国产精品视频 | 爱干视频 | 毛片站| 亚洲电影免费 | 亚洲成人av | 免费成人av网 | 国产一级毛片电影 | 日韩精品视频在线播放 | 成人 在线| 日本视频免费高清一本18 | 97在线视频免费 | 蜜桃中文字幕 | 国产日韩欧美 | 欧美成视频 | 在线播放亚洲 | 国产一级免费视频 | 国产精品无码久久久久 | 中文字幕 国产精品 | jvid美女成人福利视频 | 亚洲精品一区二区三区麻豆 | 高清国产视频 | 日韩中文在线 | 久久九九视频 | 欧美国产视频一区 | 蜜月久综合久久综合国产 | 爱爱视频免费 | 中文字幕在线观看av | 另类中文字幕 | 国产99一区 | 成人免费视频网站在线观看 | 欧美日韩福利 | 蜜桃视频一区 | 日韩综合网 | 一级片免费视频 | a级黄色毛片免费观看 | a网站在线观看 | av成人在线观看 | 精品日韩一区二区三区 | 九九热热九九 | 99国内精品久久久久久久 | 日本二区| 毛片免费视频 | 中文字幕99 | 亚洲视频二区 | 日本五月婷婷 | 中文字幕在线视频一区 | 国产一区在线视频 | 亚洲精品美女久久久 | 国产成人精品免高潮在线观看 | 精品综合久久 | 一级黄色爱爱视频 | 亚洲综人网 | 日韩在线视频观看 | 人人看人人射 | 九九久久精品 | 精品国产乱码久久久久久影片 | 黄色精品一区二区 | 在线亚洲一区二区 | 亚洲一区二区在线免费观看 | 日韩精品在线网站 | 亚洲成人观看 | 亚洲高清在线 | 国产午夜精品美女视频明星a级 | 精品久久久久久久久久久久久久久久久久 | 欧美福利一区二区三区 | 日本在线免费 | 神马午夜 | 蜜臀网| 情趣视频在线免费观看 | 狠狠草视频| 亚欧毛片| 久久久久久国产精品久久 | 国产一区二区免费视频 | 高清国产视频 | 久久久a | 午夜视频一区 | 国产精品久久久久久久一区探花 | 日韩欧美视频一区 | 亚洲国产一区二区三区, | 亚洲免费国产视频 | 成人免费视频观看视频 | 色偷偷888欧美精品久久久 | 日韩免费在线 | 久久精品欧美一区二区三区不卡 | 精品国产精品三级精品av网址 | 91精品国产91久久久久久吃药 | 国产精品久久视频 | 亚洲成人第一 | 久久在线| 日本a v在线播放 | 国产精品日韩一区二区 | 欧美在线三级 | 91精品在线播放 | 亚州av在线 | 国产视频中文字幕 | 日本在线观看视频一区 | 欧美在线网站 | 99av| 四虎影院最新网站 | 午夜影院a| 欧美成人一区二区三区 | 亚洲一区二区在线 | 一级黄色片a级 | 狠狠狠干 | 亚洲精品第一区在线观看 | 亚洲网站在线观看 | 一级毛片观看 | 日韩欧美国产成人一区二区 | 亚洲精品一区二区三区中文字幕 | 欧美成人专区 | 美女视频黄色免费 | 黄色一级片在线看 | 91成人区| 午夜成人免费影院 | 成人午夜精品一区二区三区 | 青青草久 | 国产精品无码永久免费888 | 国产一极片 | 91视频网| 国产在线观看一区 | 日一区二区 | 极品久久 | 国产精品亚洲一区二区三区 | 欧美在线观看视频 | 天天干天天曰天天操 | 日韩毛片 | 国产99精品 | 久久99精品久久久水蜜桃 | 成人av在线网| 91伊人| 久久精品久久综合 | 免费不卡视频 | 久久久精品一区二区三区 | 成人免费毛片aaaaaa片 | 国产福利视频 | 精品久久一区二区三区 | 影音先锋亚洲精品 | 精品 99 | 欧美一级片在线观看 | 亚洲 欧美 精品 | 99re99| 久久久久久九九九 | 亚洲福利二区 | 免费观看一级特黄欧美大片 | 亚洲一区二区视频在线观看 | 精品久久久久久一区二区 | 精品久久久精品 | 天天插天天操天天干 | 亚洲欧美日韩在线一区 | 久久一区 | 91精品日韩| 欧美 | 免费一区二区三区视频在线 | 中文字幕高清视频 | 一区二区免费在线 | 91精品一区二区 | 羞羞视频免费观看入口 | 日韩欧美在线观看视频 | 美女久久 | 国产偷国产偷精品高清尤物 | 天天干天天干天天干天天射 | 欧美一区二区在线观看 | 国产成人精品免高潮在线观看 | 亚洲欧洲免费视频 | 国产精品高潮呻吟久久av野狼 | 国产精品日韩欧美一区二区三区 | 国产精品自拍一区 | 欧美一区二区三 | 韩日精品一区 | 日韩欧美在线一区二区 | 久久一二三四 | 激情综合网五月婷婷 | 伊人激情网 | 日韩一区在线播放 | 老司机深夜福利在线观看 | 亚洲精品久久久久国产 | 中文字幕在线免费 | 91精品国产综合久久久久久丝袜 | 欧美aaa视频 | 亚州成人 | 亚洲国产高清高潮精品美女 | 9色porny自拍视频一区二区 | aa级毛片毛片免费观看久 | 亚洲一区二区在线 | 后人极品翘臀美女在线播放 | 亚洲色图综合 | 本道综合精品 | 中文字幕一区二区三区四区 | 日操视频| 午夜国产在线 | 亚洲欧洲综合 | 在线一区二区三区 | 免费国产一区二区 | 精品一区二区视频 | 自拍偷拍第一页 | 国产精品1区2区3区 国产在线观看一区 | 欧美日韩亚洲国产综合 | 久久成人精品 | 日韩精品一区二区三区在线观看 | 亚洲欧美另类久久久精品2019 | 亚洲国产精品va在线看黑人 | 欧美精品一区二区在线观看 | 亚洲第一av| 91视频日韩 | 91精品国产综合久久婷婷香蕉 | 日韩福利在线观看 | 亚洲伊人精品酒店 | 日韩精品视频在线观看一区二区 | 国产精品网站在线观看 | 超碰人人插| 午夜精品久久久久久久男人的天堂 | 精品一区二区三区蜜桃 | 男女视频在线观看 | 国产精品一区二区三区在线 | 凹凸日日摸日日碰夜夜 | 国产亚洲一区二区三区在线观看 | 日韩精品在线一区 | 一区二区视频免费 | 久久99er6热线精品首页蜜臀 | 91社区在线播放 | 一级免费黄色免费片 | 欧美福利二区 | 91九色麻豆 | 亚洲精品亚洲人成人网 | 久久久久久免费精品 | 久久久久久免费 | 中文二区| 精品久久一区二区 | 久久精品久久综合 | 亚洲视频一区在线播放 | 色伊人网 | 日本国产欧美 | 99免费看| 久久一级 | 欧美成人激情视频 | 亚州视频在线 | av影片在线播放 | 在线免费色视频 | 国产精品久久久久久久久小说 | 国产精品女同一区二区久久夜 | 91亚洲一区 | 天天综合永久入口 | 欧美一区二区三 | 国产成人福利视频 | 国产中文字幕在线 | 国产精品99久久久久久久vr | 久久久久久综合 | 亚洲一级在线观看 | 久久最新 | 国产欧美一区二区精品性色 | 免费成人在线网站 | 天天操天天干天天 | 久久久久久综合 | 色综久久| 成人午夜毛片 | 日韩一区二区三区av | 黄色在线视频网 | 国产精品一区二区三区免费 | 综合久久精品 | 一级免费视频 | 国产日韩欧美一二三区 | 国产成人高清精品免费5388 | 久久之精品 | 中文字幕一区二区三区四区 | 欧美国产日韩一区 | 夜操| 91精品国产综合久久久久久丝袜 | 美女超碰| 欧美精品一区二区三区中文字幕 | 国产视频第一区 | 国产激情精品一区二区三区 | 免费的日批视频 | 免费的一级毛片 | 久久se精品一区精品二区 | 天天舔夜夜 | 国产精品久久久久久久一区探花 | 亚洲色图第八页 | 精品一区二区三区久久 | 91欧美在线 | 日韩中文一区二区三区 | 99久久久精品 | 亚洲人在线观看视频 | 亚洲高清在线 | 国产超碰在线观看 | 亚洲成人一区二区 | 亚洲 欧美 精品 | 色婷婷国产精品综合在线观看 | av久久| av天天干 | www.亚洲精品| 日韩在线你懂的 | 欧美在线综合 | av免费在线观看网址 | 色欧美片视频在线观看 | 操操操操操操操 | 国产在线视频一区二区 | 国产麻豆乱码精品一区二区三区 | 亚洲精品久久久一区二区三区 | 亚洲第一免费视频网站 | 爱爱精品| 国产亚洲视频在线 | 婷婷国产成人精品视频 | 久久综合久久综合久久综合 | 国产精品久久久久毛片软件 | 久久国产一区二区 | 国产一二区在线 | 日韩国产欧美视频 | 高清视频一区 | 成人免费视屏 | 国产成人免费视频网站高清观看视频 |