精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SQL Server居然也能調(diào) C# 代碼 ?

數(shù)據(jù)庫(kù) SQL Server
SQLSERVER 內(nèi)嵌了 CLR,讓 sqlservr 進(jìn)程成了一種托管和非托管的混合環(huán)境,不知道是好事還是壞事,在我的分析旅程中這種混合環(huán)境下看過(guò)太多的堆破壞問(wèn)題,但不管怎么說(shuō),托管的 C#,VB,F(xiàn)# 可以助 SQLSERVER 更加強(qiáng)大。

一:背景

1. 講故事

前些天看到一個(gè)奇怪的 Function 函數(shù),調(diào)用的是 C# 鏈接庫(kù)中的一個(gè) UserLogin 方法,參考代碼如下:


CREATE FUNCTION dbo.clr_UserLogin
(
@name AS NVARCHAR(100),
@password AS NVARCHAR(100)
)
RETURNS INT
AS
EXTERNAL NAME asmXXX.[xxx.CLRFunctions].UserLogin;
GO

這就讓我產(chǎn)生了很大的興趣,眾所周知 SQLSERVER 是 C++ 寫的,那這里的 C++ 怎么和 C# 打通呢?而且 C# 是一門托管語(yǔ)言,需要 JIT 將其 native 化,這個(gè) JIT 又在哪里呢?帶著這些疑問(wèn)一起研究下吧。

二:互通原理研究

1. 一個(gè)簡(jiǎn)單的例子

首先寫一段簡(jiǎn)單的 C# 代碼,然后把它編譯成 dll。


namespace AQMN.Bussiness
{
public class UserFunctions
{
public static string UserLogin(string username, string password)
{
var random = new Random();

var isSuccess = random.Next() % 2 == 0;

return isSuccess ? "登錄成功" : "登錄失敗";
}
}
}

接下來(lái)需要做的就是數(shù)據(jù)庫(kù)參數(shù)配置,開啟 CLR 支持,并且指定某個(gè)數(shù)據(jù)庫(kù)支持 unsafe 模式。


EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
GO

ALTER DATABASE MyTestDB SET TRUSTWORTHY ON;
GO

為了能夠調(diào)到 C# 的 UserLogin 方法,需要 SQLSERVER 先導(dǎo)入這個(gè)程序集,然后再以 Function 映射其中方法即可,參考代碼如下:


CREATE ASSEMBLY clr_AQMN_Bussiness
FROM 'D:\net6\SQLCrawl\AQMN.Bussiness\bin\Debug\AQMN.Bussiness.dll'
WITH PERMISSION_SET = UNSAFE;
GO

CREATE FUNCTION dbo.clr_UserLogin
(
@username AS NVARCHAR(100),
@password AS NVARCHAR(100)
)
RETURNS NVARCHAR(100)
AS
EXTERNAL NAME clr_AQMN_Bussiness.[AQMN.Bussiness.UserFunctions].UserLogin;
GO

創(chuàng)建完了之后,可以觀察 assembly 開頭的幾個(gè)系統(tǒng)視圖。


SELECT * FROM sys.assemblies
SELECT * FROM sys.assembly_files;
SELECT * FROM sys.assembly_modules;

圖片

看起來(lái)沒啥問(wèn)題,接下來(lái)調(diào)用一下剛才創(chuàng)建的 clr_UserLogin 函數(shù)。

SELECT dbo.clr_UserLogin(N'jack',N'123456') AS 'State'
GO 10

圖片

從圖中看登錄結(jié)果是隨機(jī)的,說(shuō)明 C# 的 Random 函數(shù)起到了作用,非常有意思。

2. WinDbg 觀察

從案例的運(yùn)行結(jié)果看,推測(cè)在 SQLSERVER 中應(yīng)該承載了一個(gè) CLR 運(yùn)行環(huán)境,那是不是這樣呢?可以用 WinDbg 附加到 ??sqlservr.exe?? 進(jìn)程,用 lm 觀察下模塊加載情況。


