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

您的位置:首頁技術文章
文章詳情頁

《Undocumented Windows 2000 Secrets》翻譯 --- 第三章(2)

瀏覽:123日期:2023-08-27 13:35:30

第三章 編寫內核模式驅動程序

翻譯: Kendiv

更新: Tuesday, February 08, 2005

作為補充這里給出 DrvInfo.h 的內容:

// __________________________________________________________

//

// DrvInfo.h

// Driver Info Definitions V1.00

// 06-02-2000 Sven B. Schreiber

// sbs@orgon.com

// __________________________________________________________

#ifndef _DRVINFO_H_

#define _DRVINFO_H_

// =================================================================

// DISCLAIMER

// =================================================================

/*

This software is provided 'as is' and any express or implIEd

warranties, including, but not limited to, the implied warranties of

merchantability and fitness for a particular purpose are disclaimed.

In no event shall the author Sven B. Schreiber be liable for any

direct, indirect, incidental, special, exemplary, or consequential

damages (including, but not limited to, procurement of substitute

goods or services; loss of use, data, or profits; or business

interruption) however caused and on any theory of liability,

whether in contract, strict liability, or tort (including negligence

or otherwise) arising in any way out of the use of this software,

even if advised of the possibility of such damage.

*/

// =================================================================

// REVISION HISTORY

// =================================================================

/*

05-26-2000 V1.00 Original version (SBS).

*/

// =================================================================

// BASIC TYPES

// =================================================================

typedef UCHAR BYTE, *PBYTE, **PPBYTE;

typedef USHORT Word, *PWORD, **PPWORD;

typedef ULONG DWORD, *PDWORD, **PPDWORD;

typedef unsigned __int64 QWORD, *PQWORD, **PPQWORD;

typedef int BOOL, *PBOOL, **PPBOOL;

typedef void **PPVOID;

// -----------------------------------------------------------------

#define BYTE_ sizeof (BYTE)

#define WORD_ sizeof (WORD)

#define DWORD_ sizeof (DWORD)

#define QWORD_ sizeof (QWORD)

#define BOOL_ sizeof (BOOL)

#define PVOID_ sizeof (PVOID)

#define HANDLE_ sizeof (HANDLE)

#define PHYSICAL_ADDRESS_ sizeof (PHYSICAL_ADDRESS)

// =================================================================

// MacROS

// =================================================================

#define _DRV_DEVICE(_name) Device ## _name

#define _DRV_LINK(_name) DosDevices ## _name

#define _DRV_PATH(_name) . ## _name

// -----------------------------------------------------------------

#define _CSTRING(_text) #_text

#define CSTRING(_text) _CSTRING (_text)

#define _USTRING(_text) L##_text

#define USTRING(_text) _USTRING (_text)

#define PRESET_UNICODE_STRING(_symbol,_buffer)

UNICODE_STRING _symbol =

{

sizeof (USTRING (_buffer)) - sizeof (WORD),

sizeof (USTRING (_buffer)),

USTRING (_buffer)

};

// -----------------------------------------------------------------

#if DRV_VERSION_LOW < 10

#define _DRV_V2(_a,_b) _a ## .0 ## _b

#define _DRV_V2X(_a,_b) V ## _a ## .0 ## _b

#else // #if DRV_VERSION_LOW < 10

#define _DRV_V2(_a,_b) _a ## . ## _b

#define _DRV_V2X(_a,_b) V ## _a ## . ## _b

#endif // #if DRV_VERSION_LOW < 10 #else

#define DRV_V2(_a,_b) _DRV_V2(_a,_b)

#define DRV_V2X(_a,_b) _DRV_V2X(_a,_b)

// -----------------------------------------------------------------

#define _DRV_V4(_a,_b,_c) _a ## . ## _b ## .0. ## _c

#define DRV_V4(_a,_b,_c) _DRV_V4(_a,_b,_c)

// -----------------------------------------------------------------

#define DRV_V DRV_V2X (DRV_VERSION_HIGH,

DRV_VERSION_LOW)

#define DRV_VERSION DRV_V2 (DRV_VERSION_HIGH,

DRV_VERSION_LOW)

#define DRV_VERSION_QUAD DRV_V4 (DRV_VERSION_HIGH,

DRV_VERSION_LOW,

DRV_BUILD)

#define DRV_VERSION_BINARY ((DRV_VERSION_HIGH * 100)

+ DRV_VERSION_LOW)

// =================================================================

// DRIVER INFORMATION

// =================================================================

#define DRV_ID DRV_PREFIX.DRV_MODULE

#define DRV_ID_VERSION DRV_ID.DRV_VERSION_HIGH

#define DRV_FILENAME DRV_MODULE.DRV_EXTENSION

#define DRV_CAPTION DRV_NAME DRV_V

