青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

windows核心編程--虛擬內(nèi)存

Wi n d o w s提供了3種進(jìn)行內(nèi)存管理的方法,它們是:
虛擬內(nèi)存,最適合用來(lái)管理大型對(duì)象或結(jié)構(gòu)數(shù)組。

內(nèi)存映射文件,最適合用來(lái)管理大型數(shù)據(jù)流(通常來(lái)自文件)以及在單個(gè)計(jì)算機(jī)上運(yùn)行的多個(gè)進(jìn)程之間共享數(shù)據(jù)。

內(nèi)存堆棧,最適合用來(lái)管理大量的小對(duì)象。


虛擬內(nèi)存的狀態(tài)
Wi n d o w s函數(shù)G l o b a l M e m o r y S t a t u s可用于檢索關(guān)于當(dāng)前內(nèi)存狀態(tài)的動(dòng)態(tài)信息:
VOID GlobalMemoryStatus(LPMEMORYSTATUS pmst);
如果希望應(yīng)用程序在內(nèi)存大于4 G B的計(jì)算機(jī)上運(yùn)行,或者合計(jì)交換文件的大小大于4 G B,那么可以使用新的G l o b a l M e m o r y S t a t u s E x函數(shù):
BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX pmst);

確定地址空間的狀態(tài)
Wi n d o w s提供了一個(gè)函數(shù),可以用來(lái)查詢(xún)地址空間中內(nèi)存地址的某些信息(如大小,存儲(chǔ)器類(lèi)型和保護(hù)屬性等)。
這個(gè)函數(shù)稱(chēng)為Vi r t u a l Q u e r y:
DWORD VirtualQuery(
   LPCVOID pvAddress,
   PMEMORY_BASIC_INFORMATION pmbi,
   DWORD dwLength);
Wi n d o w s還提供了另一個(gè)函數(shù),它使一個(gè)進(jìn)程能夠查詢(xún)另一個(gè)進(jìn)程的內(nèi)存信息:
DWORD VirtualQueryEx(
   HANDLE hProcess,
   LPCVOID pvAddress,
   PMEMORY_BASIC_INFORMATION pmbi,
   DWORD dwLength);
這兩個(gè)函數(shù)基本相同,差別在于使用Vi r t u a l Q u e r y E x時(shí),可以傳遞你想要查詢(xún)的地址空間信息的進(jìn)程的句柄。調(diào)試程序和其他實(shí)用程序使用這個(gè)函數(shù)最多,幾乎所有的應(yīng)用程序都只需要調(diào)用Vi r t u a l Q u e r y函數(shù)。
為了獲得完整的內(nèi)存信息,我創(chuàng)建了一個(gè)函數(shù),即V M Q u e r y:
BOOL VMQuery(
   HANDLE hProcess,
   PVOID pvAddress,
   PVMQUERY pVMQ);
系統(tǒng)信息

許多操作系統(tǒng)的值是根據(jù)主機(jī)而定的,比如頁(yè)面的大小,分配粒度的大小等。這些值決不應(yīng)該用硬編碼的形式放入你的源代碼。相反,你始終都應(yīng)該在進(jìn)程初始化的時(shí)候檢索這些值,并在你的源代碼中使用檢索到的值。G e t S y s t e m I n f o函數(shù)將用于檢索與主機(jī)相關(guān)的值:

 

VOID GetSystemInfo(LPSYSTEM_INFO psinf);


必須傳遞S Y S T E M _ I N F O結(jié)構(gòu)的地址給這個(gè)函數(shù)。這個(gè)函數(shù)將初始化所有的結(jié)構(gòu)成員然后返回。下面是S Y S T E M _ I N F O數(shù)據(jù)結(jié)構(gòu)的樣子。

 

typedef  struct  _SYSTEM_INFO
{
   union
   
{
      DWORD dwOemId;  
// Obsolete, do not use
       struct  
      
{
         WORD wProcessorArchitecture;
         WORD wReserved;
      }
;
   }
;
   DWORD     dwPageSize;
   LPVOID    lpMinimumApplicationAddress;
   LPVOID    lpMaximumApplicationAddress;
   DWORD_PTR dwActiveProcessorMask;
   DWORD     dwNumberOfProcessors;
   DWORD     dwProcessorType;
   DWORD     dwAllocationGranularity;
   WORD      wProcessorLevel;
   WORD      wProcessorRevision;
}
 SYSTEM_INFO,  * LPSYSTEM_INFO;