0:092> lm
start end module name

...
00007ff8`d3960000 00007ff8`d3aaf000 clrjit (deferred)
00007ff8`de040000 00007ff8`deb02000 clr (deferred)
...

0:092> !eeversion
4.8.4300.0 free
Server mode with 12 gc heaps
SOS Version: 4.8.4300.0 retail build

從輸出看果然加載了 clr 和 clrjit 動(dòng)態(tài)鏈接庫(kù),當(dāng)前還是 gc server 模式,??哈。

接下來(lái)再驗(yàn)證一個(gè)問(wèn)題,既然 clr_UserLogin 函數(shù)會(huì)顯示 登錄成功/登錄失敗,那必然會(huì)調(diào)用 C# 的 UserLogin 方法,可以在 WinDbg 中對(duì) UserLogin 方法下一個(gè)斷點(diǎn)觀察一下這個(gè)調(diào)用過(guò)程。


0:090> !name2ee AQMN.Bussiness!AQMN.Bussiness.UserFunctions.UserLogin
Module: 00007ff87ee37988
Assembly: AQMN.Bussiness, Versinotallow=1.0.0.0, Culture=neutral, PublicKeyToken=null
Token: 0000000006000001
MethodDesc: 00007ff87ee38020
Name: AQMN.Bussiness.UserFunctions.UserLogin(System.String, System.String)
JITTED Code Address: 00007ff87ec560d0

0:090> bp 00007ff87ec560d0
0:090> g

從輸出信息看 UserLogin 方法已經(jīng)被 JIT 過(guò)了,用 bp 下完斷點(diǎn)之后,繼續(xù) g,然后在 SSMS 上再次執(zhí)行查詢就可以成功命中啦。


