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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

sfilter(一) sfilter的DriverEntry()

Posted on 2010-02-18 22:22 S.l.e!ep.¢% 閱讀(1035) 評論(0)  編輯 收藏 引用 所屬分類: Windows WDM

NTSTATUS
DriverEntry(
????IN?PDRIVER_OBJECT?DriverObject,
????IN?PUNICODE_STRING?RegistryPath
????)
/* ++

Routine?Description:

????//?創建設備對象且登記它監視所有的活動文件系統
????This?is?the?initialization?routine?for?the?SFILTER?file?system?filter
????driver.??This?routine?creates?the?device?object?that?represents?this
????driver?in?the?system?and?registers?it?for?watching?all?file?systems?that
????register?or?unregister?themselves?as?active?file?systems.

Arguments:

????DriverObject?-?Pointer?to?driver?object?created?by?the?system.

Return?Value:

????The?function?value?is?the?final?status?from?the?initialization?operation.

--
*/
{
????PFAST_IO_DISPATCH?FastIoDispatch;
????UNICODE_STRING?NameString;
????NTSTATUS?Status;
????ULONG?i;

????UNREFERENCED_PARAMETER(RegistryPath);

#if ?WINVER?>=?0x0501
????
// ?
????
// ?Try?to?load?the?dynamic?functions?that?may?be?available?for?our?use.
????
// ?試圖載入動態函數
????
// ?
????SfLoadDynamicFunctions();

????
// ?
????
// ?Now?get?the?current?OS?version?that?we?will?use?to?determine?what?logic
????
// ?paths?to?take?when?this?driver?is?built?to?run?on?various?OS?version.
????
// ?得到OS版本
????
// ?
????SfGetCurrentVersion();
#endif

????
// ?
????
// ?Save?our?Driver?Object,?set?our?UNLOAD?routine
????
// ?保存我們的驅動對象,設置我們的UNLOAD例程
????
// ?

????gSFilterDriverObject?
= ?DriverObject;

#if ?DBG?&&?WINVER?>=?0x0501

????
// ?
????
// ?MULTIVERSION?NOTE:
????
// ?
????
// ?We?can?only?support?unload?for?testing?environments?if?we?can?enumerate
????
// ?the?outstanding?device?objects?that?our?driver?has.
????
// ?如果我們可以枚舉我們驅動擁有的顯著的設備對象,僅支持測試環境的卸載
????
// ?
????
????
// ?
????
// ?Unload?is?useful?for?development?purposes.?It?is?not?recommended?for
????
// ?production?versions
????
// ?卸載只用于開發環境
????
// ?
???? if ?(NULL? != ?gSfDynamicFunctions.EnumerateDeviceObjectList)????????
????????gSFilterDriverObject
-> DriverUnload? = ?DriverUnload;
#endif

????
// ?初始化一個資源變量,可被用于同步一線程集合,
????
// ?在釋放資源占用內存前調用ExDeleteResourceLite
????
//
????Status? = ?ExInitializeResourceLite( & gRulesResource);
????
if ?( ! NT_SUCCESS(Status))
????{
????????KdPrint((
" SFilter!DriverEntry:?ExInitializeResourceLite?failed,?Status=%08x\n " ,?Status));
????????
return ?Status;
????}

????
// ?
????
// ?Setup?other?global?variables
????
// ?設置其它全局變量
????
// ?
????ExInitializeFastMutex( & gSfilterAttachLock);

????ExInitializePagedLookasideList(
????????
& gFsCtxLookAsideList,
????????NULL,
????????NULL,
????????
0 ,
????????FSCTX_GENERIC_TABLE_POOL_SIZE,
????????SFLT_POOL_TAG,
????????
0
????????);
????????
????ExInitializePagedLookasideList(
????????
& gFileNameLookAsideList,
????????NULL,
????????NULL,
????????
0 ,
????????MAX_PATH?
* ? sizeof (WCHAR),
????????SFLT_POOL_TAG,
????????
0
????????);

????ExInitializeNPagedLookasideList(
????????
& gReadWriteCompletionCtxLookAsideList,
????????NULL,
????????NULL,
????????
0 ,
????????
sizeof (READ_WRITE_COMPLETION_CONTEXT),
????????SFLT_POOL_TAG,
????????
0
????????);

????
// ?
????
// ?Create?the?Control?Device?Object?(CDO).??This?object?represents?this?
????
// ?driver.??Note?that?it?does?not?have?a?device?extension.
????
// ?創建控制設備對象,這個對象代表這個驅動。注意它沒有設備擴展。
????
// ?
????RtlInitUnicodeString( & NameString,?L " \\FileSystem\\Filters\\SFilterCDO " );

????Status?
= ?IoCreateDevice(
????????DriverObject,
????????
0 ,?????????????????????? // ?has?no?device?extension
???????? & NameString,
????????FILE_DEVICE_DISK_FILE_SYSTEM,
????????FILE_DEVICE_SECURE_OPEN,
????????FALSE,
????????
& gSFilterControlDeviceObject
????????);
????
if ?(Status? == ?STATUS_OBJECT_PATH_NOT_FOUND)
????{
????????
// ?
????????
// ?This?must?be?a?version?of?the?OS?that?doesn't?have?the?Filters
????????
// ?path?in?its?namespace.??This?was?added?in?Windows?XP.
????????
// ?
????????
// ?We?will?try?just?putting?our?control?device?object?in?the?\FileSystem
????????
// ?portion?of?the?object?name?space.
????????
// ?XP以前的版本名字空間中未加入Filters路徑,所以將我們的控制設備對象放入
????????
// ?對象名字空間的\FileSystem部分
????????
// ?

????????RtlInitUnicodeString(
& NameString,?L " \\FileSystem\\SFilterCDO " );

????????Status?
= ?IoCreateDevice(
????????????DriverObject,
????????????
0 ,?????????????????????? // ?has?no?device?extension
???????????? & NameString,
????????????FILE_DEVICE_DISK_FILE_SYSTEM,
????????????FILE_DEVICE_SECURE_OPEN,
????????????FALSE,
????????????
& gSFilterControlDeviceObject
????????????);
????????
if ?( ! NT_SUCCESS(Status))
????????{
????????????KdPrint((
" SFilter!DriverEntry:?Error?creating?control?device?object?\ " % wZ\ " ,?Status=%08x\n " ,? & NameString,?Status));
????????????ExDeleteResourceLite(
& gRulesResource);
????????????
return ?Status;
????????}
????}
????
else ? if ?( ! NT_SUCCESS(Status))
????{
????????KdPrint((
" SFilter!DriverEntry:?Error?creating?control?device?object?\ " % wZ\ " ,?Status=%08x\n " ,? & NameString,?Status));
????????ExDeleteResourceLite(
& gRulesResource);
????????
return ?Status;
????}

????
// ?
????
// ?Initialize?the?driver?object?with?this?device?driver's?entry?points.
????
// ?
???? for ?(i? = ? 0 ;?i? <= ?IRP_MJ_MAXIMUM_FUNCTION;?i ++ )
????{
????????DriverObject
-> MajorFunction[i]? = ?SfPassThrough;
????}

????
// ?
????
// ?We?will?use?SfCreate?for?all?the?create?operations
????
// ?
????DriverObject -> MajorFunction[IRP_MJ_CREATE]? = ?SfCreate;
????DriverObject
-> MajorFunction[IRP_MJ_CREATE_NAMED_PIPE]? = ?SfCreate;
????DriverObject
-> MajorFunction[IRP_MJ_CREATE_MAILSLOT]? = ?SfCreate;
????
????DriverObject
-> MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL]? = ?SfFsControl;
????DriverObject
-> MajorFunction[IRP_MJ_CLEANUP]? = ?SfCleanup;
????DriverObject
-> MajorFunction[IRP_MJ_CLOSE]? = ?SfClose;
????DriverObject
-> MajorFunction[IRP_MJ_READ]? = ?SfRead;
????DriverObject
-> MajorFunction[IRP_MJ_WRITE]? = ?SfWrite;
????DriverObject
-> MajorFunction[IRP_MJ_DIRECTORY_CONTROL]? = ?SfDirectoryControl;
????DriverObject
-> MajorFunction[IRP_MJ_SET_INFORMATION]? = ?SfSetInformation;