當(dāng)系統(tǒng)引導(dǎo)時(shí),它要確定這些成員的值是什么。對(duì)于任何既定的系統(tǒng)來(lái)說(shuō),這些值總是相同的,因此決不需要為任何既定的進(jìn)程多次調(diào)用該函數(shù)。

表14-1 與內(nèi)存有關(guān)的成員函數(shù)

成員名 描述
d w P a g e S i z e 用于顯示C P U的頁(yè)面大小。在x86 CPU上,這個(gè)值是4 0 9 6字節(jié)。在Alpha CPU 上,這個(gè)值是8 1 9 2字節(jié)。在I A - 6 4上,這個(gè)值是8 1 9 2字節(jié)
l p M i n i m u m A p p l i c a t i o n A d d r e s s 用于給出每個(gè)進(jìn)程的可用地址空間的最小內(nèi)存地址。在Windows 98上,這個(gè)值是4 194 304,或0 x 0 0 4 0 0 0 0 0,因?yàn)槊總€(gè)進(jìn)程的地址空間中下面的4 M B是不能使用的。在Windows 2000上,這個(gè)值是65 536或0 x 0 0 0 1 0 0 0 0,因?yàn)槊總€(gè)進(jìn)程的地址空間中開(kāi)頭的6 4 K B總是空閑的
l p M a x i m u m A p p l i c a t i o n A d d r e s s 用于給出每個(gè)進(jìn)程的可用地址空間的最大內(nèi)存地址。在Windows 98 上,這個(gè)地址是2 147 483 647或0 x 7 F F F F F F F,因?yàn)楣蚕韮?nèi)存映射文件區(qū)域和共享操作系統(tǒng)代碼包含在上面的2 GB分區(qū)中。在Windows 2000上,這個(gè)地址是內(nèi)核方式內(nèi)存開(kāi)始的地址,它不足6 4 K B
d w A l l o c a t i o n G r a n u l a r i t y 顯示保留的地址空間區(qū)域的分配粒度。截止到撰寫(xiě)本書(shū)時(shí),在所有Wi n d o w s平臺(tái)上,這個(gè)值都是65536

該結(jié)構(gòu)的其他成員與內(nèi)存管理毫無(wú)關(guān)系,為了完整起見(jiàn),下面也對(duì)它們進(jìn)行了介紹(見(jiàn)表1 4 - 2)。

 

表14-2 與內(nèi)存無(wú)關(guān)的成員函數(shù)

成員名 描述
d w O e m I d 已作廢,不引用
W R e d e r v e d 保留供將來(lái)使用,不引用
d w N u m b e r O f P r o c e s s o r s 用于指明計(jì)算機(jī)中的C P U數(shù)目
d w A c t i v e P r o c e s s o r M a s k 一個(gè)位屏蔽,用于指明哪個(gè)C P U是活動(dòng)的(允許運(yùn)行線程)
d w P r o c e s s o r Ty p e 只用于Windows 98,不用于Windows 2000,用于指明處理器的類(lèi)型,如Intel 386、4 8 6或P e n t i u m
w P r o c e s s o r A r c h i t e c t u r e 只用于Windows 2000,不用于Windows 98,用于指明處理的結(jié)構(gòu),如I n t e l、A l p h a、Intel 64位或Alpha 64位
w P r o c e s s o r L e v e l 只用于Windows 2000,不用于Windows 98,用于進(jìn)一步細(xì)分處理器的結(jié)構(gòu),如用于設(shè)定Intel Pentium Pro或Pentium II
w P r o c e s s o r R e v i s i o n 只用于Windows 2000 ,不用于Windows 98,用于進(jìn)一步細(xì)分處理器的級(jí)別

在地址空間中保留一個(gè)區(qū)域

通過(guò)調(diào)用Vi r t u a l A l l o c函數(shù),可以在進(jìn)程的地址空間中保留一個(gè)區(qū)域:

 

PVOID VirtualAlloc(
PVOID pvAddress,
SIZE_T dwSize,
DWORD fdwAllocationType,
DWORD fdwProtect);