#define DRV_COMMENT DRV_DATE DRV_AUTHOR

// -----------------------------------------------------------------

#define DRV_DEVICE _DRV_DEVICE (DRV_MODULE)

#define DRV_LINK _DRV_LINK (DRV_MODULE)

#define DRV_PATH _DRV_PATH (DRV_MODULE)

#define DRV_EXTENSION sys

// -----------------------------------------------------------------

#define DRV_CLASS DRV_MODULE.DRV_VERSION_QUAD

#define DRV_ICON DRV_MODULE.Icon

// -----------------------------------------------------------------

#define DRV_COPYRIGHT Copyright xA9 DRV_YEAR

#define DRV_COPYRIGHT_EX DRV_COPYRIGHT DRV_COMPANY

// -----------------------------------------------------------------

#define DRV_DATE_US DRV_MONTH-DRV_DAY-DRV_YEAR

#define DRV_DATE_GERMAN DRV_DAY.DRV_MONTH.DRV_YEAR

#define DRV_DATE DRV_DATE_US

// =================================================================

// NT4 COMPATIBILITY

// =================================================================

#ifndef IRP_MJ_QUERY_POWER

#define IRP_MJ_QUERY_POWER 0x16

#endif

#ifndef IRP_MJ_SET_POWER

#define IRP_MJ_SET_POWER 0x17

#endif

#ifndef IRP_MJ_PNP_POWER

#define IRP_MJ_PNP_POWER 0x1B

#endif

////////////////////////////////////////////////////////////////////

#ifdef _RC_PASS_

////////////////////////////////////////////////////////////////////

// =================================================================

// HEADER FILES

// =================================================================

#include <winver.h>

// =================================================================

// VERSION INFO

// =================================================================

#define DRV_RC_VERSION

VS_VERSION_INFO VERSIONINFO

FILEVERSION DRV_VERSION_HIGH, DRV_VERSION_LOW, 0, DRV_BUILD

PRODUCTVERSION DRV_VERSION_HIGH, DRV_VERSION_LOW, 0, DRV_BUILD

FILEFLAGSMASK VS_FFI_FILEFLAGSMASK

FILEFLAGS 0

FILEOS VOS_NT

FILETYPE VFT_DRV

FILESUBTYPE VFT2_UNKNOWN

{

BLOCK 'StringFileInfo'

{

BLOCK '040904B0'

{

VALUE 'OriginalFilename', CSTRING (DRV_FILENAME)

VALUE 'InternalName', CSTRING (DRV_MODULE)

VALUE 'ProductName', CSTRING (DRV_NAME)

VALUE 'FileDescription', CSTRING (DRV_CAPTION)

VALUE 'CompanyName', CSTRING (DRV_COMPANY)

VALUE 'ProductVersion', CSTRING (DRV_VERSION_QUAD)

VALUE 'FileVersion', CSTRING (DRV_VERSION_QUAD)

VALUE 'LegalCopyright', CSTRING (DRV_COPYRIGHT_EX)

VALUE 'Comments', CSTRING (DRV_COMMENT)

}

}

BLOCK 'VarFileInfo'

{

VALUE 'Translation', 0x0409, 0x04B0

}

}

// =================================================================

// RESOURCES

// =================================================================

#define DRV_RC_ICON DRV_ICON ICON DRV_MODULE.ico

////////////////////////////////////////////////////////////////////

#endif // #ifdef _RC_PASS_

////////////////////////////////////////////////////////////////////

#endif // #ifndef _DRVINFO_H_

// =================================================================

// END OF FILE

// =================================================================

列表 3-3 列表 3-4 給出的驅動程序的 C 代碼中包含了幾乎所有 Kernel-mode Driver 都需要的基本代碼。我會盡量使該驅動向導有更好的可定制性。你可以自由的更改向導提供的模板文件。對于想保留原有代碼的人,下面的章節會為你提供該向導的一些內部細節的簡要介紹。

該向導生成的驅動模塊的進入點是 DriverEntry() 。像所有的 Windows 2000 模塊的進入點一樣,這個名字并不時必須的。你可以使用任何你喜歡的名稱,但是你必須告訴鏈接器你所使用的進入點名稱,通過鏈接器的命令行選項 /entry 可以做到這一點。對于前面提及的 TestDriver ,向導已經很好的完成了這項工作。在 w2k_wiz.tp 模板或生成的 TestDrv.dsp 文件中,你會在鏈接器的命令行中找到 /entry:”DriverEntry@8” 這樣的字符串。 @8 后綴表示 DriverEntry() 接受 8 個字節的參數(這些參數位于棧中),這和 列表 3-1 提供的 DriverEntry() 的原型一致:兩個指針參數,每個占據 32 個位,共使用 64 個二進制位,即 8 字節。

