亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

驅(qū)動(dòng)程序

驅(qū)動(dòng)程序一般指的是設(shè)備驅(qū)動(dòng)程序(DeviceDriver),是一種可以使計(jì)算機(jī)和設(shè)備進(jìn)行相互通信的特殊程序。相當(dāng)于硬件的接口,操作系統(tǒng)只有通過這個(gè)接口,才能控制硬件設(shè)備的工作,假如某設(shè)備的驅(qū)動(dòng)程序未能正確安裝,便不能正常工作。因此,驅(qū)動(dòng)程序被比作“硬件的靈魂”、“硬件的主宰”、“硬件和系統(tǒng)之間的橋梁”等。
  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語言的訪問設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫提供兩個(gè)助手類來使獲得對(duì)該接口的訪問容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個(gè)小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序對(duì)這個(gè)對(duì)象的訪問通過調(diào)用KIrp::Mdl來實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

  • 24c16讀寫驅(qū)動(dòng)程序

    24c16讀寫驅(qū)動(dòng)程序,//=-------------------------------------------------------------------------------/*模塊調(diào)用:讀數(shù)據(jù):read(unsigned int address)寫數(shù)據(jù):write(unsigned int address,unsigned char dd)   dd為要寫的 數(shù)據(jù)字節(jié)*///------------------------------------------------------------------------------ sbit sda=P3^0;sbit scl=P3^1; sbit a0=ACC^0;                  //定義ACC的位,利用ACC操作速度最快sbit a1=ACC^1;sbit a2=ACC^2;sbit a3=ACC^3;sbit a4=ACC^4;sbit a5=ACC^5;sbit a6=ACC^6;sbit a7=ACC^7; //------------------------------------------------------------------------------#pragma disablevoid s24(void)                 //起始函數(shù){_nop_();    scl=0;     sda=1;    scl=1;    _nop_();    sda=0;    _nop_();    _nop_();    scl=0;     _nop_();    _nop_();    sda=1;} //------------------------------------------------------------------------------#pragma disablevoid p24(void)                 //停止函數(shù){sda=0;    scl=1;    _nop_();    _nop_();    sda=1;} //-----------------------------------------------------------------------------#pragma disableunsigned char rd24(void) /////////////////從24c16讀一字節(jié)數(shù)據(jù){       ACC=0x00;sda=1;scl=1;a7=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a6=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a5=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a4=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a3=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a2=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a1=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a0=sda;_nop_();_nop_();_nop_();_nop_();scl=0;sda=1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0; /// ///////////////24c16的一位回答位。return(ACC);}//------------------------------------------------------------------------------#pragma disablevoid wd24(unsigned char dd) ////////////////向24c16寫一字節(jié)數(shù)據(jù){      sda=1;ACC=dd;sda=a7;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a6;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a5;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a4;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a3;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a2;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a0;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=0;scl=1;//scl=0;(在下面程序中)}//---------------------------------------------------------------------------#pragma disableunsigned char read(unsigned int address){unsigned char dd;    s24();                        ////////////////////////開始條件    wd24(0xa0);                /////////////////////////寫器件地址(寫命令)     _nop_();_nop_();_nop_();_nop_();      scl=0;                        ///////////////////////////////////接收器件地址確認(rèn)信號(hào)    wd24(address);                //////////////////////////// 寫數(shù)據(jù)地址    _nop_();_nop_();_nop_();_nop_();    scl=0;s24();                             ///////////////////////////////////開始條件    wd24(0xa1);                 /////////////////////////////寫器件地址(讀命令)    scl=0;    dd=rd24();              //////////////////////////////////讀 一字節(jié)    p24();                   ////////////////////////////////////停止條件    return(dd);}//------------------------------------------------------------------------------#pragma disablevoid write(unsigned int address,unsigned char dd){s24();                        /////////////////開始條件    wd24(0xa0);            ////////////////////////寫器件地址;    scl=0;     wd24(address);              /////////////////////寫數(shù)據(jù)地址    scl=0;    wd24(dd);                  //////////////////////////寫dd數(shù)據(jù)    scl=0;    p24();                      /////////////////////////停止條件;  }          

    標(biāo)簽: 24c16 讀寫 驅(qū)動(dòng)程序

    上傳時(shí)間: 2013-11-18

    上傳用戶:墻角有棵樹

  • I2C總線驅(qū)動(dòng)程序

    1 /**————————————————————2 〖說明〗I2C總線驅(qū)動(dòng)程序(用兩個(gè)普通IO模擬I2C總線)3 包括100Khz(T=10us)的標(biāo)準(zhǔn)模式(慢速模式)選擇,4 和400Khz(T=2.5us)的快速模式選擇,5 默認(rèn)11.0592Mhz的晶振。6 〖文件〗PCF8563T.C ﹫2001/11/2 77 〖作者〗龍嘯九天 c51@yeah.net http://www.c51bbs.co /8 〖修改〗修改建議請(qǐng)到論壇公布 http://www.c51bbs.co m9 〖版本〗V1.00A Build 080310 —————————————————————*/1112 #ifndef SDA13 #define SDA P0_014 #define SCL P0_115 #endif1617 extern uchar SystemError;1819 #define uchar unsigned char20 #define uint unsigned int21 #define Byte unsigned char22 #define Word unsigned int23 #define bool bit24 #define true 125 #define false 02627 #define SomeNOP(); _nop_();_nop_();_nop_();_nop_();2829 /**--------------------------------------------------------------------------------30 調(diào)用方式:void I2CStart(void) ﹫2001/07/0 431 函數(shù)說明:私有函數(shù),I2C專用32 ---------------------------------------------------------------------------------*/33 void I2CStart(void)34 {35 EA=0;36 SDA=1; SCL=1; SomeNOP();//INI37 SDA=0; SomeNOP(); //START38 SCL=0;39 }4041 /**--------------------------------------------------------------------------------42 調(diào)用方式:void I2CStop(void) ﹫2001/07/0 443 函數(shù)說明:私有函數(shù),I2C專用44 ---------------------------------------------------------------------------------*/45 void I2CStop(void)46 {47 SCL=0; SDA=0; SomeNOP(); //INI48 SCL=1; SomeNOP(); SDA=1; //STOP49 EA=1;50 }5152 /**--------------------------------------------------------------------------------53 調(diào)用方式:bit I2CAck(void) ﹫2001/07/0 454 函數(shù)說明:私有函數(shù),I2C專用,等待從器件接收方的應(yīng)答55 ---------------------------------------------------------------------------------*/56 bool WaitAck(void)57 {58 uchar errtime=255;//因故障接收方無ACK,超時(shí)值為255。59 SDA=1;SomeNOP();60 SCL=1;SomeNOP();61 while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}}62 SCL=0;63 return true;

    標(biāo)簽: I2C 總線 驅(qū)動(dòng)程序

    上傳時(shí)間: 2014-04-11

    上傳用戶:xg262122

  • Linux設(shè)備驅(qū)動(dòng)程序第三版2.6

    Linux設(shè)備驅(qū)動(dòng)程序第三版

    標(biāo)簽: Linux 2.6 設(shè)備驅(qū)動(dòng) 程序

    上傳時(shí)間: 2013-11-06

    上傳用戶:jisujeke

  • USB轉(zhuǎn)串口驅(qū)動(dòng)程序 CH340 CH341

    USB 轉(zhuǎn)串口驅(qū)動(dòng)程序 CH340 CH341

    標(biāo)簽: CH USB 340 341

    上傳時(shí)間: 2013-11-20

    上傳用戶:liufei

  • micro2440之Linux驅(qū)動(dòng)程序的位置

    Mini2440/Micro2440之Linux系統(tǒng)各個(gè)驅(qū)動(dòng)程序的位置及其相應(yīng)的設(shè)備名

    標(biāo)簽: micro Linux 2440 驅(qū)動(dòng)程序

    上傳時(shí)間: 2013-11-18

    上傳用戶:youth25

  • AVR單片機(jī)驅(qū)動(dòng)程序源代碼_RF24L01

    AVR單片機(jī)驅(qū)動(dòng)程序源代碼_RF24L01

    標(biāo)簽: AVR 24 01 RF

    上傳時(shí)間: 2013-12-21

    上傳用戶:李彥東

  • C51單片機(jī)驅(qū)動(dòng)程序源代碼_RF24L01

    C51單片機(jī)驅(qū)動(dòng)程序源代碼_RF24L01

    標(biāo)簽: C51 24 01 RF

    上傳時(shí)間: 2014-12-30

    上傳用戶:冇尾飛鉈

  • USB轉(zhuǎn)串口驅(qū)動(dòng)程序安裝及使用說明

    USB轉(zhuǎn)串口驅(qū)動(dòng)程序安裝及使用說明

    標(biāo)簽: USB 轉(zhuǎn)串口 程序安裝 使用說明

    上傳時(shí)間: 2013-10-30

    上傳用戶:sklzzy

  • 驅(qū)動(dòng)程序超級(jí)寶典

    驅(qū)動(dòng)程序超級(jí)寶典

    標(biāo)簽: 驅(qū)動(dòng)程序 超級(jí) 寶典

    上傳時(shí)間: 2013-10-10

    上傳用戶:taa123456

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品v欧美精品∨日韩| 国产精品黄页免费高清在线观看| 精品91免费| 国内激情久久| 最新国产乱人伦偷精品免费网站| 亚洲国产精品久久91精品| 日韩小视频在线观看专区| 亚洲欧美日韩国产一区| 麻豆精品91| 国产女同一区二区 | 国产一区二区三区四区老人| 韩国女主播一区| 亚洲美女黄色片| 久久久久五月天| 国产精品久久久久久久久久久久久 | 欧美日韩国产综合视频在线观看中文| 欧美日韩mp4| 亚洲东热激情| 欧美亚洲尤物久久| 欧美日韩亚洲一区二区三区| 亚洲国产精品一区在线观看不卡| 亚洲欧美中文日韩在线| 欧美激情一区二区三区成人| 国产一区二区三区高清在线观看| 99re6热在线精品视频播放速度| 欧美一区二区视频在线| 欧美日韩精品一区二区三区| 一区福利视频| 久久精品国产2020观看福利| 国产精品久久久久久久久久直播 | 国产精品久久久久久久电影 | 国产精品女人网站| 一本久久综合| 欧美丰满高潮xxxx喷水动漫| 黄网动漫久久久| 久久国产精品毛片| 国产婷婷色综合av蜜臀av| 久久蜜桃精品| 欧美性色综合| 亚洲午夜性刺激影院| 欧美日韩mv| 9i看片成人免费高清| 欧美日本一区二区视频在线观看| 亚洲片区在线| 欧美四级电影网站| 中文精品视频| 国产日韩欧美a| 久久成人18免费观看| 精品成人在线视频| 欧美成人中文字幕| 日韩视频免费| 国产精品久久久一区二区三区| 亚洲欧美亚洲| 在线观看视频免费一区二区三区| 欧美成人综合网站| 一区二区三区高清在线观看| 欧美性猛交视频| 久久精品成人| 亚洲精品之草原avav久久| 欧美色精品在线视频| 亚洲欧美三级伦理| 韩国成人理伦片免费播放| 欧美肥婆在线| 性色av一区二区三区| 伊人天天综合| 国产精品欧美久久久久无广告| 久久久成人精品| 一区二区免费在线观看| 国产亚洲福利| 欧美日本精品| 久久午夜精品| 国产精品99久久久久久有的能看| 国产三级欧美三级日产三级99| 欧美激情一区二区久久久| 香蕉乱码成人久久天堂爱免费| 91久久午夜| 国语精品中文字幕| 欧美丝袜一区二区| 男同欧美伦乱| 久久成人免费网| 亚洲视频免费看| 亚洲国产精品一区二区三区| 国产精品另类一区| 欧美国产精品中文字幕| 欧美伊人久久| 亚洲欧美日韩综合国产aⅴ| 亚洲国产精品123| 国产日韩综合一区二区性色av| 欧美午夜大胆人体| 欧美韩国日本一区| 蜜臀99久久精品久久久久久软件| 午夜在线观看欧美| 亚洲一区在线视频| 久久久999国产| 亚洲综合导航| 亚洲午夜极品| 在线视频一区观看| 99精品国产在热久久婷婷| 亚洲韩国精品一区| 亚洲国产aⅴ天堂久久| 国模私拍视频一区| 国产一区91| 国产日产欧美精品| 国产裸体写真av一区二区| 国产精品女人毛片| 国产伦精品一区二区三区| 国产精品国产三级国产a| 国产精品jizz在线观看美国| 欧美日韩成人精品| 欧美三区在线| 国产精品国产三级国产专区53| 欧美日韩综合精品| 国产精品久久久久久久久久尿| 国产精品美女久久久久久免费| 国产精品美女| 国产亚洲在线观看| 一区二区三区自拍| 亚洲黄色av一区| 日韩一本二本av| 亚洲砖区区免费| 久久国产福利| 免费在线一区二区| 欧美视频二区36p| 国产人成精品一区二区三| 激情视频一区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品欧美一区二区三区| 亚洲色图自拍| 久久国产精品99精品国产| 免费不卡在线视频| 国产精品国产三级国产 | 久久超碰97中文字幕| 久久久一区二区三区| 欧美sm视频| 国产精品嫩草99av在线| 一区二区视频欧美| 亚洲美女在线一区| 久久国产精彩视频| 欧美激情一区二区三区全黄 | 榴莲视频成人在线观看| 欧美精品一区二区三区久久久竹菊| 欧美日韩国产经典色站一区二区三区| 欧美午夜不卡在线观看免费 | 欧美精品午夜视频| 国产免费成人av| 亚洲欧洲综合另类| 久久国内精品视频| 欧美色视频在线| 在线日韩电影| 欧美精品一区二区三区很污很色的| 欧美日韩国产色视频| 国产日韩欧美在线| 99在线精品视频在线观看| 久久久7777| 国产精品实拍| 99在线热播精品免费| 免费在线一区二区| 国产一区二区三区四区在线观看| 99国产精品私拍| 欧美不卡视频| 激情综合网激情| 欧美在线视频a| 国产精品国产三级国产a| 日韩午夜电影av| 欧美理论在线| 亚洲级视频在线观看免费1级| 欧美在线综合| 国产精品主播| 亚洲一区免费视频| 欧美日韩久久精品| 亚洲电影免费观看高清完整版| 久久国产加勒比精品无码| 国产伦精品免费视频 | 国产精品久久网| 99热这里只有精品8| 欧美—级a级欧美特级ar全黄| 亚洲第一在线| 欧美成熟视频| 亚洲精品专区| 欧美日韩国产bt| 一本久久综合亚洲鲁鲁| 欧美日韩国产经典色站一区二区三区| 91久久精品美女| 欧美精品国产精品| 99国产精品| 国产精品激情av在线播放| 亚洲男人的天堂在线aⅴ视频| 国产精品毛片va一区二区三区| 亚洲欧美另类在线| 国产欧美日韩在线观看| 欧美一级视频免费在线观看| 国产午夜精品美女视频明星a级| 久久精彩视频| 亚洲国产精品女人久久久| 欧美精品18videos性欧美| 亚洲网站视频| 国内精品嫩模av私拍在线观看 | 亚洲国产精品成人精品| 欧美另类女人| 欧美亚洲免费高清在线观看|