第一個(gè)參數(shù)p v A d d r e s s包含一個(gè)內(nèi)存地址,用于設(shè)定想讓系統(tǒng)將地址空間保留在什么地方。在大多數(shù)情況下,你為該參數(shù)傳遞M U L L。它告訴Vi r t u a l A l l o c,保存著一個(gè)空閑地址區(qū)域的記錄的系統(tǒng)應(yīng)該將區(qū)域保留在它認(rèn)為合適的任何地方。系統(tǒng)可以從進(jìn)程的地址空間的任何位置來(lái)保留一個(gè)區(qū)域,因?yàn)椴荒鼙WC系統(tǒng)可以從地址空間的底部向上或者從上面向底部來(lái)分配各個(gè)區(qū)域。可以使用M E M _ TO P _ D O W N標(biāo)志來(lái)說(shuō)明該分配方式。如果Vi r t u a l A l l o c函數(shù)能夠滿(mǎn)足你的要求,那么它就返回一個(gè)值,指明保留區(qū)域的基地址。如果傳遞一個(gè)特定的地址作為Vi r t u a l A l l o c的p v A d d r e s s 參數(shù),那么該返回值與傳遞給Vi r t u a l A l l o c的值相同,并被圓整為(如果需要的話(huà)) 6 4 K B邊界值。

Vi r t u a l A l l o c函數(shù)的第二個(gè)參數(shù)是d w S i z e,用于設(shè)定想保留的區(qū)域的大小(以字節(jié)為計(jì)量單位)。由于系統(tǒng)保留的區(qū)域始終必須是C P U頁(yè)面大小的倍數(shù),因此,如果試圖保留一個(gè)跨越6 2 K B的區(qū)域,結(jié)果就會(huì)在使用4 KB、8 KB或16 KB頁(yè)面的計(jì)算機(jī)上產(chǎn)生一個(gè)跨越6 4 K B的區(qū)域。

Vi r t u a l A l l o c函數(shù)的第三個(gè)參數(shù)是f d w A l l o c a t i o n Ty p e,它能夠告訴系統(tǒng)你想保留一個(gè)區(qū)域還是提交物理存儲(chǔ)器(這樣的區(qū)分是必要的,因?yàn)閂i r t u a l A l l o c函數(shù)也可以用來(lái)提交物理存儲(chǔ)器)。若要保留一個(gè)地址空間區(qū)域,必須傳遞M E M _ R E S E RV E標(biāo)識(shí)符作為F d w A l l o c a t i o n Ty p e參數(shù)的值。


最后一個(gè)參數(shù)是f d w P r o t e c t,用于指明應(yīng)該賦予該地址空間區(qū)域的保護(hù)屬性。與該區(qū)域相關(guān)聯(lián)的保護(hù)屬性對(duì)映射到該區(qū)域的已提交內(nèi)存沒(méi)有影響。無(wú)論賦予區(qū)域的保護(hù)屬性是什么,如果沒(méi)有提交任何物理存儲(chǔ)器,那么訪問(wèn)該范圍中的內(nèi)存地址的任何企圖都將導(dǎo)致該線程引發(fā)一個(gè)訪問(wèn)違規(guī)。

在保留區(qū)域中的提交存儲(chǔ)器

當(dāng)保留一個(gè)區(qū)域后,必須將物理存儲(chǔ)器提交給該區(qū)域,然后才能訪問(wèn)該區(qū)域中包含的內(nèi)存地址。系統(tǒng)從它的頁(yè)文件中將已提交的物理存儲(chǔ)器分配給一個(gè)區(qū)域。物理存儲(chǔ)器總是按頁(yè)面邊界和頁(yè)面大小的塊來(lái)提交的。

若要提交物理存儲(chǔ)器,必須再次調(diào)用Vi r t u a l A l l o c函數(shù)。不過(guò)這次為f d w A l l o c a t i o n Ty p e參數(shù)傳遞的是M E M _ C O M M I T標(biāo)志,而不是M E M _ R E S E RV E標(biāo)志。傳遞的頁(yè)面保護(hù)屬性通常與調(diào)用Vi r t u a l A l l o c來(lái)保留區(qū)域時(shí)使用的保護(hù)屬性相同(大多數(shù)情況下是PA G E _ R E A D W R I T E),不過(guò)也可以設(shè)定一個(gè)不同的保護(hù)屬性。

