精品欧美一区二区三区在线观看 _久久久久国色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)

aiai在线| 在线免费一级片| 加勒比久久高清| 精品国产乱码久久久久久婷婷| 国产精品久久久久久久天堂第1集| 伊人久久综合视频| 经典一区二区| 日韩精品一区国产麻豆| 国产男女无遮挡| 免费黄色在线网站| 99精品国产91久久久久久| 国产精品久久77777| 农村妇女精品一区二区| 亚洲ab电影| 欧美一级在线观看| 国产精品动漫网站| 先锋影音在线资源站91| 国产调教视频一区| 国产精品亚洲不卡a| 亚洲图片欧美在线| 国产精品社区| 精品中文字幕在线观看| 在线观看日本中文字幕| 中文字幕一区日韩精品| 欧美日韩美女一区二区| 国产免费黄色av| 七七久久电影网| 国产人成一区二区三区影院| 国产精品日韩欧美一区二区| 国产精品高潮呻吟AV无码| 性一交一乱一区二区洋洋av| 欧美黑人xxxx| 久久福利免费视频| 欧美午夜精品一区二区三区电影| 亚洲黄页网在线观看| 日本一本在线视频| 四虎在线精品| 欧美日韩在线亚洲一区蜜芽| 国产日韩一区二区在线观看| 波多野结依一区| 一区二区三区不卡在线观看 | 国产又粗又大又爽| 狂野欧美一区| 91国产视频在线| 久久免费在线观看视频| 欧美激情性爽国产精品17p| 最近2019好看的中文字幕免费 | 亚洲天堂久久久久久久| 日本一区二区在线视频观看| 天堂av手机版| 不卡一区二区中文字幕| 亚洲xxx自由成熟| 国产乱淫av片免费| 国产一区二区三区不卡在线观看 | 91亚洲精品国偷拍自产在线观看 | 人妻巨大乳一二三区| 国产精品欧美一区二区三区不卡| 欧美日韩久久不卡| 天天视频天天爽| 成人黄页网站视频| 欧美日韩国产成人在线91| 岛国毛片在线播放| 伊人亚洲精品| 日韩免费看网站| 扒开伸进免费视频| 免费萌白酱国产一区二区三区| 精品久久久久久亚洲综合网| 中文字幕三级电影| 亚洲bt欧美bt精品777| 国产亚洲欧美另类中文| wwwww黄色| 亚洲精品二区三区| 高清在线视频日韩欧美| 女人十八岁毛片| 日韩精品福利网| 国产日韩欧美夫妻视频在线观看| 国产精品久久777777换脸| 国产麻豆精品久久一二三| 91亚洲人电影| 婷婷av一区二区三区| 久久久国产精品麻豆| 日韩av电影在线观看| 日本不卡在线| 亚洲一线二线三线久久久| 无罩大乳的熟妇正在播放| 成人网ww555视频免费看| 91麻豆精品国产91久久久久| 国产性猛交96| 国产精品一区二区99| 久久久精品免费视频| 日韩黄色精品视频| 麻豆极品一区二区三区| 96久久精品| 黄色在线免费观看大全| 亚洲欧洲av一区二区三区久久| 久久av综合网| 福利视频亚洲| 亚洲成人中文字幕| 91禁男男在线观看| 99国产精品视频免费观看一公开 | 久久久这里只有精品视频| 欧产日产国产69| 国产麻豆精品theporn| 欧美一区二区三区在线播放| 在线免费观看a视频| 91久久精品一区二区三区| 欧美xxxxxbbbbb| 九九免费精品视频在线观看| 萌白酱国产一区二区| 91精品国产高清一区二区三密臀| 韩国一区二区三区| 蜜桃av色综合| 好吊日av在线| 欧美日韩精品欧美日韩精品 | 国产福利免费视频| 国产亚洲欧美一区在线观看| www.国产在线视频| 日韩欧国产精品一区综合无码| 日韩精品亚洲视频| 久久久久久久9999| 精品一区二区三区免费观看| 欧美日韩一区二区三区免费| 国精产品一区一区三区mba下载| 欧美喷潮久久久xxxxx| 91丝袜在线观看| 欧美日韩亚洲国产精品| 国产日韩欧美在线播放| 国产美女视频一区二区三区| 午夜精品免费在线| 国产亚洲色婷婷久久| 久久伦理在线| 国产精品免费在线免费| 免费成人av电影| 天涯成人国产亚洲精品一区av| 中文字幕第六页| 91不卡在线观看| 国产在线观看精品| av大片在线观看| 欧美视频精品在线| 高清国产在线观看| 日本在线不卡一区| 色视频一区二区三区| 欧美大片免费| 亚洲深夜福利视频| 国产视频1区2区| 久久综合精品国产一区二区三区| 日本丰满少妇xxxx| 国内精品偷拍| 91sa在线看| 欧洲一级在线观看| 色噜噜狠狠成人网p站| 成人片黄网站色大片免费毛片| 久久都是精品| 欧美在线日韩精品| 欧美va视频| 中文字幕在线视频日韩| 亚洲视频久久久| 亚洲丝袜精品丝袜在线| 日本黄色www| 国产在线欧美| 精品欧美国产| 巨茎人妖videos另类| 伊人久久久久久久久久| 亚洲天堂免费av| 亚洲精品视频在线看| 中文字幕无人区二| 亚洲激情av| 日本一区二区高清视频| 国产91亚洲精品久久久| 久久国产精品免费视频| 亚洲精品视频网| 精品福利在线视频| 91激情视频在线观看| 久久电影国产免费久久电影| 欧美另类videosbestsex日本| 8x国产一区二区三区精品推荐| 午夜剧场成人观在线视频免费观看| 无码国产精品一区二区色情男同| 欧美午夜美女看片| 老司机深夜福利网站| 国产精品91一区二区| 无码播放一区二区三区| 日本久久精品| 成人自拍视频网站| 欧美大胆性生话| 毛片精品免费在线观看| 天堂影院在线| 欧美丰满一区二区免费视频| 国产黄色片视频| 国产拍欧美日韩视频二区| 91视频福利网| 免费亚洲婷婷| 亚洲天堂第一区| 亚洲伊人春色| 亚洲a级在线观看| 97se综合| 欧美日韩福利视频| 国产小视频在线| 欧美成人aa大片| 做爰视频毛片视频| 天天av天天翘天天综合网 | 大荫蒂欧美视频另类xxxx| www亚洲色图| 不卡区在线中文字幕| 91小视频网站| 美女精品在线| 成人午夜免费在线视频| 成人av国产| 久久国产日韩欧美| 亚洲国产中文在线| 国产精品视频大全| 日本乱码一区二区三区不卡| 久久精品国产免费观看| 国产一级网站视频在线| 精品福利一区二区三区| 一本色道久久综合熟妇| 色婷婷综合视频在线观看| 久久一二三四区| 亚洲精品欧美在线| 国产精品视频在| 久久久久高清精品| wwwxx日本| 国产成人精品1024| 老司机午夜性大片| 日韩不卡一二三区| 色综合av综合无码综合网站| 亚洲黄色精品| 欧美这里只有精品| 综合激情一区| 国产手机视频在线观看| 日韩国产一区二区三区| 日本一区二区三区精品视频| 秋霞综合在线视频| 精品久久sese| 牛牛影视一区二区三区免费看| 亚洲自拍偷拍色片视频| 亚洲欧洲二区| 国产欧美日韩视频| 精品国产美女a久久9999| 国产精品成人久久久久| 韩漫成人漫画| 日本精品一区二区三区在线播放视频 | 337p粉嫩大胆噜噜噜鲁| 亚洲神马久久| 欧洲黄色一级视频| 香蕉视频成人在线观看| 欧美日韩中文在线视频| 国产农村妇女精品一二区| 波多野结衣家庭教师在线| 999亚洲国产精| 免费欧美一级视频| 美女国产精品| 成人免费xxxxx在线视频| 日韩二区三区四区| 在线免费av播放| 狠狠色丁香婷婷综合| 日本国产一级片| 国产乱妇无码大片在线观看| gogo亚洲国模私拍人体| 成人在线视频一区二区| 色哟哟无码精品一区二区三区| 成人黄页毛片网站| 亚洲国产综合视频| 91香蕉国产在线观看软件| 亚洲第一成人网站| 欧美国产日韩在线观看| 日本免费网站视频| 夜夜嗨av一区二区三区网页| 日韩经典在线观看| 色8久久人人97超碰香蕉987| 亚洲图片欧美在线| 日韩欧美不卡一区| 天堂在线一二区| 综合网中文字幕| 色婷婷视频在线观看| 欧美怡春院一区二区三区| 欧美日韩女优| 91久久在线视频| 红杏一区二区三区| 欧美一区少妇| 亚洲欧美色图| 日日橹狠狠爱欧美超碰| 久久99国产精品久久| 性xxxxxxxxx| 久久精品视频在线免费观看| 污污的视频在线免费观看| 亚洲国产成人va在线观看天堂| 日日夜夜狠狠操| 欧美一二三区在线| 男女污视频在线观看| 久久中文字幕在线| 一个人看的www视频在线免费观看| 国产不卡av在线| 亚洲大奶少妇| 色婷婷精品国产一区二区三区| 午夜日韩电影| 一区二区三区免费播放| 成人黄色一级视频| 国产精品综合激情| 婷婷久久综合九色综合绿巨人| 中国老头性行为xxxx| 精品国产乱码久久久久久久久| 国产视频网址在线| 久久频这里精品99香蕉| 97久久网站| 久久久久久久久久久久久9999| 国产精品成久久久久| 久久精品国产精品亚洲色婷婷| 久久99国产精品麻豆| 国产精品20p| 性久久久久久久久| 国产男女裸体做爰爽爽| 亚洲欧美国产一区二区三区| 精品精品导航| 91色中文字幕| 日韩欧美一区二区三区免费看| 亚欧无线一线二线三线区别| 国产在线播精品第三| 精品无码在线观看| 欧美性xxxx极品hd欧美风情| www日本在线| 欧美成人手机在线| 欧美天堂一区| 午夜视频久久久| 天使萌一区二区三区免费观看| 99riav国产精品视频| 亚洲欧美在线aaa| 中文字幕观看视频| 亚洲香蕉成人av网站在线观看| 在线天堂中文资源最新版| 国产精品夜夜夜一区二区三区尤| 五月天综合网站| 一道本视频在线观看| 久久精品在线免费观看| 国产农村妇女aaaaa视频| 亚洲精品国产精品国自产观看浪潮 | 激情小说亚洲色图| 男人插女人视频在线观看| 国产99久久久精品| 久久久久久久久久一区二区三区| 正在播放亚洲一区| v天堂福利视频在线观看| 成人激情视频在线播放| 亚洲激情中文在线| 日批视频在线看| 一区二区三区日韩精品视频| 精品人妻少妇AV无码专区| 久久不射电影网| 中文字幕一区二区三区中文字幕| 国产 欧美 日本| 成人v精品蜜桃久久一区| 国产极品在线播放| 日韩风俗一区 二区| 自拍偷拍欧美视频| 日韩国产精品一区二区| 青草国产精品久久久久久| 网站永久看片免费| 欧美一级片在线观看| 日本伦理一区二区| 激情五月综合色婷婷一区二区 | 国产高清视频网站| 国产精品久久久久久久岛一牛影视 | 国产福利视频在线| 97se亚洲综合在线| 激情综合视频| 3d动漫精品啪啪一区二区下载 | 亚洲成色www.777999| 国产精品久久久久一区| 国产免费高清视频| 久久久亚洲国产| 中国av一区| 国产精品久久久久久9999| 亚洲黄色小说网站| 同心难改在线观看| 国产精品色视频| 综合一区av| 久久国产精品影院| 欧美精品久久一区| 国产精品186在线观看在线播放| 久久亚洲高清| 麻豆成人免费电影| 九热这里只有精品| 在线观看亚洲区| 97久久超碰| 国产野外作爱视频播放| 亚洲一区二区欧美日韩| 国产日本在线| 99久久99| 丝袜美腿亚洲一区| 欧美丰满艳妇bbwbbw| 亚洲欧美第一页| 国产精品一区二区三区www| 国产午夜福利在线播放| 国产精品久久久久久久久晋中| 少妇精品视频一区二区| 国产欧美精品久久久| 国产精品外国| 高h视频免费观看| 在线精品国产欧美| 国产精品18hdxxxⅹ在线|