????
// ?
????
// ?Allocate?fast?I/O?data?structure?and?fill?it?in.
????
// ?分配快速I/O數據結構且填入它
????
// ?
????
// ?NOTE:??The?following?FastIo?Routines?are?not?supported:
????
// ????AcquireFileForNtCreateSection
????
// ????ReleaseFileForNtCreateSection
????
// ????AcquireForModWrite
????
// ????ReleaseForModWrite
????
// ????AcquireForCcFlush
????
// ????ReleaseForCcFlush
????
// ?
????
// ?For?historical?reasons?these?FastIO's?have?never?been?sent?to?filters
????
// ?by?the?NT?I/O?system.??Instead,?they?are?sent?directly?to?the?base?
????
// ?file?system.??On?Windows?XP?and?later?OS?releases,?you?can?use?the?new?
????
// ?system?routine?"FsRtlRegisterFileSystemFilterCallbacks"?if?you?need?to?
????
// ?intercept?these?callbacks?(see?below).
????
// ?由于歷史的原因,這些快速IO不發送到過濾驅動,而是直接發送到基礎文件系統。
????
// ?在WINXP及以后版本,如果你想攔截這些回調,你可以使用新的系
????
// ?統例程FsRtlRegisterFileSystemFilterCallbacks
????
// ?