在已保留的區(qū)域中,你必須告訴Vi r t u a l A l l o c函數(shù),你想將物理存儲(chǔ)器提交到何處,以及要提交多少物理存儲(chǔ)器。為了做到這一點(diǎn),可以在p v A d d r e s s參數(shù)中設(shè)定你需要的內(nèi)存地址,并在d w S i z e參數(shù)中設(shè)定物理存儲(chǔ)器的數(shù)量(以字節(jié)為計(jì)量單位)。注意,不必立即將物理存儲(chǔ)器提交給整個(gè)區(qū)域。
同時(shí)進(jìn)行區(qū)域的保留和內(nèi)存的提交

有時(shí)你可能想要在保留區(qū)域的同時(shí),將物理存儲(chǔ)器提交給它。只需要一次調(diào)用Vi r t u a l A l l o c函數(shù)就能進(jìn)行這樣的操作,如下所示:

 

PVOID pvMem  =  VirtualAlloc(NULL,  99   *   1024 ,   MEM_RESERVE  |  MEM_COMMIT, PAGE_READWRITE);


這個(gè)函數(shù)調(diào)用請(qǐng)求保留一個(gè)99 KB的區(qū)域,并且將99 KB的物理存儲(chǔ)器提交給它。當(dāng)系統(tǒng)處理這個(gè)函數(shù)調(diào)用時(shí),它首先要搜索你的進(jìn)程的地址空間,找出未保留的地址空間中一個(gè)地址連續(xù)的區(qū)域,它必須足夠大,能夠存放100 KB(在4 KB頁(yè)面的計(jì)算機(jī)上)或104 KB(在8 KB頁(yè)面的計(jì)算機(jī)上)。

系統(tǒng)之所以要搜索地址空間,原因是已將p v A d d r e s s參數(shù)設(shè)定為N U L L。如果為p v A d d r e s s設(shè)定了內(nèi)存地址,系統(tǒng)就要查看在該內(nèi)存地址上是否存在足夠大的未保留地址空間。如果系統(tǒng)找不到足夠大的未保留地址空間,Vi r t u a l A l l o c將返回N U L L,

如果能夠保留一個(gè)合適的區(qū)域,系統(tǒng)就將物理存儲(chǔ)器提交給整個(gè)區(qū)域。無(wú)論是該區(qū)域還是提交的內(nèi)存,都將被賦予PA G E _ R E A D W R I T E保護(hù)屬性。

最后需要說(shuō)明的是,Vi r t u a l A l l o c將返回保留區(qū)域和提交區(qū)域的虛擬地址,然后該虛擬地址被保存在p v M e m變量中。如果系統(tǒng)無(wú)法找到足夠大的地址空間,或者不能提交該物理存儲(chǔ)器,Vi r t u a l A l l o c將返回N U L L。
回收虛擬內(nèi)存和釋放地址空間區(qū)域

若要回收映射到一個(gè)區(qū)域的物理存儲(chǔ)器,或者釋放這個(gè)地址空間區(qū)域,可調(diào)用Vi r t u a l F r e e函數(shù):

 

BOOL VirtualFree(
LPVOID pvAddress,
SIZE_T dwSize,
DWORD fdwFreeType);

改變保護(hù)屬性

雖然實(shí)踐中很少這樣做,但是可以改變已經(jīng)提交的物理存儲(chǔ)器的一個(gè)或多個(gè)頁(yè)面的保護(hù)屬性。

若要改變內(nèi)存頁(yè)面的保護(hù)屬性,可以調(diào)用Vi r t u a l P r o t e c t函數(shù):

 

    BOOL VirtualProtect(
   PVOID pvAddress,
   SIZE_T dwSize,
   DWORD flNewProtect,
   PDWORD pflOldProtect);


當(dāng)然,保護(hù)屬性是與內(nèi)存的整個(gè)頁(yè)面相關(guān)聯(lián)的,而不是賦予內(nèi)存的各個(gè)字節(jié)的。因此,如果要使用下面的代碼來(lái)調(diào)用4 KB 頁(yè)面的計(jì)算機(jī)上的Vi r t u a l P r o t e c t函數(shù),其結(jié)果是把PA G E _ N O A C C E S S保護(hù)屬性賦予內(nèi)存的兩個(gè)頁(yè)面:

 