0:090> k
# Child-SP RetAddr Call Site
00 000000df`1557ae48 00007ff8`7ee500b6 0x00007ff8`7ec560d0
01 000000df`1557ae50 00007ff8`7ec55ef1 0x00007ff8`7ee500b6
02 000000df`1557aeb0 00007ff8`de04222e 0x00007ff8`7ec55ef1
03 000000df`1557af00 00007ff8`a2b79ff3 clr!UMThunkStub+0x6e
04 000000df`1557af90 00007ff8`a2b741bd sqllang!CallProtectorImpl::CallWithSEH<AppDomainCallTraits,void,FunctionCallBinder_3<void,void (__cdecl*)(void (__cdecl*)(void * __ptr64),void * __ptr64,enum ESqlReturnCode * __ptr64),void (__cdecl*)(void * __ptr64),void * __ptr64,enum ESqlReturnCode * __ptr64> const >+0x23
05 000000df`1557afc0 00007ff8`a2b6bfc4 sqllang!CallProtectorImpl::CallExternalFull<AppDomainUserCallTraits,void,FunctionCallBinder_3<void,void (__cdecl*)(CXVariant * __ptr64,CXVariant * __ptr64,CClrLobContext * __ptr64),CXVariant * __ptr64,CXVariant * __ptr64,CClrLobContext * __ptr64> const >+0x2dd
06 000000df`1557b130 00007ff8`a2bda602 sqllang!CAppDomain::InvokeClrFn+0xd4
07 000000df`1557b1d0 00007ff8`aef51ee7 sqllang!UDFInvokeExternalImpl+0xb72
08 000000df`1557b7e0 00007ff8`9de52e24 sqlTsEs!CEsExec::GeneralEval4+0xe7
09 000000df`1557b8b0 00007ff8`9de52d64 sqlmin!CQScanProjectNew::EvalExprs+0x18f
0a 000000df`1557b920 00007ff8`9ddd8759 sqlmin!CQScanProjectNew::GetRow+0x98
0b 000000df`1557b970 00007ff8`9ddc73de sqlmin!CQScanLightProfileNew::GetRow+0x19
0c 000000df`1557b9a0 00007ff8`a25e51d7 sqlmin!CQueryScan::GetRow+0x80
0d 000000df`1557b9d0 00007ff8`a32a78b2 sqllang!CXStmtQuery::ErsqExecuteQuery+0x3d8
0e 000000df`1557bb40 00007ff8`a2bc2451 sqllang!CXStmtSelect::XretDoExecute+0x342
0f 000000df`1557bc10 00007ff8`a2b733d3 sqllang!UM_LoopbackForStatementExecution+0x191
10 000000df`1557bd00 00007ff8`de48e940 sqllang!AppDomainCallback<FunctionCallBinder_5<void,void (__cdecl*)(CXStmtQuery * __ptr64,CCompExecCtxtStmt const * __ptr64,CMsqlExecContext * __ptr64,unsigned long * __ptr64,enum ESqlReturnCode * __ptr64),CXStmtQuery * __ptr64,CCompExecCtxtStmt const * __ptr64,CMsqlExecContext * __ptr64,unsigned long * __ptr64,enum ESqlReturnCode * __ptr64> >+0x23
11 000000df`1557bd40 00007ff8`de48e193 clr!ExecuteInAppDomainHelper+0x40
12 000000df`1557bd80 00007ff8`a2b79f39 clr!CorHost2::ExecuteInAppDomain+0x3a0
13 000000df`1557c0a0 00007ff8`a2b73a86 sqllang!CallProtectorImpl::CallWithSEH<AppDomainCallTraits,long,MethodCallBinder_3<long,ICLRRuntimeHost,long (__cdecl ICLRRuntimeHost::*)(unsigned long,long (__cdecl*)(void * __ptr64),void * __ptr64) __ptr64,unsigned long,long (__cdecl*)(void * __ptr64),void * __ptr64> >+0x29
14 000000df`1557c0d0 00007ff8`a2b6c2d0 sqllang!CallProtectorImpl::CallExternalFull<AppDomainCallTraits,long,MethodCallBinder_3<long,ICLRRuntimeHost,long (__cdecl ICLRRuntimeHost::*)(unsigned long,long (__cdecl*)(void * __ptr64),void * __ptr64) __ptr64,unsigned long,long (__cdecl*)(void * __ptr64),void * __ptr64> >+0x186
15 000000df`1557c170 00007ff8`a32a72f4 sqllang!CAppDomain::LoopbackForStatementExecution+0x180
16 000000df`1557c230 00007ff8`a32a79ad sqllang!CXStmtQuery::XretCLRExecute+0x104
17 000000df`1557c2a0 00007ff8`a25e4a65 sqllang!CXStmtSelect::XretExecute+0x4a
18 000000df`1557c370 00007ff8`a25e44a8 sqllang!CMsqlExecContext::ExecuteStmts<1,1>+0x8f2
19 000000df`1557cf10 00007ff8`a25e3a2c sqllang!CMsqlExecContext::FExecute+0x936
1a 000000df`1557def0 00007ff8`a25ee67b sqllang!CSQLSource::Execute+0xc5c
1b 000000df`1557e3d0 00007ff8`a25ed815 sqllang!process_request+0xca6
1c 000000df`1557ead0 00007ff8`a25ed5ef sqllang!process_commands_internal+0x4b7
1d 000000df`1557ec00 00007ff8`b1e46523 sqllang!process_messages+0x1d6
1e 000000df`1557ede0 00007ff8`b1e46e6d sqldk!SOS_Task::Param::Execute+0x232
1f 000000df`1557f3e0 00007ff8`b1e46c75 sqldk!SOS_Scheduler::RunTask+0xa5
20 000000df`1557f450 00007ff8`b1e6b160 sqldk!SOS_Scheduler::ProcessTasks+0x39d
21 000000df`1557f570 00007ff8`b1e6aa5b sqldk!SchedulerManager::WorkerEntryPoint+0x2a1
22 000000df`1557f640 00007ff8`b1e6afa4 sqldk!SystemThreadDispatcher::ProcessWorker+0x3ed
23 000000df`1557f940 00007ff8`f6d86fd4 sqldk!SchedulerManager::ThreadEntryPoint+0x3b5
24 000000df`1557fa30 00007ff8`f865cec1 KERNEL32!BaseThreadInitThunk+0x14
25 000000df`1557fa60 00000000`00000000 ntdll!RtlUserThreadStart+0x21

果然是一個(gè) request 請(qǐng)求,然后達(dá)到了托管方法 UserLogin,頂部的三行線程棧可以用 !clrstack 具意下。


0:090> !clrstack
OS Thread Id: 0x6df4 (90)
Child SP IP Call Site
000000df1557ae48 00007ff87ec560d0 AQMN.Bussiness.UserFunctions.UserLogin(System.String, System.String)
000000df1557ae50 00007ff87ee500b6 DynamicClass.SQLCLR_Eval(IntPtr, IntPtr, IntPtr)
000000df1557aeb0 00007ff87ec55ef1 DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64)
000000df1557bf18 00007ff8de04222e [ContextTransitionFrame: 000000df1557bf18]

三:總結(jié)

SQLSERVER 內(nèi)嵌了 CLR,讓 sqlservr 進(jìn)程成了一種托管和非托管的混合環(huán)境,不知道是好事還是壞事,在我的分析旅程中這種混合環(huán)境下看過(guò)太多的堆破壞問(wèn)題,但不管怎么說(shuō),托管的 C#,VB,F(xiàn)# 可以助 SQLSERVER 更加強(qiáng)大。

責(zé)任編輯:武曉燕 來(lái)源: 一線碼農(nóng)聊技術(shù)
相關(guān)推薦

2009-08-24 15:41:50

C#連接SQL Ser

2009-08-06 18:15:13

C# SQL Serv

2009-08-17 18:30:29

C# SQL Serv

2009-08-03 14:17:18

C#連接AccessC#連接SQL Ser

2009-09-04 17:29:01

C#創(chuàng)建SQL Ser

2010-07-08 17:15:04

SQL Server存

2009-08-06 16:32:49

SQL Server

2021-11-12 08:21:25

SQL ServerLinux數(shù)據(jù)庫(kù)

2022-02-10 08:07:41

機(jī)器學(xué)習(xí)低代碼開發(fā)

2009-08-19 16:40:35

C#回調(diào)

2009-08-12 10:11:18

C# 回調(diào)函數(shù)

2011-07-18 10:45:55

C#SQL Server數(shù)

2009-08-31 09:19:34

AMO對(duì)象

2009-08-06 16:24:32

C#向Sql Serv

2025-04-01 00:00:25

ChatGPTC#開發(fā)者

2009-08-04 10:29:06

在C#中使用存儲(chǔ)過(guò)程

2021-05-22 06:56:18

OpenWrt 路由器刷機(jī)

2009-08-19 17:10:09

C#回調(diào)函數(shù)

2025-04-08 07:00:00

C#智能家居編程

2015-07-02 10:37:32

C#Json字符串類代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲一区二区自偷自拍| 久久免费电影网| 亚洲精品第1页| 日韩成人在线网站| 亚洲电影网站| 中文字幕一区二区三区精品| 巨大黑人极品videos精品| 国产.欧美.日韩| 中文字幕在线看视频国产欧美在线看完整 | 欧美日韩国产欧| 色婷婷久久久久swag精品| 99久久精品久久久久久ai换脸| 91麻豆精品国产91久久综合| 69av成人| 欧美91大片| 欧美日韩免费观看一区三区| 欧美日韩一区二区三区在线视频| 久久亚洲成人av| 成人黄色91| 国产精品毛片久久久久久久| 日韩免费观看高清| 美国黄色a级片| 午夜影院一区| www国产亚洲精品久久麻豆| 久久免费精品日本久久中文字幕| 亚洲熟女乱综合一区二区| 国产超级va在线视频| 国产自产2019最新不卡| 久久精品成人欧美大片古装| 性猛交ⅹ×××乱大交| 视频一区二区三区不卡| 精品在线免费视频| 久久综合伊人77777蜜臀| 亚洲天堂av一区二区| 免费在线观看黄色网| 另类小说一区二区三区| 色婷婷综合久久久久| 最新天堂中文在线| 色一区二区三区| 91蜜桃在线观看| 亚洲伊人第一页| 精品无码人妻一区二区三区品| 欧美日韩激情| 91久久免费观看| 一级做a爰片久久| 国产麻豆免费视频| 国产一区二区三区四区三区四| 精品国产免费一区二区三区香蕉| 免费不卡av在线| 婷婷国产在线| 日日欢夜夜爽一区| 尤物九九久久国产精品的分类| 亚洲一区二区在线视频观看| 丝袜美腿诱惑一区二区三区| 国产精品传媒视频| 99porn视频在线| 国产jzjzjz丝袜老师水多| 国产米奇在线777精品观看| 欧美大片va欧美在线播放| 黄色三级视频在线播放| 亚洲www色| 91香蕉视频污在线| 精品免费国产| 在线观看黄色国产| 国产精品多人| 久久久久九九九九| 国产精品20p| 涩爱av色老久久精品偷偷鲁 | 顶级网黄在线播放| 国产精品初高中害羞小美女文| 日韩在线三级| 成人福利小视频| 久久亚洲视频| 欧美日本中文字幕| 变态另类ts人妖一区二区| 国产91久久精品一区二区| 91麻豆精品国产91久久久久久久久| 很污的网站在线观看| caoporn-草棚在线视频最| 亚洲一二三区在线观看| 四虎永久国产精品| 天天干,天天操,天天射| 久久国产麻豆精品| 成人在线视频网| 国产在线一卡二卡| 久久av网址| 尤物九九久久国产精品的特点| 18啪啪污污免费网站| 欧美激情极品| 欧美一级高清大全免费观看| 777米奇影视第四色| а天堂中文在线官网| 亚洲激情综合网| 奇米影视亚洲色图| 在线免费看黄网站| 91香蕉视频在线| 亚洲国产欧美日韩| 午夜小视频在线观看| 欧美日韩国产精品一区| 男人c女人视频| 在线观看麻豆蜜桃| 亚洲精品国产成人久久av盗摄| 亚洲理论电影在线观看| 国产三区在线观看| 国产精品久久久久久久岛一牛影视| 亚洲 欧洲 日韩| 日本韩国在线视频爽| 亚洲自拍偷拍欧美| 美国av在线播放| 丁香影院在线| 亚洲综合色区另类av| 黄色片一级视频| 精品中文字幕一区二区三区四区| 欧美日韩国产综合一区二区| aaa黄色大片| 日韩av综合| 亚洲美女自拍视频| 中文字幕人妻一区二区| 欧美五码在线| 久久人人爽人人爽人人片亚洲| 伊人久久综合视频| 国产自产v一区二区三区c| 欧美一区二区三区四区在线观看地址| 婷婷综合激情网| 播五月开心婷婷综合| 国产精品二区二区三区| 亚洲成人黄色片| 国产风韵犹存在线视精品| 91丨九色丨国产| 六月婷婷综合网| www.性欧美| 美女主播视频一区| 韩日在线视频| 欧美激情一二三区| 一区二区三区偷拍| 2024最新电影免费在线观看| 亚洲最快最全在线视频| 国产野外作爱视频播放| 欧美网站免费| 欧美一区二区在线播放| 无码人妻aⅴ一区二区三区玉蒲团| 香蕉大人久久国产成人av| 在线日韩第一页| 伦av综合一区| 久久国产精品色| 日本10禁啪啪无遮挡免费一区二区| yellow在线观看网址| 91国偷自产一区二区三区成为亚洲经典| 制服.丝袜.亚洲.中文.综合懂| 欧美电影一区| 欧美丰满少妇xxxxx做受| 日本一级黄色录像| 日韩中文字幕一区二区三区| 久久99精品久久久久久秒播放器 | 国产一区二区不卡在线| 亚洲欧洲另类精品久久综合| 少妇一区视频| 欧美精品视频www在线观看| 免费看三级黄色片| 亚洲欧洲美洲一区二区三区| 国外成人免费在线播放| 亚洲精品久久久蜜桃动漫 | 婷婷久久青草热一区二区 | 成人深夜直播免费观看| 欧美成人高清在线| 欧美精品三级在线观看| 精品国产国产综合精品| 亚洲欧美一级二级三级| 亚洲影院色在线观看免费| 国产在线观看91| 欧美一卡二卡三卡| 久久久精品视频在线| 国产超碰在线一区| 你真棒插曲来救救我在线观看| 亚洲视频精选| 在线看日韩av| 国产又粗又猛又爽又黄视频 | 中文字幕av观看| 午夜亚洲福利在线老司机| 国产精品视频内| 污视频网站在线播放| 大荫蒂欧美视频另类xxxx| 30一40一50老女人毛片| 亚洲一级淫片| 成人动漫在线视频| 中文字幕成在线观看| 揄拍成人国产精品视频| 精品毛片一区二区三区| 精品国产精品自拍| 成人做爰69片免费| 久久久精品网| 国产精品theporn88| 绿色成人影院| 日韩一级裸体免费视频| 日韩免费一级片| 国产欧美视频一区二区三区| 中文 日韩 欧美| 中文一区二区| 国产精品午夜av在线| av毛片在线免费看| 亚洲韩国青草视频| 日本少妇bbwbbw精品| 久久久久国产成人精品亚洲午夜| 欧美精品久久久久久久自慰| 欧美综合在线视频观看| 国产精品久久久久久免费观看 | 精品国产99| 亚洲综合在线小说| 亚洲成人看片| 免费91在线视频| 美州a亚洲一视本频v色道| 天天色天天操综合| 女人裸体性做爰全过| 99久久国产综合精品色伊| www污在线观看| 成人系列视频| 国产精品免费福利| 91白丝在线| 久久久精品在线观看| 久久久资源网| 亚洲大胆人体在线| 五月天综合激情网| 久久综合久久99| www.99r| 亚洲人成免费网站| 日本一区二区三区四区高清视频| 一区二区三区四区精品视频| 国产精品一区二区三区毛片淫片 | 综合网中文字幕| 人妻与黑人一区二区三区| 黄色一区二区在线| 午夜精品一区二区三区视频| 国产午夜亚洲精品羞羞网站| 黄色永久免费网站| 国产精品一二| 激情五月婷婷六月| 欧美日韩看看2015永久免费| 亚洲a级在线观看| 欧美性www| 国产欧美一区二区白浆黑人| 蜜桃视频在线观看www社区| 亚洲日本成人网| 国产精品福利电影| 色欧美88888久久久久久影院| 日韩精品一区二区在线播放| 亚洲精品v日韩精品| 国产精品 欧美激情| 日韩一区在线看| 国产亚洲精品成人a| 国产九九视频一区二区三区| 日本中文字幕网址| 亚洲国产专区校园欧美| 欧美三级网色| 一本色道久久综合亚洲精品酒店| 国产精品自产拍在线观| 99热播精品免费| 久久99热精品这里久久精品| 中文字幕在线观看网站| 欧美另类高清videos| 在线观看小视频| 九九久久国产精品| 日韩三级免费| 韩剧1988在线观看免费完整版| 第一福利在线| 精品久久人人做人人爱| 中文字幕人妻一区二区三区视频 | 日本成人在线视频网站| 波多野结衣与黑人| 国内精品亚洲| 又粗又黑又大的吊av| 亚洲a一区二区三区| 久久www免费人成精品| 九九视频精品全部免费播放| 日韩女优中文字幕| 国产精品99一区二区三| 日本一区二区在线视频观看| 成人精品天堂一区二区三区| 一本色道久久综合亚洲精品婷婷 | av中文字幕一区| 久久久久久九九九九九| 一色桃子久久精品亚洲| 久一区二区三区| 日本丶国产丶欧美色综合| 国产在成人精品线拍偷自揄拍| 欧美不卡在线视频| 美国成人毛片| 欧美成人第一页| 热色播在线视频| 国产伦精品一区二区三区精品视频 | av中文一区| 成人手机在线播放| 成人看的视频| 欧美性天天影院| 日韩在线看片| 日韩中文字幕一区| 日韩中文首页| 四虎永久国产精品| 欧美视频不卡| 欧美一区二区视频在线播放| 美女精品在线| 亚洲午夜精品一区| 久久色视频免费观看| 亚洲精品电影院| 久久新电视剧免费观看| 国产探花在线视频| 亚洲777理论| 久久久久久久黄色| 欧美日韩中文国产| 亚洲图片在线视频| 欧美乱妇20p| 欧美xxx.com| 久久av.com| 激情黄产视频在线免费观看| 国产成人精品一区二区三区| 91超碰在线免费| 91久久嫩草影院一区二区| 亚瑟一区二区三区四区| 亚洲伊人久久大香线蕉av| 精品久久电影| 亚洲色成人www永久在线观看 | 欧美极品在线视频| 午夜av成人| 2019av中文字幕| 性国裸体高清亚洲| 亚洲精品欧美日韩专区| 一区二区美女| 国产一级做a爰片久久毛片男| 日韩经典一区二区| 性囗交免费视频观看| 99久久国产综合精品色伊| 国产又粗又硬又长又爽| 亚洲精品成人少妇| 91影院在线播放| 51精品久久久久久久蜜臀| 亚洲av毛片成人精品| 欧美高清不卡在线| 亚洲国产aⅴ精品一区二区三区| 国产精品区一区二区三在线播放| 68国产成人综合久久精品| 人人干人人视频| 日韩精品欧美精品| 日本黄色免费观看| 成+人+亚洲+综合天堂| 久久精品视频免费在线观看| 亚洲一区在线视频| 99热这里只有精品1| 这里只有视频精品| 天堂av在线网| 欧美美乳视频网站在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 动漫av在线免费观看| 亚洲三级久久久| 国产盗摄x88av| 精品国产一区二区国模嫣然| 黄色av免费在线| 国产精品午夜一区二区欲梦| 欧美午夜精彩| 国模杨依粉嫩蝴蝶150p| 精品中文av资源站在线观看| 波多野结衣片子| 亚洲第一狼人社区| 在线观看不卡的av| 永久555www成人免费| 欧美日韩伦理一区二区| 亚洲国产精品综合| 欧美在线综合| 三区四区在线观看| 色噜噜夜夜夜综合网| 欧美日韩xx| 国产久一一精品| 午夜日韩福利| 特级特黄刘亦菲aaa级| 亚洲柠檬福利资源导航| 波多野结衣av无码| 日韩美一区二区三区| 亚洲 美腿 欧美 偷拍| 97视频免费看| 亚洲专区视频| 国产传媒免费观看| 一区二区三区中文字幕精品精品| 成人毛片在线精品国产| 久久久久久久电影一区| 91精品国产乱码久久久竹菊| 国产aaa免费视频| 92国产精品观看| 中文字幕在线网址| 久久亚洲精品视频| 欧美男人操女人视频| 精品www久久久久奶水| 成人欧美一区二区三区小说| 国产成人三级一区二区在线观看一 | 九九九热精品免费视频观看网站| 97久久综合精品久久久综合| 国产伦精品一区二区三区照片 | 久草在线中文最新视频| 亚洲不卡1区| 久久精品国产99| 激情小说中文字幕| 日韩欧美国产一区二区在线播放| 俺来俺也去www色在线观看|