久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

瀏覽:148日期:2022-10-16 14:21:31

句柄是什么?在Windows中,句柄的存在就像指針的標(biāo)識一樣,但這樣的答案顯示不是你們需要的。閑暇之余,筆者摘錄以下Windows句柄的解釋。用戶可以端著咖啡再看Windows結(jié)構(gòu)體里面句柄的作用表述。

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

這里我列舉詞條中的關(guān)于句柄的敘述不當(dāng)之處,至于如何不當(dāng)先不管,繼續(xù)往下看就會明白:

句柄是什么?

Windows 之所以要設(shè)立句柄,根本上源于內(nèi)存管理機(jī)制的問題—虛擬地址,簡而言之?dāng)?shù)據(jù)的地址需要變動,變動以后就需要有人來記錄管理變動,(就好像戶籍管理一樣),因此系統(tǒng)用句柄來記載數(shù)據(jù)地址的變更。

如果想更透徹一點地認(rèn)識句柄,我可以告訴大家,句柄是一種指向指針的指針。

通常我們說句柄是Windows用來標(biāo)識被應(yīng)用程序所建立或使用的對象的唯一整數(shù)。這句話是沒有問題的,但是想把這句話對應(yīng)到具體的內(nèi)存結(jié)構(gòu)上就做不到了。下面我們來詳細(xì)探討一下Windows中的句柄到底是什么。

一、虛擬內(nèi)存結(jié)構(gòu)

我們知道,CPU是通過尋址來訪問內(nèi)存的。32位CPU的尋址寬度是 0~0xFFFFFFFF ,計算后得到的大小是4G,也就是說可支持的物理內(nèi)存最大是4G。但在實踐過程中,碰到了這樣的問題,程序需要使用4G內(nèi)存,而可用物理內(nèi)存小于4G,導(dǎo)致程序不得不降低內(nèi)存占用。

為了解決此類問題,現(xiàn)代CPU引入了 MMU(Memory Management Unit 內(nèi)存管理單元)。

MMU 的核心思想是利用虛擬地址替代物理地址,即CPU尋址時使用虛址,由 MMU 負(fù)責(zé)將虛址映射為物理地址。MMU的引入,解決了對物理內(nèi)存的限制,對程序來說,就像自己在使用4G內(nèi)存一樣。

內(nèi)存分頁(Paging)是在使用MMU的基礎(chǔ)上,提出的一種內(nèi)存管理機(jī)制。它將虛擬地址和物理地址按固定大?。?K)分割成頁(page)和頁幀(page frame),并保證頁與頁幀的大小相同。這種機(jī)制,從數(shù)據(jù)結(jié)構(gòu)上,保證了訪問內(nèi)存的高效,并使OS能支持非連續(xù)性的內(nèi)存分配。在程序內(nèi)存不夠用時,還可以將不常用的物理內(nèi)存頁轉(zhuǎn)移到其他存儲設(shè)備上,比如磁盤,這就是大家耳熟能詳?shù)奶摂M內(nèi)存。

1、虛擬地址與物理地址需要通過映射,才能使CPU正常工作。

而映射就需要存儲映射表。在現(xiàn)代CPU架構(gòu)中,映射關(guān)系通常被存儲在物理內(nèi)存上一個被稱之為頁表(page table)的地方。

如下圖:

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

從這張圖中,可以清晰地看到CPU與頁表,物理內(nèi)存之間的交互關(guān)系。

進(jìn)一步優(yōu)化,引入TLB(Translation lookaside buffer,頁表寄存器緩沖)。

由上一節(jié)可知,頁表是被存儲在內(nèi)存中的。我們知道CPU通過總線訪問內(nèi)存,肯定慢于直接訪問寄存器的。

為了進(jìn)一步優(yōu)化性能,現(xiàn)代CPU架構(gòu)引入了TLB,用來緩存一部分經(jīng)常訪問的頁表內(nèi)容。

如下圖:

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

在中間加入了TLB。

2、為什么要支持大內(nèi)存分頁?

TLB是有限的,這點毫無疑問。當(dāng)超出TLB的存儲極限時,就會發(fā)生 TLB miss,之后,OS就會命令CPU去訪問內(nèi)存上的頁表。如果頻繁的出現(xiàn)TLB miss,程序的性能會下降地很快。

為了讓TLB可以存儲更多的頁地址映射關(guān)系,我們的做法是調(diào)大內(nèi)存分頁大小。

如果一個頁4M,對比一個頁4K,前者可以讓TLB多存儲1000個頁地址映射關(guān)系,性能的提升是比較可觀的。

簡而言之,虛擬內(nèi)存將內(nèi)存邏輯地址和物理地址之間建立了一個對應(yīng)表,要讀寫邏輯地址對應(yīng)的物理內(nèi)存內(nèi)容,必須查詢相關(guān)頁表(當(dāng)然現(xiàn)在有還有段式、段頁式內(nèi)存對應(yīng)方式,但是從原理上來說都是一樣的)找到邏輯地址對應(yīng)的物理地址做相關(guān)操作。我們常見的對程序員開放的內(nèi)存分配接口如malloc等分配的得到的都是邏輯地址,C指針指向的也是邏輯地址。