VirtualProtect(pvRgnBase + (3 * 1024), 2 * 1024,
PAGE_NOACCESS, &flOldProtect);

清除物理存儲(chǔ)器的內(nèi)容


為了說(shuō)明內(nèi)存的內(nèi)容已經(jīng)被清除,我們必須對(duì)系統(tǒng)的R A M提出大量的使用需求。若要進(jìn)行這項(xiàng)操作,可以分3步來(lái)進(jìn)行:

1) 調(diào)用G l o b a l M e m o r y S t a t u s函數(shù),獲取計(jì)算機(jī)中R A M的總?cè)萘俊?/font>

2) 調(diào)用Vi r t u a l A l l o c函數(shù),提交該數(shù)量的內(nèi)存。這項(xiàng)操作的運(yùn)行速度非常快,因?yàn)樵谶M(jìn)程試圖訪問(wèn)頁(yè)面之前,系統(tǒng)實(shí)際上并不為該內(nèi)存分配R A M。

3) 調(diào)用Z e r o M e m o r y函數(shù),使新提交的頁(yè)面可以被訪問(wèn)。這將給系統(tǒng)的R A M帶來(lái)沉重的負(fù)擔(dān),導(dǎo)致當(dāng)前正在R A M中的某些頁(yè)面被寫(xiě)入頁(yè)文件。

如果用戶(hù)指明該數(shù)據(jù)將在以后被訪問(wèn),那么該數(shù)據(jù)將不被清除,并且在以后訪問(wèn)該數(shù)據(jù)時(shí)將數(shù)據(jù)轉(zhuǎn)入R A M。但是,如果用戶(hù)指明以后將不再訪問(wèn)該數(shù)據(jù),那么數(shù)據(jù)將被清除,并且系統(tǒng)不把數(shù)據(jù)寫(xiě)入頁(yè)文件,這樣就可以提高應(yīng)用程序的運(yùn)行性能。



 