????FastIoDispatch?
= ?ExAllocatePoolWithTag(NonPagedPool,? sizeof (FAST_IO_DISPATCH),?SFLT_POOL_TAG);
????
if ?( ! FastIoDispatch)
????{
????????IoDeleteDevice(gSFilterControlDeviceObject);
????????ExDeleteResourceLite(
& gRulesResource);
????????
return ?STATUS_INSUFFICIENT_RESOURCES;
????}

????RtlZeroMemory(FastIoDispatch,?
sizeof (FAST_IO_DISPATCH));

????FastIoDispatch
-> SizeOfFastIoDispatch? = ? sizeof (FAST_IO_DISPATCH);
????FastIoDispatch
-> FastIoCheckIfPossible? = ?SfFastIoCheckIfPossible;
????FastIoDispatch
-> FastIoRead? = ?SfFastIoRead;
????FastIoDispatch
-> FastIoWrite? = ?SfFastIoWrite;
????FastIoDispatch
-> FastIoQueryBasicInfo? = ?SfFastIoQueryBasicInfo;
????FastIoDispatch
-> FastIoQueryStandardInfo? = ?SfFastIoQueryStandardInfo;
????FastIoDispatch
-> FastIoLock? = ?SfFastIoLock;
????FastIoDispatch
-> FastIoUnlockSingle? = ?SfFastIoUnlockSingle;
????FastIoDispatch
-> FastIoUnlockAll? = ?SfFastIoUnlockAll;
????FastIoDispatch
-> FastIoUnlockAllByKey? = ?SfFastIoUnlockAllByKey;
????FastIoDispatch
-> FastIoDeviceControl? = ?SfFastIoDeviceControl;
????FastIoDispatch
-> FastIoDetachDevice? = ?SfFastIoDetachDevice;
????FastIoDispatch
-> FastIoQueryNetworkOpenInfo? = ?SfFastIoQueryNetworkOpenInfo;
????FastIoDispatch
-> MdlRead? = ?SfFastIoMdlRead;
????FastIoDispatch
-> MdlReadComplete? = ?SfFastIoMdlReadComplete;
????FastIoDispatch
-> PrepareMdlWrite? = ?SfFastIoPrepareMdlWrite;
????FastIoDispatch
-> MdlWriteComplete? = ?SfFastIoMdlWriteComplete;
????FastIoDispatch
-> FastIoReadCompressed? = ?SfFastIoReadCompressed;
????FastIoDispatch
-> FastIoWriteCompressed? = ?SfFastIoWriteCompressed;
????FastIoDispatch
-> MdlReadCompleteCompressed? = ?SfFastIoMdlReadCompleteCompressed;
????FastIoDispatch
-> MdlWriteCompleteCompressed? = ?SfFastIoMdlWriteCompleteCompressed;
????FastIoDispatch
-> FastIoQueryOpen? = ?SfFastIoQueryOpen;

????DriverObject
-> FastIoDispatch? = ?FastIoDispatch;