DriverEntry() 做的第一件事是調用 DriverInitialize() ,該函數將創建一個設備對象( Device Object )和該對象的一個符號鏈接( Symbolic link ),在稍后你可能在用戶模式的程序中使用該符號鏈接來與設備通訊。要想找到 IoCreateDevice() 和 IoCreateSymbolicLink() 所使用的名字就有些許的困難,因為它們都是依賴 DrvzInfo.h (位于本書光盤的 srccommoninclude 目錄)中的宏定義。如果你想更多的了解這個技巧,請參考 TestDrv.h (前面的 列表 3-4 已列出)中的 PROGRAM IDENTIFICATION 一節,并跟蹤形如 DRV_* 的定義,它們以多種方式成組的出現在 DrvInfo.h 中。例如,一個完整的 VERSIONINFO 資源就是由多個小的宏構成的。在別處,還定義了 DRV_DEVICE 和 DRV_LINK 常量,在這里,它們分別等價于 DeviceTestDrv 和 DosDeviceTestDrv 。注意,很多內核 API 函數,如 IoCreateDevice() 和 IoCreateSymbolickLinke() 不接受一個以零結尾的字符串,僅支持一個特殊的結構體 ---UNICODE_STRING ,該結構在第二章已經介紹過, 列表 3-5 再次給出了該結構的定義。定義于 DrvInfo.h 中的宏 ----PRESET_UNICODE_STRING (應用于 TestDrv.c 的 GLOBAL DATA Section )從一個簡單的 Unicode 字符串常量創建出一個靜態的 UNICODE_STRING 結構。這是針對 UNICODE_STRING 結構的一個方便的速記符號。

在成功的創建完設備對象及其符號鏈接后, DriverInitialize() 將設備對象指針和設備上下文( Device Context )的指針保存在一個靜態全局變量中。 Device Context 是設備的一個私有結構,該結構可以有任意的大小和結構。本書提供的驅動程序骨架附帶了一個簡單的 DEVICE_CONTEXT 結構,該結構定義于 TestDrv.h 中。該結構僅包含分別指向設備和設備驅動程序對象的兩個指針。你可以擴展該結構來保存設備驅動程序所特有的數據。系統針對驅動程序接收到的每個 I/O 請求包( I/O Request Packet, IRP )提供相應的 Device Context 。

在 DriverInitialize() 成功完成并返回后, DriverEntry() 將建立一個重要的數組,該數組由系統傳入,并做為驅動程序對象結構 ----pDriverObject 的一部分。該數組為驅動程序期望的所有 IRP 提供空間,同時 DriverEntry() 還為所有希望得到控制的 IRP 寫入對應的 CallBack 函數的指針。本書提供的驅動程序骨架遵循此種設計,它保存了一個 DriverDispatcher() 指針,并提供了可存放 28 個 IRP 的空間,如 3-2 所示。稍后, DriverDispatcher() 將決定需要注意那些類型的 IRP ,并針對所有不感興趣的 IRP 返回 STATUS_NOT_IMPLEMENTED 。需要注意的是, Windows NT 和 Windows 2000 的 IRP 處理例程數組的布局有一些微妙的差別。在 3-2 中,這種差別以黑體標識出來。

譯注:

在 Windows NT 中,大多數的 I/O 請求都是用 I/O 請求包( IRP )來表示的。在多數情況下, I/O 請求包可以從一個 I/O 系統組件轉移到另一組件。這種設計允許單個應用程序線程并行的管理多個 I/O 請求。 IRP 是一種數據結構,包含描述一個 I/O 請求的完整信息。

具體的細節,請參考《 Inside Windows 2000 》的第 9 章 I/O System

typedef struct _UNICODE_STRING

{

WORD Length;

WORD MaximumLength;

PWORD Buffer;

} UNICODE_STRING, *PUNICODE_STRING;

列表 3-5. 一個普遍存在的 Windows 2000 結構: UNICODE_STRING

元素

Windows NT 4.0

Windows 2000

0x00

IRP_MJ_CREATE

IRP_MJ_CREATE

0x01

IRP_MJ_CREATE_NAMED_PIPE

IRP_MJ_CREATE_NAMED_PIPE

0x02

IRP_MJ_CLOSE

IRP_MJ_CLOSE

0x03

IRP_MJ_READ

IRP_MJ_READ

0x04

IRP_MJ_WRITE

IRP_MJ_WRITE

0x05

IRP_MJ_QUERY_INFORMATION

IRP_MJ_QUERY_INFORMATION

0x06

IRP_MJ_SET_INFORMATION

IRP_MJ_SET_INFORMATION

0x07

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_EA

0x08

IRP_MJ_SET_EA

IRP_MJ_SET_EA

0x09

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_FLUSH_BUFFERS

0x0A

IRP_MJ_QUERY_VOLUME_INFORMATION