posted on 2006-09-20 18:12 夢(mèng)在天涯 閱讀(3641) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Windows API

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類(lèi)

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811983
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              一本一本久久a久久精品综合麻豆| 欧美激情一区在线| 亚洲欧美日韩精品在线| 国产精品久久一卡二卡| 午夜亚洲视频| 欧美一级黄色录像| 亚洲第一中文字幕| 亚洲精品乱码久久久久| 欧美激情女人20p| 亚洲午夜高清视频| 日韩午夜av在线| 这里是久久伊人| 亚洲视频一二三| 激情综合在线| 亚洲欧洲久久| 国产伦精品一区二区三区免费| 久久精品国产免费观看| 久久精品官网| 中日韩美女免费视频网址在线观看| 一区二区三区视频观看| 精品白丝av| 一本到12不卡视频在线dvd| 国产欧美日韩一区二区三区在线观看| 久久婷婷综合激情| 欧美日韩亚洲一区在线观看| 久久久久国产一区二区| 欧美精品在线一区二区| 久久一区精品| 欧美亚韩一区| 欧美激情一区在线观看| 国产精品视频午夜| 亚洲欧洲精品一区二区精品久久久 | 欧美日韩精品三区| 久久精品视频在线观看| 欧美日韩国产成人在线| 美女免费视频一区| 国产欧美日韩在线播放| 亚洲另类视频| 亚洲黄色成人| 久久精品女人| 欧美一级网站| 国产精品久久久久久久久久免费看 | 一区二区久久| 麻豆精品网站| 久久综合色天天久久综合图片| 欧美日韩国产免费观看| 欧美福利在线| 狠狠色丁香婷婷综合久久片| 亚洲欧美不卡| 亚洲欧美精品伊人久久| 欧美精品一区在线发布| 亚洲黄色尤物视频| 亚洲福利在线视频| 久久一区二区三区四区五区| 久久久999精品视频| 国产精品一二一区| 亚洲午夜av| 欧美一二三区在线观看| 国产精品mv在线观看| 亚洲人成在线观看网站高清| 亚洲欧洲精品一区二区| 久久日韩粉嫩一区二区三区| 久色婷婷小香蕉久久| 尤物九九久久国产精品的分类| 亚洲欧美日韩在线| 久久丁香综合五月国产三级网站| 国产精品一级二级三级| 亚洲欧美国产视频| 久久免费观看视频| 亚洲激情网站| 一区二区在线观看av| 久久国产精品高清| 久久久国产成人精品| 国产一区二区三区精品久久久| 欧美亚洲免费电影| 麻豆精品传媒视频| 亚洲精品一区二区三区在线观看| 欧美~级网站不卡| 亚洲人屁股眼子交8| 亚洲伊人色欲综合网| 欧美午夜精品久久久久免费视| 在线中文字幕不卡| 久久精品国产综合精品| 一区二区视频欧美| 欧美激情综合色| 亚洲一级网站| 老司机午夜精品视频在线观看| 亚洲欧洲日产国产综合网| 欧美成人一二三| 一本久久知道综合久久| 久久www成人_看片免费不卡| 亚洲国产精彩中文乱码av在线播放| 欧美r片在线| 亚洲午夜羞羞片| 久久夜色精品亚洲噜噜国产mv| 亚洲欧洲日本mm| 国产精品毛片a∨一区二区三区|国 | 亚洲一区二区免费看| 久久人人爽人人爽| 在线视频亚洲欧美| 国产亚洲va综合人人澡精品| 鲁大师影院一区二区三区| 中文av字幕一区| 欧美成人精品在线视频| 一本色道88久久加勒比精品| 国产视频观看一区| 欧美高清在线视频| 久久久.com| 亚洲无限乱码一二三四麻| 欧美高清视频www夜色资源网| 亚洲免费网址| 亚洲毛片一区二区| 今天的高清视频免费播放成人| 欧美激情一区二区三级高清视频 | 久久综合国产精品台湾中文娱乐网| av成人毛片| 伊人男人综合视频网| 国产精品免费一区豆花| 欧美大片免费观看在线观看网站推荐| 亚洲欧美在线x视频| 亚洲精品视频免费观看| 免费在线观看精品| 久久精品国产v日韩v亚洲| 中文国产一区| 亚洲精品乱码| 亚洲国产精品999| 国产一区二区中文| 国产精品丝袜91| 国产精品二区在线| 欧美日韩亚洲网| 欧美日韩日本视频| 欧美日本高清| 欧美日韩成人在线播放| 欧美肥婆bbw| 欧美福利在线观看| 欧美成年人视频网站| 久久久精品日韩欧美| 欧美在线3区| 亚洲系列中文字幕| 久久精品国产清高在天天线| 亚洲人成7777| 亚洲日本中文字幕| 亚洲黄色成人久久久| 亚洲国产日韩欧美一区二区三区| 狠久久av成人天堂| 尤物网精品视频| 亚洲国产福利在线| 亚洲美女黄网| 夜夜爽av福利精品导航 | 亚洲人成人99网站| 99在线|亚洲一区二区| 一区二区三区欧美在线观看| 一本色道久久综合亚洲精品不 | 欧美成人精品一区| 亚洲国产欧美另类丝袜| 日韩视频不卡中文| 一区二区三区视频在线播放| 亚洲伊人色欲综合网| 亚洲欧美国产精品桃花| 欧美亚洲免费高清在线观看| 久久久久国产一区二区| 久久综合中文字幕| 欧美日韩国产系列| 国产麻豆精品theporn| 国内精品视频在线播放| 亚洲高清三级视频| 亚洲少妇诱惑| 午夜在线不卡| 亚洲大胆女人| 一区二区三区欧美在线| 香蕉乱码成人久久天堂爱免费 | 亚洲午夜在线观看| 久久久999精品视频| 欧美精品www在线观看| 国产精品毛片| 最新国产の精品合集bt伙计| 亚洲天堂av综合网| 麻豆精品网站| 一本色道久久综合亚洲精品不卡 | 亚洲国产一区在线观看| 亚洲一区二区毛片| 欧美成人免费小视频| 国产精品美女诱惑| 亚洲精品永久免费| 久久精品国产亚洲aⅴ| 亚洲精品精选| 久久久久九九九九| 欧美午夜一区二区| 亚洲日本一区二区三区| 久久精品亚洲一区二区| 亚洲国产一区二区视频| 久久精品二区亚洲w码| 国产精品白丝jk黑袜喷水| 亚洲国产精品高清久久久| 欧美一区中文字幕| 一区二区成人精品 | 久久蜜桃精品| 国产手机视频一区二区| 亚洲视频综合| 亚洲国产你懂的|