// ?
// ?VERSION?NOTE:
// ?
// ?There?are?6?FastIO?routines?for?which?file?system?filters?are?bypassed?as
// ?the?requests?are?passed?directly?to?the?base?file?system.??These?6?routines
// ?are?AcquireFileForNtCreateSection,?ReleaseFileForNtCreateSection,
// ?AcquireForModWrite,?ReleaseForModWrite,?AcquireForCcFlush,?and?
// ?ReleaseForCcFlush.
// ?
// ?In?Windows?XP?and?later,?the?FsFilter?callbacks?were?introduced?to?allow
// ?filters?to?safely?hook?these?operations.??See?the?IFS?Kit?documentation?for
// ?more?details?on?how?these?new?interfaces?work.
// ?
// ?MULTIVERSION?NOTE:
// ?
// ?If?built?for?Windows?XP?or?later,?this?driver?is?built?to?run?on?
// ?multiple?versions.??When?this?is?the?case,?we?will?test
// ?for?the?presence?of?FsFilter?callbacks?registration?API.??If?we?have?it,
// ?then?we?will?register?for?those?callbacks,?otherwise,?we?will?not.
// ?

#if ?WINVER?>=?0x0501

????{
????????FS_FILTER_CALLBACKS?FsFilterCallbacks;

????????
if ?(NULL? != ?gSfDynamicFunctions.RegisterFileSystemFilterCallbacks)
????????{
????????????
// ?
????????????
// ?Setup?the?callbacks?for?the?operations?we?receive?through
????????????
// ?the?FsFilter?interface.
????????????
// ?為我們通過FsFilter接口接收的操作設置回調
????????????
// ?
????????????
// ?NOTE:??You?only?need?to?register?for?those?routines?you?really?need
????????????
// ????????to?handle.??SFilter?is?registering?for?all?routines?simply?to
????????????
// ????????give?an?example?of?how?it?is?done.
????????????
// ?
????????????FsFilterCallbacks.SizeOfFsFilterCallbacks? = ? sizeof (FS_FILTER_CALLBACKS);
????????????FsFilterCallbacks.PreAcquireForSectionSynchronization?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostAcquireForSectionSynchronization?
= ?SfPostFsFilterPassThrough;
????????????FsFilterCallbacks.PreReleaseForSectionSynchronization?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostReleaseForSectionSynchronization?
= ?SfPostFsFilterPassThrough;
????????????FsFilterCallbacks.PreAcquireForCcFlush?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostAcquireForCcFlush?
= ?SfPostFsFilterPassThrough;
????????????FsFilterCallbacks.PreReleaseForCcFlush?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostReleaseForCcFlush?
= ?SfPostFsFilterPassThrough;
????????????FsFilterCallbacks.PreAcquireForModifiedPageWriter?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostAcquireForModifiedPageWriter?
= ?SfPostFsFilterPassThrough;
????????????FsFilterCallbacks.PreReleaseForModifiedPageWriter?
= ?SfPreFsFilterPassThrough;
????????????FsFilterCallbacks.PostReleaseForModifiedPageWriter?
= ?SfPostFsFilterPassThrough;

????????????Status?
= ?(gSfDynamicFunctions.RegisterFileSystemFilterCallbacks)(DriverObject,? & FsFilterCallbacks);
????????????
if ?( ! NT_SUCCESS(Status))
????????????{
????????????????DriverObject
-> FastIoDispatch? = ?NULL;
????????????????ExFreePool(FastIoDispatch);
????????????????IoDeleteDevice(gSFilterControlDeviceObject);
????????????????ExDeleteResourceLite(
& gRulesResource);
????????????????
return ?Status;
????????????}
????????}
????}
#endif

????
// ?
????
// ?The?registered?callback?routine?"SfFsNotification"?will?be?called
????
// ?whenever?a?new?file?systems?is?loaded?or?when?any?file?system?is
????
// ?unloaded.
????
// ?當一個新的文件系統被裝入或者當任何文件系統被卸載時,注冊的回調函數
????
// ?SfFsNotification將被調用
????
// ?
????
// ?VERSION?NOTE:
????
// ?
????
// ?On?Windows?XP?and?later?this?will?also?enumerate?all?existing?file
????
// ?systems?(except?the?RAW?file?systems).??On?Windows?2000?this?does?not
????
// ?enumerate?the?file?systems?that?were?loaded?before?this?filter?was
????
// ?loaded.
????
// ?
????Status? = ?IoRegisterFsRegistrationChange(DriverObject,?SfFsNotification);
????
if ?( ! NT_SUCCESS(Status))
????{
????????KdPrint((
" SFilter!DriverEntry:?Error?registering?FS?change?notification,?Status=%08x\n " ,?Status));

????????DriverObject
-> FastIoDispatch? = ?NULL;
????????ExFreePool(FastIoDispatch);
????????IoDeleteDevice(gSFilterControlDeviceObject);
????????ExDeleteResourceLite(
& gRulesResource);
????????
return ?Status;
????}