這種虛擬內(nèi)存的好處是很多的,這里以連續(xù)內(nèi)存分配和可移動內(nèi)存為例來講一講。

首先說一說連續(xù)內(nèi)存分配,我們在程序中經(jīng)常需要分配一塊連續(xù)的內(nèi)存結(jié)構(gòu),如數(shù)組,他們可以使用指針循環(huán)讀取,但是物理內(nèi)存多次分配釋放后實際上是破碎的,如下圖

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

圖中白色為可用物理內(nèi)存,黑色為被其他程序占有的內(nèi)存,現(xiàn)在要分配一個12大小的連續(xù)內(nèi)存,那么顯然物理內(nèi)存中是沒有這么大的連續(xù)內(nèi)存的,這時候通過頁表對應(yīng)的方式可以看到我們很容易得到邏輯地址上連續(xù)的12大小的內(nèi)存。

再說一說可移動內(nèi)存,我們使用GlobalAlloc等函數(shù)時,經(jīng)常會指定GMEM_MOVABLE和GMEM_FIXED參數(shù),很對人對這兩個參數(shù)很頭疼,搞不明白什么意思。

實際上這里的MOVABLE和FIXED都是針對的邏輯地址來說的。GMEM_MOVABLE是說允許操作系統(tǒng)(或者應(yīng)用程序)實施對內(nèi)存堆(邏輯地址)的管理,在必要時,操作系統(tǒng)可以移動內(nèi)存塊獲取更大的塊,或者合并一些空閑的內(nèi)存塊,也稱“垃圾回收”,它可以提高內(nèi)存的利用率,這里的地址都是指邏輯地址。同樣以分配12大小連續(xù)的內(nèi)存,在某種狀態(tài)時,內(nèi)存結(jié)構(gòu)如下

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

顯然這時候是無法分配12連續(xù)大小的內(nèi)存,但是如果這里的邏輯地址都指明為GMEM_MOVABLE的話,操作系統(tǒng)這時候會對邏輯地址做管理,得到如下結(jié)果:

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

這時候就實現(xiàn)了邏輯地址的MOVE,相對比實現(xiàn)物理內(nèi)存的移動,這樣的代價當(dāng)然要小得多撒,但是聰明的小伙伴們是不是要問,這樣在邏輯地址中移動了內(nèi)存,那么實際訪問數(shù)據(jù)不都亂套了嗎,還能找到自己分配的實際物理內(nèi)存數(shù)據(jù)嗎,等等,不要心急,這就是等下要講的句柄做的事情了。

GMEM_FIXED是說允許在物理內(nèi)存中移動內(nèi)存塊,但是必須保證邏輯地址是不變的,在早期16位Windows操作系統(tǒng)不支持在物理內(nèi)存中移動內(nèi)存,所以禁止使用GMEM_FIXED,現(xiàn)在的你估計體會不到了。

事實上用GlobalAlloc分配內(nèi)存時指定GMEM_FIXED參數(shù)返回的句柄就是指向內(nèi)存分配的內(nèi)存塊的指針,不理解???接著看下面的句柄結(jié)構(gòu),你就明白了。

二、句柄結(jié)構(gòu)

在上面講解虛擬內(nèi)存結(jié)構(gòu)的過程中,我們就引出了幾個問題:MOVABLE的內(nèi)存訪問為什么不會亂,F(xiàn)IXED的內(nèi)存為什么說就是指向分配內(nèi)存塊的指針。

事實上我們盡管Windows沒有給出源碼,但是從一些頭文件、MSDN和Windows早期內(nèi)存分配函數(shù)中我們還是可以一窺端倪。

在Winnt.h頭文件中做了通用句柄的定義:

01#ifdef STRICT02typedef void *HANDLE;03#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name04#else05typedef PVOID HANDLE;06#define DECLARE_HANDLE(name) typedef HANDLE name07#endif08typedef HANDLE *PHANDLE;復(fù)制代碼#ifdef STRICTtypedef void *HANDLE;#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name#elsetypedef PVOID HANDLE;#define DECLARE_HANDLE(name) typedef HANDLE name#endiftypedef HANDLE *PHANDLE;

在Windef.h做了特殊句柄的定義:

01#if !defined(_MAC) || !defined(GDI_INTERNAL)02DECLARE_HANDLE(HFONT);03#endif04DECLARE_HANDLE(HICON);05#if !defined(_MAC) || !defined(WIN_INTERNAL)06DECLARE_HANDLE(HMENU);07#endif08DECLARE_HANDLE(HMETAFILE);09DECLARE_HANDLE(HINSTANCE);10typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */11#if !defined(_MAC) || !defined(GDI_INTERNAL)12DECLARE_HANDLE(HPALETTE);13DECLARE_HANDLE(HPEN);14#endif15DECLARE_HANDLE(HRGN);16DECLARE_HANDLE(HRSRC);17DECLARE_HANDLE(HSTR);18DECLARE_HANDLE(HTASK);19DECLARE_HANDLE(HWINSTA);20DECLARE_HANDLE(HKL);復(fù)制代碼#if !defined(_MAC) || !defined(GDI_INTERNAL)DECLARE_HANDLE(HFONT);#endifDECLARE_HANDLE(HICON);#if !defined(_MAC) || !defined(WIN_INTERNAL)DECLARE_HANDLE(HMENU);#endifDECLARE_HANDLE(HMETAFILE);DECLARE_HANDLE(HINSTANCE);typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */#if !defined(_MAC) || !defined(GDI_INTERNAL)DECLARE_HANDLE(HPALETTE);DECLARE_HANDLE(HPEN);#endifDECLARE_HANDLE(HRGN);DECLARE_HANDLE(HRSRC);DECLARE_HANDLE(HSTR);DECLARE_HANDLE(HTASK);DECLARE_HANDLE(HWINSTA);DECLARE_HANDLE(HKL);

這里微軟把通用句柄HANDLE定義為void指針,顯然啦,他是不想讓人知道句柄的真實類型,但是和他以往的做法一樣,微軟空有一個好的想法結(jié)果沒有實現(xiàn)。馬上,如果定義了強(qiáng)制類型檢查STRICT,他又定義了特殊類型句柄宏DECLARE_HANDLE,這里用到了##,這是比較偏僻的用法,翻譯過來,對于諸如DECLARE_HANDLE(HMENU)定義其實就是

01typedef struct HMENU__02{03int unused;04} *HMENU;復(fù)制代碼typedef struct HMENU__{int unused;} *HMENU;

到這里,你是不是覺得有一點眉目了呢,對,句柄是一種指向結(jié)構(gòu)體的指針,結(jié)合這里的int unused定義很容易猜到結(jié)構(gòu)體的第一個字段就是我們的邏輯地址(指針)。那么,是不是僅僅如此呢,當(dāng)然不是!??!由于指向結(jié)構(gòu)體指針可以強(qiáng)制截斷只獲取第一個字段,這里的struct結(jié)構(gòu)體絕對不止一個字段,聯(lián)系我們在Windows中的編程經(jīng)驗,對于線程HANDLE有計數(shù)那么必須有計數(shù)段,對于事件HEVENT等內(nèi)核對象會要求指定屬性那么必須有屬性段,對于內(nèi)存分配HANDLE有可移動和不可移動之說那么必須有內(nèi)存可移動屬性段,等等?;诖宋覀兛梢源竽懖聹yWindows的句柄指向的結(jié)構(gòu)類似如下