IRP_MJ_QUERY_VOLUME_INFORAMTION

0x0B

IRP_MJ_SET_VOLUME_INFORMATION

IRP_MJ_SET_VOLUME_INFORMATION

0x0C

IRP_MJ_DirectorY_CONTROL

IRP_MJ_DIRECTORY_CONTROL

0x0D

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

0x0E

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DEVICE_CONTROL

0x0F

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

0x10

IRP_MJ_SHUTDOWN

IRP_MJ_SHUTDOWN

0x11

IRP_MJ_LOCK_CONTROL

IRP_MJ_LOCK_CONTROL

0x12

IRP_MJ_CLEANUP

IRP_MJ_CLEANUP

0x13

IRP_MJ_CREATE_MAILSLOT

IRP_MJ_CREATE_MAILSLOT

0x14

IRP_MJ_QUERY_SECURITY

IRP_MJ_QUERY_SECURITY

0x15

IRP_MJ_SET_SECURITY

IRP_MJ_SET_SECURITY

0x16

IRP_MJ_QUERY_POWER

IRP_MJ_POWER

0x17

IRP_MJ_SET_POWER

IRP_MJ_SYSTEM_CONTROL

0x18

IRP_MJ_DEVICE_CHANGE

IRP_MJ_DEVICE_CHANGE

0x19

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_QUOTA

0x1A

IRP_MJ_SET_QUOTA

IRP_MJ_SET_QUOTA

0x1B

IRP_MJ_PNP_POWER

IRP_MJ_PNP

表 3-2. 數組中的每個 I/O 請求包的比較

在 IRP 數組建立好之后, DriverEntry() 將自己的 CallBack 函數 ----DriverUnload() 寫入驅動程序對象結構中,這將允許在運行時卸載該驅動程序。 DriverUnload() 函數只是簡單的銷毀由 DriverInitialize() 創建的所有對象(即設備對象和其符號鏈接)。在此之后,就可安全的將驅動程序從系統中移除。

每當一個模塊要求驅動程序做出相應時,就會調用 DriverDispatcher() 函數。因為,驅動程序能夠處理多個設備, Dispatcher 首先檢查那個設備應該響應該請求。本書提供的驅動程序骨架僅維護了一個設備,因此,僅需要在初始化時檢查從 IoCreateDevice() 接受到的設備對象指針是否一致。如果一致, DriverDispatcher() 將接收到的 IRP 向前傳遞,給之前的 DriverDispatcher() 函數,隨之傳遞的還有 DriverInitialize() 準備好的 Device Context 。當你擴展該驅動骨架以管理多個設備驅動程序時,你可能需要為每個設備編寫獨立的 IRP dispatcher 。 列表 3-3 中的 DeviceDispatcher() 函數只是一個示意性的實現,它僅能識別三種常見的請求: IRP_MJ_CREATE 、 IRP_MJ_CLEANUP 和 IRP_MJ_CLOSE ,并通過返回 STATUS_SUCCESS 來表示以處理該請求。這是使設備能夠正常打開、關閉的最小實現方式,對于其他的請求都將返回一個 STATUS_NOT_IMPLEMENTED 。

你可能想知道在 列表 3-3 的 DISCARDABLE FUNCTIONS 一節中出現的 #pragma alloc_text 的目的。 #pragma 指示符是將命令送往編譯器和鏈接器的有力手段。 alloc_text 命令表示將指定函數的代碼寫入可執行文件的非默認 section 中。默認情況下,所有程序代碼都位于 .text section 。然而,指示符 #pragma alloc_text(INIT,DriverEntry) 將使 DriverEntry() 的代碼保存在一個新的 section----INIT 中。驅動加載器可以識別這種指定的 section ,并在初始化之后丟掉該 section 。 DriverEntry() 和它的幫助函數 DriverInitialize() 僅在驅動程序啟動時會被調用一次;因此,當它們完成自己的工作后,就可安全的將它們從內存中移除。

現在驅動程序骨架就只剩下了資源腳本 ---TestDrv.rc ,如 列表 3-6 所示。該文件沒有太大價值,因為它僅引用了來自 DrvInfo.h 的宏 ----DRV_RC_VERSION 以及向導提供的幾個數據項來創建一個 VERSIONINFO 資源,另一個宏 ---DRV_RC_ICON 則等同于將 TestDrv.ico 加入 TesetDrv.sys 的 Resource Section 中的 ICON 聲明語句。

// TestDrv.rc

// 08-07-2000 <MyName>

// Copyright ?2000 <MyCompany>

#define _RC_PASS_

#define _TESTDRV_SYS_

#include 'TestDrv.h'

// =================================================================

// STANDARD RESOURCES

// =================================================================

DRV_RC_VERSION

DRV_RC_ICON

// =================================================================

// END OF FILE

// =================================================================