????
// ?
????
// ?Attempt?to?attach?to?the?appropriate?RAW?file?system?device?objects
????
// ?since?they?are?not?enumerated?by?IoRegisterFsRegistrationChange.
????
// ?試圖附著到合適的RAW文件系統設備對象,因為他們沒有被IoRegisterFsRegistrationChange枚舉
????
// ?
????{
????????PDEVICE_OBJECT?RawDeviceObject;
????????PFILE_OBJECT?FileObject;

????????
// ?
????????
// ?Attach?to?RawDisk?device
????????
// ?附著到RawDisk設備
????????
// ?
????????RtlInitUnicodeString( & NameString,?L " \\Device\\RawDisk " );
????????Status?
= ?IoGetDeviceObjectPointer(
????????????
& NameString,
????????????FILE_READ_ATTRIBUTES,
????????????
& FileObject,
????????????
& RawDeviceObject
????????????);
????????
if ?(NT_SUCCESS(Status))
????????{
????????????SfFsNotification(RawDeviceObject,?TRUE);
????????????ObDereferenceObject(FileObject);
????????}

????????
// ?
????????
// ?Attach?to?the?RawCdRom?device
????????
// ?附著到RawCdRom設備
????????
// ?
????????RtlInitUnicodeString( & NameString,?L " \\Device\\RawCdRom " );
????????Status?
= ?IoGetDeviceObjectPointer(
????????????
& NameString,
????????????FILE_READ_ATTRIBUTES,
????????????
& FileObject,
????????????
& RawDeviceObject
????????????);
????????
if ?(NT_SUCCESS(Status))
????????{
????????????SfFsNotification(RawDeviceObject,?TRUE);
????????????ObDereferenceObject(FileObject);
????????}
????}

????
// ?
????
// ?Clear?the?initializing?flag?on?the?control?device?object?since?we
????
// ?have?now?successfully?initialized?everything.
????
// ?清除控制設備對象上的初始化標志,因為我們現在成功完成初始化
????
// ?
????ClearFlag(gSFilterControlDeviceObject -> Flags,?DO_DEVICE_INITIALIZING);

????IoRegisterDriverReinitialization(DriverObject,?SfDriverReinitialization,?NULL);