01struct02{03int pointer;//指針段04int count; //內(nèi)核計數(shù)段05int attribute; //文件屬性段:SHARED等等06int memAttribute; //內(nèi)存屬性段:MOVABLE和FIXED等等07...08};復(fù)制代碼struct{int pointer;//指針段int count; //內(nèi)核計數(shù)段int attribute; //文件屬性段:SHARED等等int memAttribute; //內(nèi)存屬性段:MOVABLE和FIXED等等...};

事實上,Windows內(nèi)存管理器管理的其實都是句柄,通過句柄來管理指針,Windows的系統(tǒng)整理內(nèi)存時檢測內(nèi)存屬性段,如果是可以移動的就能夠移動邏輯地址,移動完后將新的地址更新到對應(yīng)句柄的指針段中,當(dāng)要使用MOVABLE地址時的時候必須Lock住,這時候計數(shù)加1,內(nèi)存管理器檢測到計數(shù)》0便不會移動邏輯地址,這時候才能獲得固定的邏輯地址來操作物理內(nèi)存,使用完后Unlock內(nèi)存管理器又可以移動邏輯地址了,到此MOVABLE的內(nèi)存訪問為什么不會亂這個問題就解決了。

下面再說一說,F(xiàn)IXED的內(nèi)存為什么說就是指向分配內(nèi)存塊的指針。我們看上面的通用句柄定義,可以發(fā)現(xiàn)HANDLE的句柄定義一直是void指針,其他的特殊句柄在嚴(yán)格類型檢查的時候定義為結(jié)構(gòu)體指針,為什么不把二者定義為一樣的呢。查看MSDN關(guān)于GlobalAlloc的敘述對于GMEM_FIXED類型“Allocates fixed memory. The return value is a pointer.”,這里返回的是一個指針,為了驗證這個說法,我寫了一小段程序

01//GMEM_FIXED02hGlobal = GlobalAlloc(GMEM_FIXED, (lstrlen(szBuffer)+1) * sizeof(TCHAR));03pGlobal = GlobalLock(hGlobal);04lstrcpy(pGlobal, szBuffer);05_tprintf(TEXT("pGlobal和hGlobal%sn"), pGlobal==hGlobal ? TEXT("相等") : TEXT("不相等"));06GlobalUnlock(hGlobal);07_tprintf(TEXT("使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:%sn"), hGlobal);08GlobalFree(hGlobal);復(fù)制代碼//GMEM_FIXEDhGlobal = GlobalAlloc(GMEM_FIXED, (lstrlen(szBuffer)+1) * sizeof(TCHAR));pGlobal = GlobalLock(hGlobal);lstrcpy(pGlobal, szBuffer);_tprintf(TEXT("pGlobal和hGlobal%sn"), pGlobal==hGlobal ? TEXT("相等") : TEXT("不相等"));GlobalUnlock(hGlobal);_tprintf(TEXT("使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:%sn"), hGlobal);GlobalFree(hGlobal);

運行結(jié)果為

01pGlobal和hGlobal相等02使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:Test text復(fù)制代碼pGlobal和hGlobal相等使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:Test text

對比使用GMEM_MOVABLE程序為

01//GMEM_MOVABLE02hGlobal = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(szBuffer)+1) * sizeof(TCHAR));03pGlobal = GlobalLock(hGlobal);04lstrcpy(pGlobal, szBuffer);05_tprintf(TEXT("pGlobal和hGlobal%sn"), pGlobal==hGlobal ? TEXT("相等") : TEXT("不相等"));06_tprintf(TEXT("使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:%sn"), hGlobal);07GlobalUnlock(hGlobal);08GlobalFree(hGlobal);復(fù)制代碼//GMEM_MOVABLEhGlobal = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(szBuffer)+1) * sizeof(TCHAR));pGlobal = GlobalLock(hGlobal);lstrcpy(pGlobal, szBuffer);_tprintf(TEXT("pGlobal和hGlobal%sn"), pGlobal==hGlobal ? TEXT("相等") : TEXT("不相等"));_tprintf(TEXT("使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:%sn"), hGlobal);GlobalUnlock(hGlobal);GlobalFree(hGlobal);

運行結(jié)果為

01pGlobal和hGlobal不相等02使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:?pGlobal和hGlobal不相等使用句柄當(dāng)做指針訪問的數(shù)據(jù)為:?

顯然,使用GMEM_FIXED和使用GMEM_MOVABLE得到的數(shù)據(jù)類型不是一樣的,我們有理由相信Windows在調(diào)用GlobalAlloc使用GEM_FIXED的時候返回的就是數(shù)據(jù)指針,使用Windows在調(diào)用GMEM_MOVABLE的時候返回的是指向結(jié)構(gòu)體的句柄,這樣操作的原因相信是為了使用更加方便。那么這里我們就要修正一下前面的說法了:通用句柄HANDLE有時候是邏輯指針,大多數(shù)時候是結(jié)構(gòu)體指針,特殊句柄如HMENU等是結(jié)構(gòu)體指針。這樣第二個問題也解決了。

三、總結(jié):

句柄是什么?Windows結(jié)構(gòu)體里面句柄的作用

下面,我們再回頭看一看博文開頭說的敘述不當(dāng)之處,說他們不當(dāng)是因為不是完全錯誤:第一點,確實句柄有管理內(nèi)存地址變動之用,但是并不只是這個作用,內(nèi)核對象訪問級別、文件是否打開都是和他相關(guān)的;第二點,指向指針的指針,看得出來作者也是認(rèn)真思考了的,但是他忽略了句柄包含的其他功能和管理內(nèi)存地址的作用。

那么到這里對于句柄你應(yīng)該非常理解了,在此基礎(chǔ)我們在Windows編程上是不是可以有一些啟發(fā):

1、通用句柄HANDLE和特殊句柄一般情況下是可以相互轉(zhuǎn)換的,但是有時候會出錯。

2、如果不考慮跨平臺移植的話,應(yīng)該多采用Windows SDK提供的內(nèi)存管理函數(shù),這樣可以獲得更好的內(nèi)存管理。

3、C語言的內(nèi)存分配函數(shù)的實現(xiàn)都是依靠使用GMEM_FIXED調(diào)用Windows SDK的內(nèi)存分配函數(shù)的。

注意可能在新的VS2005等系列編譯器中看不到本文說的一些內(nèi)容,因為在VC6時候有些代碼還不是那么完善,所以給了我們機(jī)會去挖掘潛在的內(nèi)容。至于微軟苦心積慮不讓我們看到句柄的真實定義那是必然的,試想一下主要的內(nèi)存對象結(jié)構(gòu)都被摸清楚了,那么黑客們還不反了天了。

至此,用戶應(yīng)該明白句柄是什么了吧,其實在不同的領(lǐng)域中,句柄的作用都是差不多的,可以作為一個標(biāo)識的作用。

標(biāo)簽: Windows系統(tǒng)
相關(guān)文章:
主站蜘蛛池模板: 成人福利在线 | 91亚洲国产成人久久精品网站 | 国产精品一二 | 国产不卡在线 | 色网在线看 | 日本一区二区三区四区 | 免费观看一区二区三区毛片 | 我要看黄色一级大片 | 久久综合久久久 | 五月激情综合 | 欧美一级精品 | 99日韩| 99re6在线视频精品免费 | 91超碰在线播放 | 国产区福利| 亚洲毛片在线观看 | 亚洲协和影视 | 国产精品无码永久免费888 | 一区在线视频观看 | 97人人做人人人难人人做 | 久久精品毛片 | 91免费看 | 日韩免费视频 | 99国产精品| 国产精品久久久久久久久久久久 | 欧美一区二区三区 | 亚洲精品成人 | 国产麻豆乱码精品一区二区三区 | 日韩一区二区不卡 | 中文字幕视频在线播放 | 亚洲久久| 日韩在线免费电影 | 亚洲天堂一区二区 | 国产精品美女久久久久久久久久久 | 在线视频中文字幕 | 亚洲伦理一区 | 日韩理伦片在线观看视频播放 | 黄色一级片在线看 | 久久九九国产精品 | 日本三级黄色录像 | 国产精品久久国产精品 | 久久精品国产99国产 | 午夜欧美一区二区三区在线播放 | 久久成人免费视频 | 久久精品a一级国产免视看成人 | 日韩精品影院 | 久久久网 | 成人欧美一区二区三区在线播放 | 日韩一区二区福利视频 | aa级毛片毛片免费观看久 | 久久久久中文 | 精品成人一区 | 91精品国产欧美一区二区成人 | 黄色大片在线播放 | 激情欧美一区二区三区中文字幕 | 中文字幕国产 | 韩日视频在线观看 | 欧美国产视频一区 | 91亚洲国产成人久久精品网站 | 欧美一级片 | 久草.com| 一区二区视频免费 | 欧美日韩大片在线观看 | 国产精品一区亚洲二区日本三区 | 国产精品久久久久国产a级 日韩在线二区 | 欧美日日 | 亚洲成人免费在线 | 天天舔夜夜操 | 久久高清毛片 | 综合激情av | 在线视频三级 | 欧美激情在线免费观看 | 精品国产乱码一区二区三 | 国产精品乱码一区二区三区 | 亚洲视频在线播放 | 国产欧美一区二区精品性色 | 中文字幕久久久 | 五月婷婷综合激情网 | av免费在线观看网站 | 91精品久久久久久久 | 久久精品亚洲精品国产欧美 | 欧美a级在线观看 | 亚洲成熟少妇视频在线观看 | 99久久久久久 | 超碰999 | 国产精品美女久久久久久久久久久 | 欧美日韩二区三区 | 婷婷综合一区 | 伊人av超碰久久久麻豆 | 久久99久久99精品免视看婷婷 | 欧美一极片| 91中文字幕网 | 久久久久亚洲精品 | cao视频| 午夜视频网址 | 国产色在线 | jizz国产免费 | 叶山小百合av一区二区 | 涩涩视频观看 | 国产成人综合一区二区三区 | 99re免费视频精品全部 | 欧美日韩成人在线 | 欧美日韩一区在线 | 欧美视频三区 | 99国产精品久久久 | 日本三级做a全过程在线观看 | 国产成人免费视频网站视频社区 | 精品国产乱码久久久久久1区2区 | 三区在线视频 | 成人亚洲网 | 亚洲人成网亚洲欧洲无码 | 国产精品久久久久久av公交车 | 亚洲精彩视频 | 日韩亚洲视频 | 亚洲国产高清在线 | 嫩草91| 国产精品国产三级国产a | 国产亚洲一区二区三区在线观看 | 成人欧美一区二区三区白人 | 精品久久久久一区二区三区 | 亚洲成a人v欧美综合天堂麻豆 | 视色网站 | av在线一区二区三区 | 91免费在线看 | 国产精品一区二 | 国产成人在线一区二区 | 欧美成人激情视频 | 先锋久久 | 国产精品九九九 | 99精品欧美一区二区三区综合在线 | 午夜免费观看网站 | 成人精品视频在线观看 | 伊人伊人 | 免费一级片 | 91精品国产自产91精品 | 国产欧美综合一区 | 久久欧美精品一区 | 在线成人av | 男人的天堂免费 | 亚洲精品久久久久国产 | 91久久久久久久久久久久久 | 免费在线看a | 国产精品无码专区在线观看 | 精品国产91亚洲一区二区三区www | 日韩精品久久理论片 | 91精品国产色综合久久不卡98 | 曰本人一级毛片免费完整视频 | 成人欧美一区二区三区黑人孕妇 | 国产中文一区 | 成年人在线视频播放 | 亚洲成人精品 | 国产98色在线 | 日韩 | 亚洲久草 | 韩国av片在线观看 | 国产98色在线 | 日韩 | 精品久久久久久久 | 日韩欧美在线观看视频网站 | 一区二区三区精品视频 | 操久久| 亚洲一区中文字幕 | 国产成人精品一区二区三区四区 | 精品久久久久久久久久久久久久久 | 色135综合网 | 免费观看黄色一级大片 | 黄在线看v | 久久国产精品一区 | 在线国产视频 | 国产精品久久久久久福利一牛影视 | 一区在线播放 | 午夜精品久久久久久久星辰影院 | 精品视频一区二区 | 亚洲一区欧美一区 | 黄色毛片av | 午夜精品导航 | 99久久夜色精品国产网站 | 国产视频福利在线观看 | 亚洲不卡高清视频 | 精品在线一区二区三区 | 亚洲狠狠爱一区二区三区 | 小泽玛丽娅 | 日韩成人免费av | 日韩9999| 国产精品日日夜夜 | 国产日韩一区二区三区 | 黄色电影在线免费观看 | 日韩素人一区二区三区 | 亚洲欧美中文日韩在线v日本 | 国产日韩一区二区 | 欧美精品在线一区 | 欧美国产日本一区 | 综合色爱 | 99精品热 | 精品国产欧美一区二区 | 久久成人国产精品 | 久久综合九九 | 天天色天天色 | 国产午夜精品一区二区三区视频 | 精品国产一区二区三区av片 | 亚洲成熟少妇视频在线观看 | 成人天堂资源www在线 | 久久se精品一区精品二区 | 亚洲男人天堂2023 | 日韩毛片一级 | 久久99久久99精品 | 欧洲精品乱码久久久久蜜桃 | 一级在线观看 | 欧美黄色片 | 久久久免费看 | 国产精品毛片久久久久久久 | 国产超碰人人模人人爽人人添 | 久久中文字幕一区 | 亚洲第一成年免费网站 | 欧美日韩成人在线视频 | 久久网站免费视频 | 国产一区二区视频在线观看 | 成人免费视频一区二区 | 午夜视频在线观看网站 | 国产成人在线看 | 欧美日韩电影一区二区 | 91视频在线| 麻豆久久精品 | 日韩欧美在线观看一区 | 毛片入口| 亚洲精品日韩精品 | 欧美一级欧美三级在线观看 | 麻豆久久| 久久一区 | 午夜成人免费电影 | 九九热精品视频 | 国产超碰人人爽人人做人人爱 | 日韩中文在线 | 国产欧美在线视频 | 蜜臀久久99精品久久久无需会员 | 欧美激情综合五月色丁香小说 | 欧美成人精品一区二区 | 午夜一区二区三区在线观看 | 欧洲毛片| 中文av在线免费观看 | 国产福利一区二区 | 国产成人精品无人区一区 | aⅴ色国产 欧美 | 羞羞的视频在线 | 精品国产一区二区三区久久影院 | 成人一级毛片 | 国产一区二区三区免费在线 | 日韩aaa视频 | 中文字幕一级 | 精品欧美黑人一区二区三区 | 91av视频在线观看 | 国产中文字幕一区 | 日韩在线观看一区 | 国产欧美在线一区二区 | 日本精品一区二区在线观看 | 国产精品对白一区二区三区 | 青青草精品 | 成人h视频在线观看 | 日韩靠逼 | 亚洲高清一区二区三区 | 成人亚洲精品久久久久软件 | 欧美日韩综合精品 | 精久久 | 99久久久免费视频 | 成人精品视频在线 | 亚洲欧美日韩精品久久亚洲区 | 中文在线a在线 | 日韩一区二区精品 | 国产美女精品人人做人人爽 | 国产99久久 | 奇米影视首页 | 欧美日本在线观看 | 日韩免费视频一区二区 | 99这里只有精品视频 | 一区二区三区免费 | 午夜影视av | 成年人在线看片 | 欧美日韩在线视频一区二区 | 在线视频 欧美日韩 | 久久91精品国产91久久跳 | 国产欧美综合视频 | 日本在线一区二区三区 | 麻豆高清免费国产一区 | 2019天天干夜夜操 | caoporn免费在线视频 | 特黄视频 | 欧洲妇女成人淫片aaa视频 | 国产美女一区二区 | 龙珠z国语版291集全 | 999精品视频 | 久久久亚洲精品中文字幕 | 国产精品毛片一区二区在线看 | 国产精品久久久久久亚洲调教 | 中文字幕乱码亚洲精品一区 | 亚洲国产久 | av片免费看 | 久久国产精品免费一区二区三区 | 人人干网站 | 国产欧美精品一区二区色综合朱莉 | 久久精品国产一区二区三区不卡 | 久久首页| 男女羞羞视频免费看 | 在线视频亚洲 | 在线观看欧美日韩视频 | 一区二区三区在线免费播放 | 欧洲成人午夜免费大片 | 在线视频一区二区三区 | 99亚洲精品 | 日本久久综合 | 日韩在线免费 | 精品国产一区二区三区久久 | 久久久久久久久久久久国产精品 | 久久99精品久久久久久琪琪 | 三级欧美在线观看 | 欧美一级黄色片 | 欧美日韩国产精品一区二区亚洲 | 在线中文字幕av | av基地网| 亚洲国产二区 | 欧洲一区在线 | 国产精品久久一区性色av图片 | 欧美人人 | 99爱在线观看 | 欧美综合一区二区三区 | 在线免费观看日韩视频 | 日本久久网站 | 成人欧美一区二区三区视频xxx | 国产亚洲成av人片在线观看桃 | 欧美hdfree性xxxx| zzzwww在线观看免 | 亚洲精品在线看 | 亚洲欧美一区二区三区不卡 | 国产精品日韩一区二区 | 成人在线不卡 | 国产精品视频导航 | 国产成人一区 | 国产精品永久免费自在线观看 | 日韩精品中文字幕在线播放 | 久久91视频 | 国产男人天堂 | 日本一级中文字幕久久久久久 | 日日干夜夜操 | 国产专区在线 | 91在线视频| 91麻豆精品国产91久久久久久 | 午夜视频 | a级在线观看免费 | 久久久久国产精品www | 国产私拍视频 | 成人免费在线电影 | 亚洲欧美日韩国产综合 | 一区在线免费 | 日韩欧美第一页 | 亚洲二区视频 | 久久青草国产 | 色毛片 | 成人国产精品色哟哟 | 91精品国产高清自在线观看 | 国产第一亚洲 | 成人在线网址 | 亚洲精品久久久久久久久久久 | 毛片免费观看 | 91精品国产91久久久久久黑人 | а天堂中文官网 | 国产一级一级国产 | 可以在线观看的av网站 | 午夜精品久久久久久久久久久久久 | 中文字幕日韩久久 | 国产黄色网址在线观看 | 日韩6699人妻熟女毛片 | 欧洲成人午夜免费大片 | 一色视频 | 久久在线播放 | 91影院在线观看 | 亚洲国产精品久久久 | 国产在线一区二区三区 | 亚洲日韩成人 | 福利视频网址导航 | 夜夜超碰 | 精品96久久久久久中文字幕无 | 久久99深爱久久99精品 | 爱爱视频网站 | 成人亚洲天堂 | 日韩欧美国产一区二区三区 | 欧美午夜在线观看 | 91国产精品 | 黄在线免费观看 | 国产一区二区久久久 | 日本成人午夜影院 | 精品国产三级 | 在线看免费观看日本 | 日本精品免费 | 在线a视频| av一二| 99久久久久久久久 | 99久久夜色精品国产亚洲1000部 | 婷婷色狠狠 | 国产美女精品视频免费观看 | 久久夫妻网 | 日韩av在线中文字幕 | 午夜大片在线观看 | 国色天香成人网 | 色视频网站在线观看 | 久久综合社区 | 国产精品自产av一区二区三区 | 国产精品福利在线观看 | 国产三级在线 | 91视频原创 | 久色视频在线观看 | 欧美日韩亚洲国产综合 | 黄色国产精品 | 中文字幕第66页 | 日本中文字幕在线观看 | 青青草一区 | 国产欧美日韩精品一区 | 国产主播福利 | 精品国产黄a∨片高清在线 激情网站免费 | 久久成人精品 | 91看片免费 | 日本高清视频一区二区三区 | 久久成人在线 | 国产精品视频 | 97热在线 | 午夜精品影院 | 久久亚洲精品视频 | 免费福利视频一区 | 亚洲热妇 | 天天摸夜夜摸爽爽狠狠婷婷97 | 麻豆亚洲| 91日韩精品一区二区三区 | 国产欧美精品一区二区三区四区 | 中文字幕av亚洲精品一部二部 | 成人国产精品色哟哟 | 午夜不卡一区二区 | 99这里只有精品视频 | 色婷婷久久一区二区三区麻豆 | 欧美精品成人 | 久久久99精品免费观看 | 毛片免费看 | 国产福利在线观看 | 欧美在线观看一区 | 日韩一区二区在线观看 | 欧美在线观看一区 | 亚洲大奶网| 欧美一区二区三区免费在线观看 | 一级在线播放 | 这里只有精品在线 | 色综合99 | 国产精品成人av | 国产成人精品综合 | 日本成片视频 | 亚洲成人日韩 | 成年人黄色一级片 | 国产成人久久精品一区二区三区 | 国产一级片在线播放 | 午夜日韩在线观看 | jlzzjlzz亚洲日本少妇 | 一区二区在线免费观看 | 亚洲精品视频在线播放 | 日韩日韩 | 日韩欧美一区二区视频 | 日韩视频中文字幕 | 精品国产乱码久久久久久1区2区 | 国产一区免费视频 | 在线看片福利 | 免费成人高清 | 日本中文字幕在线播放 | 91社影院在线观看 | 久久99国产精品 | 国产又粗又长又硬又猛电影 | 成人在线播放 | 欧美三级在线播放 | 狠狠亚洲 | 国产特级毛片 | 中文字幕高清一区 | 欧美日韩一区二区三区免费视频 | 人人鲁人人莫一区二区三区 | 亚洲精品欧美精品 | 一区二区精品 | 日韩在线播 | av激情在线| 九九九视频 | 狠狠视频 | 国产丝袜一区二区三区免费视频 | 国产高清精 | 国产精品99精品久久免费 | 一区二区在线视频 | 久草成人网 | 黄色天堂在线观看 | 午夜影院毛片 | 亚洲精品a区| 日韩欧美综合 | 91国在线高清视频 | 国产77777| 中文字幕日韩欧美 | 91精品国产91久久久久久蜜臀 | 久久国产欧美日韩精品 | 精品日韩一区二区 | 日韩福利视频 | 久久精品在线 | 亚洲精品成人 | 国产一区二区视频精品 | 看全黄大色黄大片老人做 | 亚洲精品在线播放 | 亚洲 欧美 另类 综合 偷拍 | 国产91久久精品 | 欧美日韩在线成人 | 九一亚洲精品 | 成人午夜网 | 午夜视频| 久久99这里只有精品 | 亚洲精品一区二三区 | gogo熟少妇大胆尺寸 | 一道本视频 | 国产电影一区二区三区图片 | 日韩精品小视频 | 欧美精品一区二区在线观看 | 欧美成人激情 | 国产精品久久久久久中文字 | 国产精品一二三区 | 天天干天天操天天爽 | 久久作爱视频 | 亚洲福利一区 | 日韩欧美一级精品久久 | 国产目拍亚洲精品99久久精品 | 色婷婷亚洲 | 成人激情视频 | 精品国产一区二区三区久久久蜜月 | 亚洲福利精品 | 国产视频成人 | 一级a性色生活片久久毛片明星 | 在线视频中文字幕 | 亚洲女人的天堂 | 久久久精品一区二区三区 | 久久久久久91香蕉国产 | 国产高清美女一级a毛片久久 | av中文字幕第一页 | 日韩免费在线 | 日韩国产在线观看 | 欧美9999| 不卡一区| 女男羞羞视频网站免费 | 国产精品一区二区三区99 | 欧美久草 | 色伊人| av一二三区 | 国产精品美女久久久久久久久久久 | 免费av片在线 | 日韩大片免费播放 | 欧洲精品一区 | 久久精品中文字幕 | 午夜视频福利在线观看 | 国产精品久久久久久亚洲调教 | 播放一级毛片 | 青娱乐网| 一区二区亚洲 | 欧美精品一区二区三区一线天视频 | 免费特级黄毛片 | 97精品久久 | 拍拍无遮挡人做人爱视频免费观看 | 一本色道精品久久一区二区三区 | 亚洲人免费视频 | 国产综合久久久久久鬼色 | 国产三级精品在线 | 草草成人 | 一区二区三区在线观看免费 | av免费观看在线 | 国产毛片精品 | 精品国产乱码久久久久久久软件 | 国产一区二区在线免费观看 | 久久精品欧美一区二区三区麻豆 | 日韩免费在线观看视频 | 国产精品国产三级国产aⅴ入口 | 中文字幕在线免费视频 | 9l蝌蚪porny中文自拍 | 亚洲动漫在线观看 | 久久免费视频网 | 久久999 | 日韩高清中文字幕 | 久久国产电影 | 国产免费一区二区 | 蜜桃视频在线观看www社区 | 亚洲欧美日韩在线一区 | 日韩av在线一区二区三区 | 黄色天堂在线观看 | 91精品久久久久久久久久 | 亚洲综合在线一区 | 91视频精选 | 一区二区亚洲 | 久久久a | 在线一区二区三区做爰视频网站 | 久久亚洲一区 | 黑人巨大精品欧美一区二区小视频 | 国产在线小视频 | 综合久久网 | 日本爽快片毛片 | 在线国产视频 | 一区二区视频 | 亚洲a在线观看 | 午夜国产视频 | 久久一区二区精品 | 三级成人在线 | 午夜影视| 久久久精品高清 | 国产乱码一区二区三区在线观看 | 精品久 | 四虎成人在线视频 | 在线免费黄色 | 国产视频中文字幕 | 黄网站在线播放 | 日韩中文字幕在线免费观看 | 荷兰欧美一级毛片 | 日韩午夜激情视频 | 久久久精品国产 | 精精国产xxxx视频在线 | 国产情品 | 日韩一日 |