列表 3-6. 驅動程序骨架的資源腳本

標簽: Windows系統
主站蜘蛛池模板: 成人久久久久 | 久久免费精品视频 | 99精品免费观看 | 欧美精品一区自拍a毛片在线视频 | 99色播| 色综合天天天天做夜夜夜夜做 | 欧美成人第一页 | 日本成年人免费网站 | www.天天操 | 国产欧美一区二区三区在线看 | 成人免费一区二区三区视频网站 | sese综合| 欧美精品成人 | 中文成人无字幕乱码精品 | 国产一区二区三区四 | 久久久夜夜夜 | 91一区二区三区 | 国产精品久久久久久 | 国产精品99一区二区三区 | 久久精品国产99国产精品 | av国产精品| 在线一区二区三区做爰视频网站 | 欧美性网| 精品免费视频一区二区 | 久久精品手机视频 | 黄a免费 | 一区二区影视 | 欧美爱爱视频 | av大片 | av在线播放网址 | 日韩久久一区二区 | 欧美久久久久久久久久伊人 | av伊人网 | 综合久久综合久久 | 国产一区在线观看视频 | 美女久久 | 伊人亚洲| 久久国产成人午夜av影院宅 | 欧美日韩亚洲一区二区 | 成人亚洲电影 | 一级免费黄色免费片 | 九九热在线视频 | 午夜免费小视频 | 亚洲激情第一页 | 国产日韩一区二区三区 | 国产特级毛片aaaaaa毛片 | 久久久精品国产 | 国产精品黄网站在线观看 | 亚洲精品久久久久午夜 | 国产精品久久久久一区二区三区共 | 伊人一二三区 | 国产精品久久久久一区二区三区 | 91亚洲国产| 日韩3级 | 色噜噜狠狠狠综合曰曰曰88av | 国产精品成人在线观看 | 亚洲国产精品一区 | 91在线视频观看 | 嫩草私人影院 | 91精品久久 | 国产在线观看免费 | 麻豆久久久9性大片 | 国产欧美一区二区视频 | 国产精品亚洲成在人线 | 久久中文字幕一区 | 欧美精品成人一区二区三区四区 | 色女人的天堂 | 日本久久久亚洲精品 | 国产精品久久久久久久久久久新郎 | 91伊人 | 91精品国产91综合久久蜜臀 | 永久免费av | 色综合一区二区三区 | 精品99久久久久久 | 精品视频一区二区 | 国产精品一区二区三区免费视频 | 国产精品美女久久久久aⅴ国产馆 | 国产精品女教师av久久 | 99精品国产高清在线观看 | 成人免费大片黄在线播放 | 国产精品成人观看视频国产奇米 | 久久久久久国产精品 | www.成人在线视频 | 国产裸体永久免费视频网站 | 国产乱码精品一区二区三区中文 | 91久久精品一区二区三区 | 午夜电影网址 | 欧美三区视频 | 国产精品久久免费观看spa | 一级视频在线观看 | 亚洲v日韩v综合v精品v | 久久草视频 | 久久天堂 | 国产精品国产精品国产专区不片 | 一区二区三区在线免费观看 | 不卡日韩在线 | 日韩6699人妻熟女毛片 | 91免费版在线观看 | 蜜桃精品久久久久久久免费影院 | 伊人超碰| 欧美精品欧美精品系列 | 在线视频一二区 | 国产欧美综合在线 | 亚洲国产91 | 日韩久色 | 成人国产网站 | 欧美成视频 | 69av.com | a级毛片久久 | 成人av网页| 久久99精品久久久久久久青青日本 | 国产亚洲欧美一区二区 | 国产aⅴ一区二区 | 国产福利在线视频 | 亚洲 欧美 日韩在线 | 欧美视频网站 | 一级二级黄色大片 | 日韩不卡在线 | 一区二区三区亚洲精品国 | 欧美影| 亚洲欧美一区二区三区视频 | 午夜精品久久久久 | 精品国产一区二区三区久久久 | 一区二区三区四区在线 | 成人免费xxxxx在线视频软件 | 亚洲国产精久久久久久久 | 免费成人激情视频 | 成年无码av片在线 | 久久青 | 97精品超碰一区二区三区 | 北条麻妃一区二区免费播放 | 亚洲成人av在线播放 | 欧美成人一区二区三区 | 精品96久久久久久中文字幕无 | 日韩精品一区二区三区视频播放 | 久久久久久亚洲 | 欧美日韩a v | 久久国产亚洲精品 | 中字一区 | 91视频久久 | 欧美成年黄网站色视频 | 欧美国产免费 | 色综合天天综合网国产成人网 | 久久久久久毛片免费观看 | av在线免费观看网站 | 九九九视频精品 | 欧美视频精品 | 男人天堂999 | 日韩欧美一区二区三区四区 | 99国产精品久久久久久久 | 欧美激情一区二区三区蜜桃视频 | 亚洲欧美日韩一区 | 久久精品| 日韩免费视频一区二区 | 日韩在线欧美 | 一区二区精品在线 | 亚洲欧洲tv | 精品一区二区三区免费看 | 日韩中文字幕免费在线播放 | 黑人性dh | 国产精品久久a | av 一区二区三区 | 欧美性猛交一区二区三区精品 | 日产精品久久久一区二区 | 亚洲啊v在线 | 在线播放国产一区二区三区 | 黄色官网在线观看 | 欧美久久综合 | 成人免费av | 九一视频在线播放 | 久久精品不卡 | 免费成人av在线 | 97精品国产| 视频一区在线播放 | 亚洲丶国产丶欧美一区二区三区 | 91精品久久久久久久久入口 | 日本高清视频在线播放 | 日韩在线成人 | 日韩精品一区二区三区 | 久久99国产精品 | 成人欧美| 亚洲成人福利 | 国产精品毛片久久久久久久 | 奇米精品一区二区三区在线观看 | 国产一区www | 可以在线观看的黄色 | 午夜黄色av | 六月婷婷综合 | 国产精品免费观看 | 国产一区二区在线电影 | 免费成人在线网站 | 国产精品九九九 | 一区二区三区高清不卡 | 亚洲电影在线看 | 国产成人福利视频 | 正在播放欧美 | 9久久婷婷国产综合精品性色 | av免费观看网站 | 亚洲毛片 | 久久人 | 91精品国产综合久久福利软件 | 欧美日韩中文字幕在线 | 国产精品中文 | 成人免费看片 | 综合久久网 | 日韩在线视频网站 | 免费av在线网站 | 国产日韩一区二区三区 | 亚洲黄色一级毛片 | 亚洲444kkkk在线观看最新 | 日韩成人在线观看 | 午夜影院男女 | 中文字幕亚洲精品 | 亚洲 成人 av | 欧美二区视频 | 天天干天天操天天舔 | 色资源在线 | 国产精品成人3p一区二区三区 | 国产乱码精品一区二区三区手机版 | 久久99精品视频 | 午夜a级理论片915影院 | 国产精品一区二区无线 | 国产在线观看免费 | 国产一区二区三区在线免费观看 | 在线激情网站 | 国产欧美精品区一区二区三区 | 日韩一级电影在线 | 羞羞视频免费观看 | 日韩久久一区二区 | 一区二区精品视频在线观看 | 一区二区三区四区在线 | 毛片网站大全 | 一区二区三区日韩 | 成年人在线观看视频 | 久久久久久久久国产精品 | 中文字幕免费看 | 91丁香| 一级在线观看 | 一区小视频 | 精久久| 免费在线成人 | 色婷婷在线播放 | 久久精品久久久久久久久久16 | 国产在线观看高清 | 亚洲欧美中文日韩在线v日本 | 欧美午夜三级视频 | 国产一区二区视频在线观看 | 欧美日韩在线免费观看 | 日韩精品视频在线观看免费 | 九九在线视频 | 亚洲成人精品 | 日韩av手机在线免费观看 | 欧美日产国产成人免费图片 | 国产亚洲一区二区三区 | 毛片免费观看 | 日韩在线中文字幕 | 精品国模一区二区三区欧美 | 久久视频精品 | 免费看的黄色 | 动漫羞免费网站中文字幕 | 中文字幕免费在线观看视频 | 国产成人精品久久久 | 亚洲精品一区二区三区在线观看 | 99久久99久久精品国产片果冻 | 羞羞视频在线免费 | 久久精彩 | 国产三级在线播放 | 久久精品一区二区三区不卡牛牛 | 精品影院| 欧美黄色一区 | 天堂网中文在线 | 91免费看| 正在播放欧美 | 国产一区二区免费电影 | 中文在线视频 | 6080yy午夜一二三区久久 | 亚洲一区二区国产 | 日韩综合视频在线观看 | 国产一区精品视频 | 精品久久久一区二区 | 国产激情偷乱视频一区二区三区 | 欧美二区三区 | 日韩毛片| 国产精品一区二区av | 人人干人人爱 | 久久精品免费看 | 中文字幕 国产 | 亚洲久久| 久久久久久久成人 | 在线99视频| 久久av综合 | 岛国免费av| 久久精品影视 | 黄色91| 一区二区三区四区日韩 | 亚洲五月婷婷 | 不卡视频一区 | 欧洲成人午夜免费大片 | 国产玖玖| 欧美一区久久 | 色欧美日韩 | 成人精品一区 | 欧美激情一区二区三级高清视频 | 午夜精品久久久久久久久久久久 | 国产精品久久久久久网站 | 亚洲精品毛片一区二区 | 羞羞视频网站 | av在线天堂 | 国产精品二区三区 | 亚洲久久久久久 | 精品久久久久久久人人人人传媒 | 免费xxxxx在线观看网站软件 | 久久久精彩视频 | 三级网站视频 | 黄色一级毛片 | 亚洲精品午夜国产va久久成人 | 91久久久久 | 天天操天天舔天天爽 | 中字精品 | 免费午夜视频 | 午夜天堂精品久久久久 | 久久久久久av | 欧美一区二区免费 | 亚洲精品乱码久久久久久蜜糖图片 | 精品视频久久 | 欧美一级大片免费 | av久久 | 国产高清视频在线 | 欧美日韩在线电影 | 国产精品视频一区二区三区 | 日韩欧美在线观看视频 | 一本一道久久a久久精品综合 | 国产精品7 | 亚洲久久久久久 | 国产欧美精品一区aⅴ影院 毛片视频网站 | 99久久这里只有精品 | 91av国产精品 | 亚洲国产精品va在线看黑人 | 久久精品国产亚洲一区二区三区 | 亚洲欧美日韩在线一区二区三区 | 久久久久久免费毛片精品 | 国产精品国产精品国产专区不片 | 亚洲乱码国产乱码精品精98午夜 | 免费黄色片在线观看 | 色玖玖综合 | 日韩一区二区免费视频 | 欧美美乳| 精品国产乱码久久久久久1区2区 | 午夜视频免费 | 久久中文字幕视频 | 一区二区亚洲 | 精品一区二区三区四区视频 | 久久久久99 | 国产精品三级视频 | 亚洲精品乱码久久久久久麻豆不卡 | 国久久久| 激情视频在线观看免费 | 中文字幕1区 | 成人一区二区在线 | 亚洲精品成人悠悠色影视 | 综合久久亚洲 | 国产在线专区 | 91中文字幕| a免费在线 | 81精品国产乱码久久久久久 | 亚洲精品一区二区 | 国产日韩精品视频 | 亚洲综合色视频在线观看 | 国产日本韩国在线 | 免费观看视频www | 国产艹| 国产精久久久久 | 日日做夜夜爽毛片麻豆 | 婷婷天堂| av免费网站在线观看 | 日韩欧美一区二区在线 | 日日操操 | av中文字幕在线播放 | 欧美男人天堂 | 亚洲人成人一区二区在线观看 | 欧美日韩二区三区 | 久在线 | 特黄视频 | 日韩精品一区二区三区在线观看 | 精品一区二区在线观看 | 久久久综合网 | 亚洲一区 国产 | jizzjizz亚洲中国少妇 | 日韩视频在线免费观看 | 国产精品久久av | 日本在线视频不卡 | 国产高清在线精品一区二区三区 | 91在线免费看 | 欧美激情第二页 | 国产自产才c区 | 久久2018| 亚洲国产精品99久久久久久久久 | 久久久久国产一区二区三区 | www.视频在线观看 | 玖玖玖影院| 亚洲精彩视频在线 | 午夜av电影 | 麻豆沈芯语在线观看 | 国产一二区在线观看 | 华丽的挑战在线观看 | 免费视频一区二区 | av网址在线播放 | 日韩精品1区 | 羞羞视频在线观看视频 | 日韩电影在线一区 | 超碰官网 | 国产成人av一区二区三区 | 欧洲一区二区三区 | 天天曰天天干 | 亚洲精品久久久久久久久久久 | 99这里只有精品 | 欧美成人精品一区二区男人看 | 精品久久久久久久久久久院品网 | 午夜视频一区二区三区 | 国产精品视频免费 | 色综合久久天天综合网 | 亚洲国产精品99久久久久久久久 | 国产毛片a级 | 国产嫩草91| 色婷婷在线视频观看 | 日本在线播放 | 国产特黄一级 | 久久麻豆| 日韩激情综合 | 亚洲免费色 | 亚洲一区成人 | 成人免费视频一区二区 | av2014天堂网| 午夜tv免费观看 | 另类二区| 国产草草视频 | 黄色国产在线看 | 国产一区二区三区免费观看 | 四虎影视网址 | 精品久久久久久国产 | 成人精品 | 在线观看国产视频 | 日韩欧美国产一区二区三区 | 欧美视频网站 | 黄色一级片看看 | 最新国产精品 | 国产精品一区二区在线观看 | 欧美日韩亚洲高清 | 国产伦精品久久久一区二区三区 | 亚洲艹 | 久久se精品一区精品二区 | 国产视频大全 | 在线欧美日韩 | 久久中文在线观看 | 国产在线观看一区 | 99热手机在线观看 | 成人涩涩网站 | 亚洲精品二区三区 | 日韩成人不卡 | 五月激情综合网 | 久久久成 | 草草成人 | 欧美日韩精品久久久 | 国产精品久久久久久亚洲调教 | 91精品国产综合久久久久久 | 2018自拍偷拍| 久久精品毛片 | 草视频在线 | 国产美女视频一区 | 成人精品一区二区三区 | 色婷婷久久久久swag精品 | 久国久产久精永久网页 | 国产精品一区二区三区av | av在线成人 | 成人精品一区二区 | 伦理一区 | 国产精品久久久久久久久久 | 成人小视频在线观看 | 最近最新中文字幕 | 综合99| 国产成人视屏 | 国产精品二区三区 | 国产精产国品一二三产区视频 | 亚洲社区在线 | 欧美一级高清在线 | 国产日韩在线视频 | 亚洲精品乱码 | 免费在线精品视频 | 久久久91精品国产一区二区三区 | 狠狠操天天干 | 精品国产一区二区三区久久久久久 | 天天操夜夜操 | 中文字幕一区日韩精品欧美 | 国产欧美在线视频 | 久热最新| 黄色大片网站在线观看 | 亚洲毛片在线 | www.91在线 | av福利在线观看 | 狠狠躁日日躁夜夜躁东南亚 | 亚洲视频在线观看 | 中文字幕亚洲在线 | 美国黄色毛片女人性生活片 | 黄色一级在线播放 | 国产精品二区一区二区aⅴ污介绍 | 国产www视频 | 狠狠干av | 成人超碰在线 | 在线观看国产视频 | 亚洲二区在线观看 | 国产一区二区三区免费在线观看 | 色猫猫国产区一区二在线视频 | 国产福利在线视频 | 青青久草 | 久久伊人一区 | 亚洲一区二区中文字幕 | 国产中文一区 | 一区二区三区在线不卡 | 天天操,夜夜操 | 亚洲免费网站在线观看 | 精品在线视频一区 | 伊人久麻豆社区 | 久久99国产精一区二区三区 | 欧洲免费av | 中文字幕天堂在线 | 亚洲乱码一区二区 | 不卡二区 | 国产一区二区精品在线观看 | 国产亚洲一区二区三区在线观看 | 亚洲欧美激情精品一区二区 | 午夜黄色影院 | 噜噜噜噜狠狠狠7777视频 | 色婷婷国产精品免费网站 | 天堂一区二区三区在线 | 国产美女久久 | 国产一区二区av | 蜜桃精品久久久久久久免费影院 | 91精品国产综合久久久久久丝袜 | 亚洲三区在线观看 | 日韩欧美国产网站 | 日韩欧美国产一区二区三区 | 欧美在线小视频 | 亚洲v在线 | 午夜欧美| 人人干美女 | 91精品国产欧美一区二区成人 | 欧美一区二区三区电影 | 香蕉大人久久国产成人av | 欧美一级一区 | 国产一区二区三区视频 | 成人免费在线视频播放 | 国产精品成人在线 | 一道本一区二区三区 | 日韩精品一区二区三区在线播放 | 久久免费视频9 | 青草久操 | 日韩午夜视频在线观看 | 粉嫩av网站 | 国产精品美女一区二区三区四区 | 国产91在线观看 | 欧美日韩一区在线 | 亚洲精品成人av | 色视频网站在线观看 | 亚洲成a | 国产精品一二三区 | 亚洲免费在线视频 | 亚洲a网 | 日夜夜精品视频 | 亚洲一区二区 | 精品在线播放 | 久久久国产一区二区三区 | 久久欧美高清二区三区 | 午夜精品一区二区三区在线 | 国产成人精品一区二区三区网站观看 | 国产激情在线视频 | 欧美久久久久久久久久久久 | 99精品网| 欧美一级高潮片免费的 | 91麻豆精品国产91久久久久久 | 亚洲乱码国产乱码精品精98午夜 | 亚洲二区视频 | 久久综合久色欧美综合狠狠 | 日韩久久成人 | 中文字幕亚洲欧美 | www,久久久 | 久久久午夜爽爽一区二区三区三州 | 国产精品福利在线观看 | 欧美日韩精品综合 | 国产一区二区三区精品久久久 | 国产 欧美 日韩 一区 | 日韩精品小视频 | 亚洲激情一区二区 | 日韩国产欧美一区 | 久久九 | 色黄视频在线 | 天堂网av2020 | 日本精品视频 | 一区二区三区观看视频 | 久久久高清 | 国产亚洲一区二区三区 | av网战 | 亚洲一级在线 | 欧美福利视频 | 日韩精品在线网站 | 欧美久久久久久久久久久久 | 久久激情网站 | 国产高清一区二区 | 国产精品免费在线 | 午夜天 | 久久69精品久久久久久久电影好 | 日韩精品小视频 | 91精品国产综合久久久久久 | 91爱啪啪| aaa久久| 久久99久久久久 |