????
return ?STATUS_SUCCESS;
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情免费在线| 在线视频国产日韩| 国产精品欧美久久久久无广告| 国产欧美一区二区精品婷婷| 日韩午夜在线播放| 欧美黄色小视频| 久久免费国产精品| 国产一区二区三区的电影| 亚洲欧美日韩精品久久久| 日韩网站在线看片你懂的| 欧美国产精品人人做人人爱| 在线成人欧美| 欧美成人免费小视频| 欧美中文字幕在线观看| 国产一区二区三区丝袜| 久久av一区二区三区漫画| 亚洲欧美精品suv| 国产精品一区三区| 久久精品三级| 欧美一区二区视频观看视频| 国产日韩欧美在线视频观看| 欧美在线日韩| 欧美在线亚洲在线| 亚洲丁香婷深爱综合| 欧美承认网站| 欧美激情片在线观看| 99精品热6080yy久久| av成人福利| 国产精品三上| 久久综合给合| 欧美成人免费小视频| 日韩一级裸体免费视频| 一本色道久久88综合日韩精品| 欧美日本一道本| 性感少妇一区| 久久亚洲精选| 在线一区二区三区做爰视频网站| 一本久道久久综合狠狠爱| 国产精品视频精品视频| 久久最新视频| 欧美日韩国产丝袜另类| 性高湖久久久久久久久| 久久一区二区三区av| 一区二区三区国产在线| 欧美一区二区三区的| 亚洲人成7777| 亚洲伊人色欲综合网| 在线不卡视频| 一区二区免费看| 一区在线播放视频| 一区二区三区国产在线| 伊人久久婷婷| 亚洲视频成人| 亚洲黄色在线| 午夜精品久久久久久久99樱桃 | 国产精品美女www爽爽爽| 久久九九电影| 欧美日韩在线亚洲一区蜜芽| 久久精品欧美日韩| 欧美日韩一区二区精品| 美日韩精品视频| 欧美成人日韩| 国产午夜精品美女视频明星a级| 亚洲精品一区二区三区在线观看| 亚洲高清在线精品| 欧美午夜不卡视频| 免费中文字幕日韩欧美| 国产精品扒开腿爽爽爽视频| 欧美成年人视频| 国产精品一区毛片| 亚洲激情偷拍| 伊大人香蕉综合8在线视| 亚洲图片激情小说| 亚洲精一区二区三区| 欧美在线视频观看| 亚洲欧美一区二区三区在线| 欧美国产视频一区二区| 麻豆国产va免费精品高清在线| 国产精品久久久久久久久免费樱桃| 欧美电影免费网站| 激情视频亚洲| 欧美一区二区精品久久911| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久网站免费| 看欧美日韩国产| 国产视频一区二区三区在线观看| 日韩视频在线一区| 亚洲作爱视频| 欧美精品久久久久久久久老牛影院 | 一色屋精品视频免费看| 午夜激情一区| 午夜一级在线看亚洲| 国产精品都在这里| 一区二区三区日韩精品视频| 一区二区三区四区国产| 欧美人与禽猛交乱配| 91久久精品日日躁夜夜躁国产| 在线免费日韩片| 免费亚洲电影在线| 亚洲电影专区| 99精品国产在热久久| 欧美日本亚洲| 正在播放日韩| 欧美在线播放高清精品| 国产欧美日韩在线视频| 欧美一区二区三区视频免费播放 | 一区二区冒白浆视频| 欧美日本国产视频| 亚洲午夜精品国产| 久久国产夜色精品鲁鲁99| 国产日本欧美视频| 久久精品视频播放| 欧美国产日韩亚洲一区| 99re6这里只有精品视频在线观看| 欧美精品久久久久久| 一区二区三区国产在线| 欧美一区在线看| 黄色在线一区| 欧美国产视频日韩| 一区二区三区欧美在线观看| 欧美一区二区三区免费大片| 国产一区二区三区电影在线观看| 久久久久国产精品一区| 亚洲第一综合天堂另类专| 一本一本久久a久久精品综合妖精| 亚洲人成亚洲人成在线观看| 国产日韩欧美视频| 另类综合日韩欧美亚洲| 亚洲激情六月丁香| 欧美有码在线视频| 亚洲激情偷拍| 国产精品国码视频| 老**午夜毛片一区二区三区| 99re热精品| 久热这里只精品99re8久| 亚洲精品在线看| 国产亚洲激情在线| 欧美女同在线视频| 久久精品国产视频| aa级大片欧美三级| 欧美高清在线| 欧美中日韩免费视频| 日韩视频在线观看免费| 国产亚洲欧美激情| 欧美日韩天堂| 蜜桃伊人久久| 欧美在线观看视频一区二区三区| 亚洲区在线播放| 久久亚洲国产精品日日av夜夜| 夜夜爽99久久国产综合精品女不卡 | 欧美成人高清| 西瓜成人精品人成网站| 亚洲高清不卡av| 久久亚洲私人国产精品va媚药| 一区二区欧美日韩| 亚洲欧洲综合另类| 在线观看国产一区二区| 国产欧美成人| 国产精品老牛| 欧美手机在线| 欧美另类69精品久久久久9999| 久久精品国产77777蜜臀| 亚洲一区二区三区乱码aⅴ| 亚洲激情在线观看| 欧美激情成人在线| 欧美福利视频| 欧美国产日韩精品| 欧美mv日韩mv国产网站app| 久久久综合网站| 久久久www| 久久九九精品| 久久精品在线视频| 久久久精品久久久久| 久久精品一二三区| 久久er99精品| 欧美在线1区| 久久国产精品久久w女人spa| 欧美一级久久久| 欧美在线播放一区| 久久99在线观看| 久久精品欧洲| 玖玖玖国产精品| 欧美1区2区视频| 你懂的亚洲视频| 欧美国产日本在线| 亚洲欧洲精品一区二区三区波多野1战4| 免费日韩av| 欧美黄色影院| 亚洲美女91| 亚洲一区二区三区高清| 性久久久久久久久| 久久久亚洲影院你懂的| 免费成人av| 欧美日韩一区二区高清| 国产精品日韩久久久久| 国精产品99永久一区一区| 亚洲国产成人久久综合一区| 亚洲老司机av| 午夜激情久久久| 久久一二三区|