• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Thunk技術(shù)原理及其在Windows系統(tǒng)窗口類封裝中的應(yīng)用

    2018-06-02 08:50:48尹德有楊振龍
    電腦知識與技術(shù) 2018年10期

    尹德有 楊振龍

    摘要:該文主要介紹了Thunk技術(shù)的基本原理,以及如何利用Thunk技術(shù)封裝基于C++語言的Windows窗口類。該文還介紹了如何利用ATL中已有的Thunk代碼實現(xiàn)窗口類的封裝以簡化代碼的編寫工作。利用本文介紹的技術(shù)封裝窗口類可極大的精簡代碼規(guī)模,同時代碼的運行效率也較高。

    關(guān)鍵詞:Thunk;C++;Windows;窗口類;ATL;形實轉(zhuǎn)換

    中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)10-0248-03

    一直以來,使用C++語言封裝Windows窗口類都是一個比較繁瑣的工作。大多數(shù)軟件開發(fā)人員都是使用第三方類庫進行Windows窗口類的編寫,比如最常使用的就是Microsoft公司的MFC類庫以及ATL模板庫等。這些類庫雖然功能強大,但是它們都過于龐大、復(fù)雜,如何使用簡單的技術(shù)實現(xiàn)輕量級的Windows窗口類(以下簡稱窗口類)是廣大軟件開發(fā)人員一直在探討的問題。

    封裝窗口類的難點是如何讓W(xué)indows窗口處理回調(diào)機制在消息發(fā)生時調(diào)用窗口類的非靜態(tài)成員函數(shù)。

    我們知道,C++在調(diào)用非靜態(tài)成員函數(shù)時需要傳遞this指針,由于Windows系統(tǒng)只能調(diào)用靜態(tài)的回調(diào)函數(shù),而類的靜態(tài)成員函數(shù)是沒有this指針的,因此,如何將this指針傳遞給類的靜態(tài)成員函數(shù)(窗口處理回調(diào)函數(shù))就成為封裝窗口類的關(guān)鍵技術(shù)。到目前為止,向類的靜態(tài)成員函數(shù)傳遞this指針的方法主要有三種:靜態(tài)表查詢方式,修改窗口用戶數(shù)據(jù)(USERDATA)方式,Thunk方式。其中Thunk方式是最直接、最高效的方式,本文主要討論Thunk方式。

    1 基本原理

    Thunk在程序設(shè)計領(lǐng)域被稱為形實轉(zhuǎn)換程序,其基本思想就是將若干連續(xù)存儲的數(shù)據(jù)直接解釋成代碼讓CPU執(zhí)行,本質(zhì)上相當(dāng)于直接使用機器語言編程。

    利用Thunk技術(shù)封裝窗口類的基本思路是:將一段精心設(shè)計的數(shù)據(jù)(實際是一些機器指令,以下將這段數(shù)據(jù)簡稱為Thunk數(shù)據(jù))解釋成Windows窗口處理函數(shù),同時將this指針存儲在這些數(shù)據(jù)中,從而達到傳遞this指針的目的。

    2 關(guān)鍵技術(shù)

    雖然理論上可以在Thunk數(shù)據(jù)中使用機器代碼完成對類的非靜態(tài)成員函數(shù)的調(diào)用,但是這需要完全模擬C++對類的非靜態(tài)成員函數(shù)的調(diào)用機制,而這種機制是比較復(fù)雜的,并且可能會在將來有所改變。為了盡量縮短Thunk數(shù)據(jù)代碼的長度,一種更好的方式是在Thunk數(shù)據(jù)代碼中調(diào)用另一個靜態(tài)的窗口處理函數(shù)(以下簡稱中轉(zhuǎn)處理函數(shù)),同時采用一種技術(shù)將this指針傳遞給該中轉(zhuǎn)處理函數(shù)。

    向中轉(zhuǎn)處理函數(shù)傳遞this指針的方式基本上有兩種:

    1) 在標(biāo)準(zhǔn)Windows窗口處理函數(shù)的參數(shù)列表中增加一個參數(shù)并將this指針傳遞給這個參數(shù),即使用非標(biāo)準(zhǔn)形式的窗口處理函數(shù),但這種形式會增加Thunk數(shù)據(jù)代碼的復(fù)雜度;

    2) 使用標(biāo)準(zhǔn)形式的窗口處理函數(shù)并將其參數(shù)列表中的某個參數(shù)修改為this指針值,這種方式將最大程度的降低Thunk數(shù)據(jù)代碼的復(fù)雜度,因此采用這種方式較好。

    Windows窗口處理函數(shù)的標(biāo)準(zhǔn)形式如下:

    代碼 1 WindowProc

    其參數(shù)列表中一共有4個參數(shù),除hwnd參數(shù)以外的其他3個參數(shù)都有其特定用途,唯有hwnd,它代表目標(biāo)窗口句柄,而這個句柄完全可以預(yù)先保存在類(對象)中然后通過this指針訪問它,因此可以在Thunk數(shù)據(jù)代碼調(diào)用中轉(zhuǎn)處理函數(shù)之前將hwnd參數(shù)用this指針值替換掉,從而達到傳遞this指針的目的。

    在中轉(zhuǎn)處理函數(shù)中,通過強制類型轉(zhuǎn)換,將hwnd參數(shù)硬性解釋成this指針,并通過該this指針調(diào)用類的非靜態(tài)窗口處理成員函數(shù),從而達到了讓W(xué)indows窗口處理回調(diào)機制調(diào)用窗口類非靜態(tài)成員函數(shù)的目的,至此就完成了窗口類的封裝。

    3 實現(xiàn)細(xì)節(jié)

    使用Thunk技術(shù)封裝窗口類的大體實現(xiàn)細(xì)節(jié)如下:

    在窗口類中定義一個THUNK結(jié)構(gòu)類型的成員變量_thunk及初始化該結(jié)構(gòu)的成員函數(shù)InitThunk();

    THUNK結(jié)構(gòu)實際是一段經(jīng)過仔細(xì)設(shè)計的機器代碼,當(dāng)將THUNK變量地址當(dāng)成函數(shù)地址來解釋并調(diào)用它時,將執(zhí)行這段代碼,在本例中就是要將其解釋成WNDPROC類型的指針,即Windows的窗口處理回調(diào)函數(shù),這樣在回調(diào)發(fā)生時THUNK代碼將被執(zhí)行。

    在窗口類中提供一個attach(HWND h)函數(shù),其將修改目標(biāo)窗口h的窗口處理函數(shù)地址,使其指向this->_thunk,在執(zhí)行這條語句之前應(yīng)先調(diào)用InitThunk()初始化_thunk成員,使其中保存this指針值,也就是說,每個窗口類對象中都會有一個含有對象地址信息(即this)的成員變量(即_thunk)。

    THUNK結(jié)構(gòu)中的其他代碼完成如下工作:將Windows調(diào)用THUNK數(shù)據(jù)代碼時傳遞過來的4個參數(shù)hwnd,uMsg,wParam,lParam中的hwnd替換成this指針值,然后調(diào)用中轉(zhuǎn)處理函數(shù)。由于Windows調(diào)用THUNK代碼時已經(jīng)將函數(shù)參數(shù)正確的入棧且中轉(zhuǎn)處理函數(shù)的調(diào)用方式及參數(shù)格式與標(biāo)準(zhǔn)Windows窗口處理函數(shù)相同,因此,調(diào)用中轉(zhuǎn)處理函數(shù)的代碼可簡單地使用一條跳轉(zhuǎn)指令直接跳轉(zhuǎn)到中轉(zhuǎn)處理函數(shù)的地址即可。需要注意的是,如果采用前面介紹的非標(biāo)準(zhǔn)形式的窗口處理函數(shù)來傳遞this指針,則需要增加修改堆棧指針、將this指針入棧等額外的操作,這無疑會增加THUNK數(shù)據(jù)代碼的復(fù)雜性。

    在窗口類中定義一個靜態(tài)的窗口處理函數(shù)stdProc()充當(dāng)中轉(zhuǎn)處理函數(shù)。在stdProc()中,通過強制類型轉(zhuǎn)換,將hwnd參數(shù)強制轉(zhuǎn)換為this指針并通過該this指針調(diào)用窗口類的非靜態(tài)窗口處理成員函數(shù),這樣就實現(xiàn)了讓W(xué)indows窗口處理回調(diào)函數(shù)調(diào)用窗口類非靜態(tài)成員函數(shù)的過程。

    通過上述方法封裝的窗口類,其每一個窗口對象都有不同的窗口處理函數(shù)地址,它指向this->_thunk成員變量。

    使用用THUNK技術(shù)封裝窗口類的本質(zhì)是:用窗口類的數(shù)據(jù)成員而不是函數(shù)成員“冒充”窗口處理函數(shù),從而攔截到窗口消息。

    4 借用ATL中的Thunk代碼

    實現(xiàn)Thunk技術(shù)的關(guān)鍵是給出Thunk數(shù)據(jù)的對應(yīng)機器代碼。雖然可以通過查詢文檔等方式獲得相應(yīng)機器代碼,但還有更簡便的方式:利用ATL模板庫中的Thunk代碼。

    ATL[3]是Microsoft公司繼MFC后推出的用于編寫COM組件的模板庫,它提供了很多模板類以方便COM組件的編寫,其中就包含對Windows窗口類的封裝。ATL封裝窗口類的方法中使用的就是Thunk技術(shù)。

    ATL提供了4個與Thunk有關(guān)的類:_stdcallthunk,CDynamicStdCallThunk,CStdCallThunk,CWndProcThunk,其中前3個類位于頭文件中,最后一個位于頭文件中。

    _stdcallthunk是ATL Thunk的基本實現(xiàn),它包含了全部Thunk數(shù)據(jù)代碼,其定義如下:

    #pragma pack(push,1)

    struct _stdcallthunk{

    DWORD m_mov; // mov dword ptr [esp+0x4], pThis (esp+0x4 is hWnd)

    DWORD m_this; //

    BYTE m_jmp; // jmp WndProc

    DWORD m_relproc; // relative jmp

    BOOL Init(DWORD_PTR proc, void* pThis){

    m_mov = 0x042444C7; //C7 44 24 0C

    m_this = PtrToUlong(pThis);

    m_jmp = 0xe9;

    m_relproc = DWORD((INT_PTR)proc - ((INT_PTR)this+sizeof(_stdcallthunk)));

    // write block from data cache and

    // flush from instruction cache

    FlushInstructionCache(GetCurrentProcess(), this, sizeof(_stdcallthunk));

    return TRUE;

    }

    //some thunks will dynamically allocate the memory for the code

    void* GetCodeAddress(){ return this; }

    void* operator new(size_t){ return __AllocStdCallThunk(); }

    void operator delete(void* pThunk){ __FreeStdCallThunk(pThunk); }

    };

    #pragma pack(pop)

    代碼 2 _stdcallthunk

    _stdcallthunk中含有機器指令,因此是硬件相關(guān)的,上述是在x86平臺下的定義,ATL還提供了幾個在其他平臺下的_stdcallthunk定義,有興趣的讀者可以查閱相關(guān)代碼。限于篇幅,本文不對_stdcallthunk的機器代碼做過多解釋,因為那并不十分重要,在此只給出_stdcallthunk的使用方式:首先調(diào)用Init(DWORD_PTR proc, void* pThis)函數(shù)初始化該結(jié)構(gòu),其中傳給proc參數(shù)的值就是窗口類中定義的靜態(tài)中轉(zhuǎn)處理函數(shù)地址,傳給pThis參數(shù)的值就是窗口類對象的this指針值。初始化成功后,就可以調(diào)用GetCodeAddress()函數(shù)獲取窗口處理函數(shù)的地址(正如代碼中給出的那樣,它其實就是_stdcallthunk結(jié)構(gòu)的地址)并將目標(biāo)窗口的窗口處理函數(shù)地址修改為GetCodeAddress()的返回值。

    CDynamicStdCallThunk是_stdcallthunk的動態(tài)分配版本,就像_stdcallthunk定義中的注釋說的那樣:某些平臺下,可執(zhí)行代碼所在的內(nèi)存必須使用動態(tài)分配方式獲取,即代碼必須位于堆中而不能位于棧中,x86平臺下的Windows系統(tǒng)中即是如此,因此,我們不能直接使用_stdcallthunk結(jié)構(gòu)。CDynamicStdCallThunk的定義如下:

    #pragma pack(push,8)

    class CDynamicStdCallThunk

    {

    public:

    _stdcallthunk *pThunk;

    CDynamicStdCallThunk(){ pThunk = NULL; }

    ~CDynamicStdCallThunk(){

    if (pThunk){

    delete pThunk;

    }

    }

    BOOL Init(DWORD_PTR proc, void *pThis){

    if (pThunk == NULL){

    pThunk = new _stdcallthunk;

    if (pThunk == NULL){

    return FALSE;

    }

    }

    return pThunk->Init(proc, pThis);

    }

    void* GetCodeAddress(){ return pThunk->GetCodeAddress(); }

    };

    #pragma pack(pop)

    代碼 3 CDynamicStdCallThunk

    CDynamicStdCallThunk的使用方式與stdcallthunk類似,在此不做贅述。

    CStdCallThunk根據(jù)平臺的不同,可能是對CDynamicStdCallThunk的包裝,也可能是對_stdcallthunk的包裝:

    typedef CDynamicStdCallThunk CStdCallThunk;

    typedef _stdcallthunk CStdCallThunk;

    代碼 4 CStdCallThunk

    CWndProcThunk是ATL窗口類中實際使用的結(jié)構(gòu)(類),它除了對CStdCallThunk的成員函數(shù)簽名進行了類型上的限定外,還定義了一個_AtlCreateWndData數(shù)據(jù)成員,這個成員在本文編寫的窗口類中用不到,CWndProcThunk的定義如下:

    class CWndProcThunk

    {

    public:

    _AtlCreateWndData cd;

    CStdCallThunk thunk;

    BOOL Init(WNDPROC proc, void* pThis){ return thunk.Init((DWORD_PTR)proc, pThis); }

    WNDPROC GetWNDPROC(){ return (WNDPROC)thunk.GetCodeAddress(); }

    };

    代碼 5 CWndProcThunk

    可以借用ATL提供的4個Thunk結(jié)構(gòu)中的任意一個來編寫我們的窗口類,但很明顯,使用CWndProcThunk無論在兼容性方面還是在可維護性方面都是最好的,因此,本文使用CWndProcThunk結(jié)構(gòu)封裝窗口類。

    這里需要說明一下,ATL已經(jīng)提供了一個封裝好的窗口類CWindowImpl,之所以借用ATL的Thunk結(jié)構(gòu)來封裝一個新的窗口類而不是直接使用ATL的窗口類是因為:ATL的窗口類額外引入了一些我們不需要的成員,并且其窗口類的行為未必完全滿足某些特定需要,又或者對于某些要求精簡化的程序來說,CWindowImpl過于復(fù)雜了。

    5 結(jié)論

    采用Thunk技術(shù)封裝的窗口類無論在代碼規(guī)模還是執(zhí)行效率上都有很大優(yōu)勢,借用ATL的Thunk結(jié)構(gòu)又可以進一步簡化代碼編寫工作,同時代碼的兼容性和可維護性也得到了很大的提高。

    參考文獻:

    [1] Stanley B.Lippman,Josee Lajoie. C++ Primer[M].潘愛民,張麗,譯.北京:中國電力出版社,2004.

    [2] Charles Petzold. Windows程序設(shè)計[M].方敏,張勝,梁路平,譯.北京:清華大學(xué)出版社,2010.

    [3] BRENT RECTOR,CHRIS SELLS.深入解析ATL[M].潘愛民,新語,譯.北京:中國電力出版社,2001.

    观看美女的网站| 免费不卡的大黄色大毛片视频在线观看| 51国产日韩欧美| 搡老乐熟女国产| av.在线天堂| 少妇精品久久久久久久| 日本av手机在线免费观看| 亚洲精品久久久久久婷婷小说| 久久青草综合色| 亚洲伊人久久精品综合| 美女脱内裤让男人舔精品视频| 久久精品国产亚洲网站| 美女国产视频在线观看| 色网站视频免费| 亚洲图色成人| 国产精品久久久久久精品电影小说| 久久久国产一区二区| 欧美日韩视频精品一区| 看免费成人av毛片| 亚洲丝袜综合中文字幕| 久久久久精品性色| 国产精品女同一区二区软件| 3wmmmm亚洲av在线观看| 伦精品一区二区三区| 久久精品熟女亚洲av麻豆精品| 在线亚洲精品国产二区图片欧美 | 最近2019中文字幕mv第一页| 天天躁夜夜躁狠狠久久av| 91精品国产九色| 亚洲精品av麻豆狂野| 日韩制服骚丝袜av| 亚洲欧美精品自产自拍| 一区二区日韩欧美中文字幕 | 国产一区亚洲一区在线观看| 中文天堂在线官网| 国产探花极品一区二区| av在线老鸭窝| 天堂俺去俺来也www色官网| 卡戴珊不雅视频在线播放| 亚洲国产av新网站| 国产成人精品久久久久久| 国产免费现黄频在线看| 精品人妻熟女毛片av久久网站| 中文字幕免费在线视频6| 97精品久久久久久久久久精品| 精品国产国语对白av| 又粗又硬又长又爽又黄的视频| 日韩精品有码人妻一区| 久久99一区二区三区| 亚洲在久久综合| 97在线人人人人妻| 亚洲av免费高清在线观看| xxx大片免费视频| 哪个播放器可以免费观看大片| 色网站视频免费| av视频免费观看在线观看| 精品人妻在线不人妻| 日本黄色片子视频| 久久久久久久久久久丰满| 插阴视频在线观看视频| 一边亲一边摸免费视频| 最新中文字幕久久久久| 国产精品成人在线| 国产精品成人在线| 两个人免费观看高清视频| 成年av动漫网址| 国产 精品1| 男女国产视频网站| 日本wwww免费看| 国产午夜精品久久久久久一区二区三区| 寂寞人妻少妇视频99o| 在线观看人妻少妇| 中文字幕免费在线视频6| 女的被弄到高潮叫床怎么办| 亚洲国产欧美日韩在线播放| 51国产日韩欧美| av国产精品久久久久影院| 91久久精品国产一区二区三区| 国产欧美另类精品又又久久亚洲欧美| 亚洲av成人精品一二三区| 久久久国产精品麻豆| 人妻一区二区av| 在线观看一区二区三区激情| 熟妇人妻不卡中文字幕| 成年人午夜在线观看视频| 免费大片18禁| 亚洲欧美成人综合另类久久久| 精品熟女少妇av免费看| 国产高清不卡午夜福利| 老女人水多毛片| 王馨瑶露胸无遮挡在线观看| 十分钟在线观看高清视频www| 街头女战士在线观看网站| 日韩一本色道免费dvd| 欧美日韩综合久久久久久| 欧美老熟妇乱子伦牲交| 中文字幕免费在线视频6| 精品卡一卡二卡四卡免费| av卡一久久| av电影中文网址| 啦啦啦中文免费视频观看日本| 免费久久久久久久精品成人欧美视频 | 在线精品无人区一区二区三| 中文字幕久久专区| 午夜免费观看性视频| 夜夜爽夜夜爽视频| 一区二区日韩欧美中文字幕 | 国产精品久久久久成人av| 人妻人人澡人人爽人人| 久久国产亚洲av麻豆专区| 亚洲欧美日韩卡通动漫| 久久国产亚洲av麻豆专区| 亚洲情色 制服丝袜| 97在线视频观看| 日本vs欧美在线观看视频| 大香蕉久久成人网| 亚洲一区二区三区欧美精品| 亚洲国产精品国产精品| 精品少妇内射三级| 亚洲情色 制服丝袜| 国产亚洲最大av| 在线观看三级黄色| 日日撸夜夜添| 美女国产视频在线观看| 精品久久久久久久久亚洲| 亚洲精品日韩av片在线观看| 亚洲熟女精品中文字幕| 国产精品成人在线| 亚洲av成人精品一二三区| 男人操女人黄网站| 美女主播在线视频| 精品一区二区免费观看| 精品国产乱码久久久久久小说| 亚洲欧美成人综合另类久久久| 3wmmmm亚洲av在线观看| 日韩不卡一区二区三区视频在线| 26uuu在线亚洲综合色| 亚洲美女黄色视频免费看| 男人操女人黄网站| av免费观看日本| 日本午夜av视频| 午夜久久久在线观看| 啦啦啦视频在线资源免费观看| 在现免费观看毛片| 欧美日韩av久久| 99九九在线精品视频| 卡戴珊不雅视频在线播放| 亚洲色图综合在线观看| 久久久久久久精品精品| 日日爽夜夜爽网站| 最近中文字幕高清免费大全6| 18禁在线播放成人免费| 自拍欧美九色日韩亚洲蝌蚪91| 桃花免费在线播放| 爱豆传媒免费全集在线观看| 极品人妻少妇av视频| 精品久久蜜臀av无| 视频区图区小说| 五月伊人婷婷丁香| 搡女人真爽免费视频火全软件| 视频区图区小说| 精品久久久久久电影网| 美女国产视频在线观看| 国产一区亚洲一区在线观看| 午夜激情久久久久久久| 久久影院123| 国产高清国产精品国产三级| 搡老乐熟女国产| 日本爱情动作片www.在线观看| 日日摸夜夜添夜夜爱| 国语对白做爰xxxⅹ性视频网站| 午夜激情av网站| 99热这里只有是精品在线观看| 特大巨黑吊av在线直播| 亚洲图色成人| av黄色大香蕉| 日本黄大片高清| 亚洲成色77777| 在线天堂最新版资源| 一级毛片黄色毛片免费观看视频| 婷婷色麻豆天堂久久| 免费观看a级毛片全部| 观看av在线不卡| 精品久久久久久久久亚洲| 日韩精品有码人妻一区| 亚州av有码| 日韩强制内射视频| 免费观看无遮挡的男女| 午夜老司机福利剧场| 精品一区二区三区视频在线| 久久精品国产亚洲网站| 晚上一个人看的免费电影| 一个人免费看片子| 午夜福利,免费看| 久久女婷五月综合色啪小说| 日韩av在线免费看完整版不卡| 26uuu在线亚洲综合色| 国产国拍精品亚洲av在线观看| 七月丁香在线播放| 国产成人av激情在线播放 | 卡戴珊不雅视频在线播放| 亚洲综合精品二区| 欧美 亚洲 国产 日韩一| 免费日韩欧美在线观看| 成年人午夜在线观看视频| 美女视频免费永久观看网站| 国产日韩欧美亚洲二区| 欧美一级a爱片免费观看看| 尾随美女入室| 麻豆成人av视频| 国产精品.久久久| 男女免费视频国产| av免费观看日本| 爱豆传媒免费全集在线观看| 91精品伊人久久大香线蕉| 国产精品久久久久久久久免| 亚洲,欧美,日韩| 日本与韩国留学比较| 色吧在线观看| 99九九线精品视频在线观看视频| videossex国产| 妹子高潮喷水视频| 女的被弄到高潮叫床怎么办| 亚洲精品一区蜜桃| 精品视频人人做人人爽| 精品人妻熟女毛片av久久网站| 国产成人精品在线电影| 久久热精品热| 精品久久久久久久久亚洲| 精品国产一区二区久久| 一级片'在线观看视频| 亚洲国产精品一区三区| 国内精品宾馆在线| 韩国av在线不卡| 亚洲精品456在线播放app| 亚洲国产毛片av蜜桃av| kizo精华| 欧美最新免费一区二区三区| 天天躁夜夜躁狠狠久久av| 国产精品一国产av| 精品午夜福利在线看| 搡老乐熟女国产| 夜夜骑夜夜射夜夜干| 免费看av在线观看网站| tube8黄色片| 精品酒店卫生间| 超碰97精品在线观看| 亚洲精品成人av观看孕妇| 内地一区二区视频在线| 亚洲欧美成人精品一区二区| 插逼视频在线观看| 男女边摸边吃奶| 亚洲国产av新网站| 国产亚洲午夜精品一区二区久久| 国产成人免费无遮挡视频| 男人爽女人下面视频在线观看| 免费看av在线观看网站| 日本欧美视频一区| 在线精品无人区一区二区三| 中文字幕人妻丝袜制服| 中文天堂在线官网| 一区二区三区精品91| 国产精品人妻久久久影院| 91精品伊人久久大香线蕉| 午夜激情av网站| 久久久a久久爽久久v久久| 欧美人与善性xxx| 亚洲av国产av综合av卡| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲,一卡二卡三卡| 熟女人妻精品中文字幕| 国产欧美日韩一区二区三区在线 | 色网站视频免费| 最新的欧美精品一区二区| 一级毛片 在线播放| 免费大片18禁| 下体分泌物呈黄色| 新久久久久国产一级毛片| 免费看不卡的av| 人体艺术视频欧美日本| 免费人妻精品一区二区三区视频| 精品一区二区免费观看| 99九九线精品视频在线观看视频| 日本欧美国产在线视频| 自线自在国产av| 国产免费福利视频在线观看| 国产一区亚洲一区在线观看| 久久国内精品自在自线图片| 赤兔流量卡办理| 亚洲精品自拍成人| 多毛熟女@视频| 精品久久久精品久久久| 久热久热在线精品观看| 精品人妻在线不人妻| 亚洲第一区二区三区不卡| 亚洲一级一片aⅴ在线观看| 王馨瑶露胸无遮挡在线观看| 国产精品一二三区在线看| 久久精品熟女亚洲av麻豆精品| 国产免费一级a男人的天堂| 自拍欧美九色日韩亚洲蝌蚪91| 一本一本综合久久| 国产日韩欧美在线精品| 高清黄色对白视频在线免费看| 成人国产av品久久久| 亚洲精品一区蜜桃| 在线播放无遮挡| 制服丝袜香蕉在线| av网站免费在线观看视频| 99久久中文字幕三级久久日本| 啦啦啦中文免费视频观看日本| 丝袜在线中文字幕| 一区二区日韩欧美中文字幕 | 亚洲国产成人一精品久久久| 精品国产一区二区三区久久久樱花| 精品久久久久久电影网| 国模一区二区三区四区视频| 三上悠亚av全集在线观看| 日日摸夜夜添夜夜添av毛片| 亚洲精品aⅴ在线观看| 国产男女内射视频| 国产 精品1| h视频一区二区三区| 亚洲欧美精品自产自拍| 亚洲人成网站在线观看播放| 精品久久久噜噜| 国产av码专区亚洲av| 99热国产这里只有精品6| 校园人妻丝袜中文字幕| 中文字幕制服av| 久久久a久久爽久久v久久| videosex国产| 人人妻人人澡人人看| 高清不卡的av网站| 欧美亚洲日本最大视频资源| 午夜免费男女啪啪视频观看| 22中文网久久字幕| 日韩av免费高清视频| 亚洲精品国产av成人精品| 国产在线一区二区三区精| 国产精品一区二区三区四区免费观看| av播播在线观看一区| 制服人妻中文乱码| 一级黄片播放器| 亚洲人成网站在线观看播放| 3wmmmm亚洲av在线观看| 久久人人爽av亚洲精品天堂| 国产乱来视频区| 人妻 亚洲 视频| 汤姆久久久久久久影院中文字幕| 中文字幕av电影在线播放| 久久久久久久大尺度免费视频| 亚洲性久久影院| 久久99精品国语久久久| 黑人高潮一二区| 午夜91福利影院| 一个人免费看片子| 22中文网久久字幕| 欧美日韩视频高清一区二区三区二| 建设人人有责人人尽责人人享有的| www.av在线官网国产| 3wmmmm亚洲av在线观看| 男男h啪啪无遮挡| 乱人伦中国视频| 久久久国产精品麻豆| 精品久久久久久久久亚洲| 日日爽夜夜爽网站| 国产日韩欧美视频二区| 少妇被粗大的猛进出69影院 | 亚洲国产精品专区欧美| 午夜免费鲁丝| 久热久热在线精品观看| 久久久久国产网址| 日韩精品有码人妻一区| 99久久综合免费| 久久久久视频综合| 99久久精品一区二区三区| 国产精品国产三级专区第一集| 久久精品久久精品一区二区三区| 亚洲av在线观看美女高潮| 日本黄大片高清| 日本猛色少妇xxxxx猛交久久| 久久99热6这里只有精品| 伦精品一区二区三区| 观看av在线不卡| 国产黄片视频在线免费观看| 免费黄频网站在线观看国产| 国产探花极品一区二区| 亚洲精品aⅴ在线观看| 激情五月婷婷亚洲| 国产精品久久久久久av不卡| 国产乱人偷精品视频| 久久人妻熟女aⅴ| 青春草亚洲视频在线观看| 中文字幕亚洲精品专区| 91久久精品电影网| 日日摸夜夜添夜夜爱| 国产精品不卡视频一区二区| xxx大片免费视频| 国产乱来视频区| 黄色一级大片看看| 最近最新中文字幕免费大全7| 国产精品嫩草影院av在线观看| 亚洲精品久久成人aⅴ小说 | 亚洲欧洲国产日韩| 男男h啪啪无遮挡| 日韩视频在线欧美| 亚洲av欧美aⅴ国产| 一级二级三级毛片免费看| 亚洲精品一区蜜桃| 亚洲精品视频女| 啦啦啦中文免费视频观看日本| 国产日韩欧美在线精品| 国产精品 国内视频| 狂野欧美激情性xxxx在线观看| 性色av一级| videosex国产| 国产男人的电影天堂91| 午夜激情福利司机影院| 久久亚洲国产成人精品v| 成人国产麻豆网| 免费日韩欧美在线观看| 国产不卡av网站在线观看| 免费人妻精品一区二区三区视频| 一二三四中文在线观看免费高清| 精品亚洲成a人片在线观看| 欧美精品人与动牲交sv欧美| 五月玫瑰六月丁香| 男人爽女人下面视频在线观看| 免费人成在线观看视频色| 免费人妻精品一区二区三区视频| 中文字幕av电影在线播放| 亚洲少妇的诱惑av| 久久99一区二区三区| 我的老师免费观看完整版| 久久午夜综合久久蜜桃| 欧美成人午夜免费资源| 欧美日韩一区二区视频在线观看视频在线| √禁漫天堂资源中文www| 中文字幕亚洲精品专区| 91午夜精品亚洲一区二区三区| 午夜福利视频精品| 国产精品人妻久久久久久| 日本vs欧美在线观看视频| a 毛片基地| 色94色欧美一区二区| 少妇的逼好多水| 建设人人有责人人尽责人人享有的| 亚洲国产日韩一区二区| 国产欧美另类精品又又久久亚洲欧美| 97精品久久久久久久久久精品| 久久久久久久久久久免费av| 国产精品国产av在线观看| 丝袜喷水一区| 在线观看免费日韩欧美大片 | 午夜视频国产福利| 26uuu在线亚洲综合色| 女性被躁到高潮视频| 五月开心婷婷网| 狂野欧美激情性xxxx在线观看| 亚洲第一av免费看| 美女主播在线视频| 简卡轻食公司| 少妇高潮的动态图| 男女边吃奶边做爰视频| 内地一区二区视频在线| 亚洲av欧美aⅴ国产| 男男h啪啪无遮挡| 免费看光身美女| 中国国产av一级| 男女无遮挡免费网站观看| 色吧在线观看| 97在线人人人人妻| 国产国语露脸激情在线看| 国产精品久久久久久精品古装| 午夜日本视频在线| 亚洲欧美清纯卡通| 免费看光身美女| 又粗又硬又长又爽又黄的视频| 亚洲av不卡在线观看| 成人毛片a级毛片在线播放| 亚洲精品久久午夜乱码| 成人综合一区亚洲| 欧美日韩精品成人综合77777| 99久久精品国产国产毛片| 亚洲精华国产精华液的使用体验| 久久久久久伊人网av| 亚洲欧美一区二区三区国产| 女性生殖器流出的白浆| 国产男人的电影天堂91| 久热久热在线精品观看| 天天操日日干夜夜撸| 91精品国产国语对白视频| 欧美97在线视频| 美女主播在线视频| 精品人妻熟女av久视频| 欧美激情极品国产一区二区三区 | 男女边摸边吃奶| 亚洲国产最新在线播放| 97超碰精品成人国产| 日韩三级伦理在线观看| 国产精品久久久久久久久免| 亚洲av日韩在线播放| av国产精品久久久久影院| 久久狼人影院| 国产国语露脸激情在线看| 在线免费观看不下载黄p国产| 高清午夜精品一区二区三区| 亚洲精品色激情综合| a级毛片黄视频| 欧美激情极品国产一区二区三区 | 天天躁夜夜躁狠狠久久av| 大片免费播放器 马上看| 欧美+日韩+精品| 丰满乱子伦码专区| 国产亚洲av片在线观看秒播厂| 国产欧美日韩综合在线一区二区| 在线免费观看不下载黄p国产| 亚洲成人av在线免费| 91在线精品国自产拍蜜月| 91精品一卡2卡3卡4卡| 黑人高潮一二区| 久久精品国产鲁丝片午夜精品| 日本av免费视频播放| 国产成人aa在线观看| 国产熟女欧美一区二区| 久久国产亚洲av麻豆专区| 国产成人午夜福利电影在线观看| 一本色道久久久久久精品综合| 中文字幕亚洲精品专区| 这个男人来自地球电影免费观看 | 欧美日韩视频精品一区| 毛片一级片免费看久久久久| 99国产精品免费福利视频| 丰满乱子伦码专区| 美女中出高潮动态图| 草草在线视频免费看| 午夜激情福利司机影院| 亚洲欧美精品自产自拍| 午夜福利视频精品| 尾随美女入室| 伦理电影免费视频| 日韩一区二区视频免费看| 爱豆传媒免费全集在线观看| 极品少妇高潮喷水抽搐| 九九久久精品国产亚洲av麻豆| 晚上一个人看的免费电影| 国产午夜精品久久久久久一区二区三区| 曰老女人黄片| 99视频精品全部免费 在线| 最近中文字幕高清免费大全6| av视频免费观看在线观看| av又黄又爽大尺度在线免费看| 在线亚洲精品国产二区图片欧美 | 在线观看免费高清a一片| 日韩在线高清观看一区二区三区| 国产老妇伦熟女老妇高清| 国产成人精品福利久久| 亚洲av电影在线观看一区二区三区| 青春草视频在线免费观看| 极品人妻少妇av视频| 嘟嘟电影网在线观看| 国产精品国产三级专区第一集| 精品一区二区三区视频在线| 99视频精品全部免费 在线| 国产高清有码在线观看视频| 午夜福利,免费看| 国产亚洲最大av| 成年女人在线观看亚洲视频| 亚洲一级一片aⅴ在线观看| 午夜精品国产一区二区电影| 欧美人与性动交α欧美精品济南到 | 99久久中文字幕三级久久日本| 亚洲美女搞黄在线观看| 最黄视频免费看| 欧美丝袜亚洲另类| 亚洲精品视频女| 水蜜桃什么品种好| 亚洲国产精品一区二区三区在线| 热re99久久国产66热| 99re6热这里在线精品视频| 久久久久久久精品精品| 色5月婷婷丁香| 一级毛片电影观看| 欧美变态另类bdsm刘玥| 精品久久久久久久久av| 99久久精品一区二区三区| 丰满乱子伦码专区| 精品人妻在线不人妻| 一级毛片电影观看| 国产成人午夜福利电影在线观看| 日韩强制内射视频| 免费看不卡的av| 成人漫画全彩无遮挡| 国产精品不卡视频一区二区| 中国国产av一级| 亚洲精华国产精华液的使用体验| 久久久久人妻精品一区果冻| 熟女av电影| 大片免费播放器 马上看| 天天操日日干夜夜撸| 国产精品嫩草影院av在线观看| 夜夜看夜夜爽夜夜摸| 欧美 亚洲 国产 日韩一| 男女免费视频国产| 国产 精品1| 一级,二级,三级黄色视频| 国产亚洲一区二区精品| 五月伊人婷婷丁香| 高清在线视频一区二区三区| 亚洲精品色激情综合| 赤兔流量卡办理| 狂野欧美激情性xxxx在线观看| 人妻一区二区av| xxxhd国产人妻xxx|