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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? specialiofunction.cpp

?? 文件過濾系統
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
	ExInterlockedAddUlong((unsigned long *)&RealDevice->ReferenceCount, 1, IopDatabaseLock);

	if (Vpb)
	{
		KIRQL Irql;

		ASSERT(FlagOn(Vpb->Flags, VPB_MOUNTED) && !FlagOn(Vpb->Flags, VPB_LOCKED));

		//
		// Increment Vpb's reference count, if one exists.
		//

		IoAcquireVpbSpinLock(&Irql);
		Vpb->ReferenceCount++;
		IoReleaseVpbSpinLock(Irql);
	}
}



NTSTATUS
FsTPMQueryInformationFile (
						IN PVCB Vcb,
						IN PFILE_OBJECT FileObject,
						IN FILE_INFORMATION_CLASS FileInformationClass,
						OUT PVOID FileInformation,
						IN ULONG Length,
						OUT PULONG ResultLength
						)
{
	PDEVICE_OBJECT DeviceObject =  Vcb->NextLowerDevice;
	PFAST_IO_DISPATCH FastIoDispatch = 	DeviceObject->DriverObject->FastIoDispatch;
	NTSTATUS Status;
	KEVENT Event;
	IO_STATUS_BLOCK IoStatus;
	PIRP Irp;
	PIO_STACK_LOCATION NextIrpSp;

		//
		// Try to do this request through the FastIo if possible.
		//

		if (FastIoDispatch &&
			(FileInformationClass ==  FileBasicInformation && 	FastIoDispatch->FastIoQueryBasicInfo) ||
			(FileInformationClass ==  FileStandardInformation && FastIoDispatch->FastIoQueryStandardInfo)) 
		{

			//
			// Call some FastIo routine and remember its return value.
			//

			BOOLEAN Done;

			if (FileInformationClass ==  FileBasicInformation)
			{
				Done =  FastIoDispatch->FastIoQueryBasicInfo( FileObject,TRUE,(PFILE_BASIC_INFORMATION)FileInformation,&IoStatus,DeviceObject );
			}

			else
			{
				Done =  FastIoDispatch->FastIoQueryStandardInfo( FileObject,TRUE,(PFILE_STANDARD_INFORMATION)FileInformation,&IoStatus,DeviceObject );
			}

			//
			// If we are done return to the caller with request's status.
			//

			if (Done)
			{
				*ResultLength =  IoStatus.Information;
				return IoStatus.Status;
			}
		}

		//
		// Now we must go through the standard IRP path so
		// initialize event on which we will occasionaly wait.
		//

		KeInitializeEvent(&Event, SynchronizationEvent, FALSE);

		//
		// Allocate the IRP with appropriate number of stack locations.
		//

		Irp =  IoAllocateIrp(DeviceObject->StackSize, FALSE);

		if (!Irp)
		{
			return STATUS_INSUFFICIENT_RESOURCES;
		}

		//
		// Set basic fields in Irp like an OriginalFileObject, Thread and so on.
		// Also Flags are set to make this request synchronous and buffered.
		//

		Irp->Tail.Overlay.OriginalFileObject =  FileObject;
		Irp->Tail.Overlay.Thread =  PsGetCurrentThread();

		Irp->RequestorMode =  KernelMode;
		Irp->UserIosb =  &IoStatus;
		Irp->UserEvent =  &Event;

		SetFlag(Irp->Flags, IRP_SYNCHRONOUS_API | IRP_BUFFERED_IO);

		//
		// Set basic fields in the next stack location like a MajorFunction
		// and FileObject.
		//

		NextIrpSp =  IoGetNextIrpStackLocation(Irp);

		NextIrpSp->MajorFunction =  IRP_MJ_QUERY_INFORMATION;
		NextIrpSp->FileObject =  FileObject;

		//
		// Set caller's parameters for this request like Length, Buffer
		// and FileInformationClass.
		//

		NextIrpSp->Parameters.QueryFile.Length =  Length;
		NextIrpSp->Parameters.QueryFile.FileInformationClass =  FileInformationClass;

		Irp->AssociatedIrp.SystemBuffer =  FileInformation;

		//
		// Before we call the FSD to process this request we must set
		// completion routine which will be responsible to free the Irp
		// and to do some little postprocessing.
		//

		IoSetCompletionRoutine( Irp,FsTPMSynchronousApiCompletion,NULL,TRUE,TRUE,TRUE );

		//
		// Call the File System Driver to do the task requested by caller.
		//	

		Status =  IoCallDriver(DeviceObject, Irp);

		if (Status ==  STATUS_PENDING)
		{
			(VOID)KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);

			Status =  IoStatus.Status;
		}

		//
		// Return to our caller with request's status.
		//

		*ResultLength =  IoStatus.Information;
		return Status;
}

//
//
//

NTSTATUS
FsTPMSetInformationFile (
					  IN PVCB Vcb,
					  IN PFILE_OBJECT FileObject,
					  IN FILE_INFORMATION_CLASS FileInformationClass,
					  IN PVOID FileInformation,
					  IN ULONG Length
					  )
{
	PDEVICE_OBJECT DeviceObject =  Vcb->NextLowerDevice;
	NTSTATUS Status;
	KEVENT Event;
	IO_STATUS_BLOCK IoStatus;
	PIRP Irp;
	PIO_STACK_LOCATION NextIrpSp;

	//
	// Initialize event on which we will occasionaly wait.
	//

	KeInitializeEvent(&Event, SynchronizationEvent, FALSE);

	//
	// Allocate the IRP with appropriate number of stack locations.
	//

	Irp =  IoAllocateIrp(DeviceObject->StackSize, FALSE);

	if (!Irp)
	{
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	//
	// Set basic fields in Irp like an OriginalFileObject, Thread and so on.
	// Also Flags are set to make this request synchronous and buffered.
	//

	Irp->Tail.Overlay.OriginalFileObject =  FileObject;
	Irp->Tail.Overlay.Thread =  PsGetCurrentThread();

	Irp->RequestorMode =  KernelMode;
	Irp->UserIosb =  &IoStatus;
	Irp->UserEvent =  &Event;

	SetFlag(Irp->Flags, IRP_SYNCHRONOUS_API | IRP_BUFFERED_IO);

	//
	// Set basic fields in the next stack location like a MajorFunction
	// and FileObject.
	//

	NextIrpSp =  IoGetNextIrpStackLocation(Irp);

	NextIrpSp->MajorFunction =  IRP_MJ_SET_INFORMATION;
	NextIrpSp->FileObject =  FileObject;

	//
	// Set caller's parameters for this request like Length, Buffer
	// and FileInformationClass.
	//

	NextIrpSp->Parameters.SetFile.Length =  Length;
	NextIrpSp->Parameters.SetFile.FileInformationClass = FileInformationClass;

	Irp->AssociatedIrp.SystemBuffer =  FileInformation;

	//
	// Do some preprocessing for Rename and Link requests.
	//

	ASSERT((FileInformationClass <=  FileMaximumInformation) &&
		(FileInformationClass !=  FileModeInformation) &&
		(FileInformationClass !=  FileObjectIdInformation) &&
		(FileInformationClass !=  FileMoveClusterInformation));

	if (FileInformationClass ==  FileRenameInformation ||
		FileInformationClass ==  FileLinkInformation) 
	{

		PFILE_RENAME_INFORMATION RenameInfo =  (PFILE_RENAME_INFORMATION)FileInformation;

		ASSERT(RenameInfo->FileNameLength !=  0 && RenameInfo->RootDirectory ==  NULL);
		NextIrpSp->Parameters.SetFile.ReplaceIfExists =  RenameInfo->ReplaceIfExists;
	}

	//
	// Before we call the FSD to process this request we must set
	// completion routine which will be responsible to free the Irp
	// and to do some little postprocessing.
	//

	IoSetCompletionRoutine( Irp,FsTPMSynchronousApiCompletion,NULL,TRUE,TRUE,TRUE );

	//
	// Call the File System Driver to do the task requested by caller.
	//

	Status =  IoCallDriver(DeviceObject, Irp);

	if (Status ==  STATUS_PENDING)
	{
		(VOID)KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);

		Status =  IoStatus.Status;
	}

	//
	// Return to our caller with request's status.
	//	

	return Status;
}

//
//
//

NTSTATUS
FsTPMSynchronousApiCompletion (
							IN PDEVICE_OBJECT DeviceObject,
							IN PIRP Irp,
							IN PVOID Context
							)
{
	//ASSERT(DeviceObject ==  NULL && Context ==  NULL);

	//
	// If there is an AuxiliaryBuffer we have to free it.
	//

	if (Irp->Tail.Overlay.AuxiliaryBuffer !=  NULL)
	{
		ExFreePool(Irp->Tail.Overlay.AuxiliaryBuffer);
	}

	//
	// If there is a Mdl associated we have to deal with it
	//

	if (Irp->MdlAddress)
	{
		PMDL Mdl;
		KdPrint(("AGFS: Buffered requests should not have an MDL!\n"));
		KdBreakPoint();

		//
		//
		//

		Mdl =  Irp->MdlAddress;

		while (Mdl !=  NULL)
		{
			MmUnlockPages(Mdl);

			Mdl =  Mdl->Next;
		}

		IoFreeMdl(Irp->MdlAddress);
	}

	//
	// We must copy the IoStatus to UserIosb and set
	// the user event so the caller wakes up.
	//

	*Irp->UserIosb =  Irp->IoStatus;

	ASSERT(Irp->UserEvent !=  NULL);
	KeSetEvent(Irp->UserEvent, EVENT_INCREMENT, FALSE);

	//
	// Finally free the Irp.
	//

	IoFreeIrp(Irp);

	//
	// Prevent the IoCompleteRequest to do anything with
	// this already freed Irp.
	//

	return STATUS_MORE_PROCESSING_REQUIRED;
}

#define  try_return(X)  X; goto try_exit
NTSTATUS
FsTPMCreateFile (
			  IN PVCB Vcb,
			  IN ACCESS_MASK DesiredAccess,
			  IN POBJECT_ATTRIBUTES ObjectAttributes,
			  IN PLARGE_INTEGER AllocationSize OPTIONAL,
			  IN ULONG FileAttributes,
			  IN ULONG ShareAccess,
			  IN ULONG Disposition,
			  IN ULONG CreateOptions,
			  IN PVOID EaBuffer OPTIONAL,
			  IN ULONG EaLength,
			  IN ULONG Options,
			  OUT ULONG *Information,
			  OUT	PFILE_OBJECT FileObject,
			  OUT HANDLE *FileHandle OPTIONAL
			  )
{
	PIRP Irp = NULL;
	PFILE_OBJECT NewFileObject = NULL;
	PDEVICE_OBJECT RealDevice = Vcb->RealDevice;
	PDEVICE_OBJECT DeviceObject = Vcb->NextLowerDevice;
	//	PVPB Vpb;
	IO_SECURITY_CONTEXT SecurityContext;
	ACCESS_STATE AccessState;
	PIO_STACK_LOCATION NextIrpSp;
	IO_STATUS_BLOCK IoStatus;
	OBJECT_ATTRIBUTES ObjAttr;
	NTSTATUS Status;
	KEVENT Event;
	LARGE_INTEGER AllocSize;

	BOOLEAN CreatedAccessState =  FALSE;

	// <<<<<<<<<<<<<<<<<<<<<<<Notice>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	// I have no document to introduce AUXDATA
	// Smith, Joel said: Note the pAuxData variable.  
	//					 Obviously, a 1k nonpaged buffer is overkill, but I haven't 
	//					 yet bothered to try to figure out what SeCreateAccessState 
	//			     	 puts in here.
	//	 But I have seen another articles which said AUX_DATA just used to 
	// describe that the AUX device, you can see afximpl.h and 
	// http://www.sources.ru/cpp/mfc/t3552.htm .
	//
	ULONG *pAuxData=(ULONG*)ExAllocatePool(NonPagedPool, 1024); 
	memset(pAuxData, 0, 1024); 


	__try
	{
		//
		// Build AccessState for this create request.
		//

		Status =  SeCreateAccessState( &AccessState,pAuxData,DesiredAccess,IoGetFileObjectGenericMapping() );

		if (!NT_SUCCESS(Status))
		{
			try_return(Status);
		}

		CreatedAccessState =  TRUE;

		//
		// Initialize event on which we will occasionaly wait.
		//

		KeInitializeEvent(&Event, SynchronizationEvent, FALSE);

		//
		// Allocate an IRP with appropriate number of stack locations.
		//

		Irp =  IoAllocateIrp(DeviceObject->StackSize, FALSE);

		if (!Irp)
		{
			try_return(Status =  STATUS_INSUFFICIENT_RESOURCES);
		}

		//
		// Fill in basic Irp fields like a Thread, RequestorMode and Flags.
		//

		Irp->Tail.Overlay.Thread =  PsGetCurrentThread();
		Irp->RequestorMode =  KernelMode;
		SetFlag(Irp->Flags, IRP_CREATE_OPERATION | IRP_SYNCHRONOUS_API);

		//
		// Fill in the SecurityContext for this create request.
		//

		SecurityContext.SecurityQos = (PSECURITY_QUALITY_OF_SERVICE)ObjectAttributes->SecurityQualityOfService;
		SecurityContext.AccessState =  &AccessState;
		SecurityContext.DesiredAccess =  DesiredAccess;
		SecurityContext.FullCreateOptions =  CreateOptions;

		//
		// Fill in basic fields in the next stack location.
		//

		NextIrpSp =  IoGetNextIrpStackLocation(Irp);

		NextIrpSp->Control =  0;
		NextIrpSp->MajorFunction =  IRP_MJ_CREATE;
		NextIrpSp->Flags =  (UCHAR)Options;

		if (!FlagOn(ObjectAttributes->Attributes, OBJ_CASE_INSENSITIVE))
		{
			SetFlag(NextIrpSp->Flags, SL_CASE_SENSITIVE);
		}

		//
		// Fill in the AllocationSize and EaBuffer.
		//

		AllocSize.QuadPart =  AllocationSize ? AllocationSize->QuadPart : 0;

		Irp->Overlay.AllocationSize.QuadPart =  AllocSize.QuadPart;
		Irp->AssociatedIrp.SystemBuffer =  EaBuffer;

		//
		// Fill in request parameters in next stack location.
		//

		NextIrpSp->Parameters.Create.Options =  (CreateOptions & 0xFFFFFF) | (Disposition << 24);
		NextIrpSp->Parameters.Create.FileAttributes = (USHORT)FileAttributes;
		NextIrpSp->Parameters.Create.ShareAccess =  (USHORT)ShareAccess;
		NextIrpSp->Parameters.Create.SecurityContext =  &SecurityContext;
		NextIrpSp->Parameters.Create.EaLength =  EaLength;

		//
		// Fill in other fields in Irp.
		//

		Irp->UserIosb =  &IoStatus;
		Irp->UserEvent =  &Event;

		Irp->MdlAddress =  NULL;
		Irp->PendingReturned =  FALSE;
		Irp->Cancel =  FALSE;
		Irp->CancelRoutine =  NULL;
		Irp->Tail.Overlay.AuxiliaryBuffer =  NULL;

		//
		// Create new file object.
		//

		InitializeObjectAttributes(&ObjAttr, NULL,ObjectAttributes->Attributes, 0, NULL);

		Status =  ObCreateObject( KernelMode, *IoFileObjectType,&ObjAttr,KernelMode,0,sizeof(FILE_OBJECT),0,0,(void**)&NewFileObject );

		if (!NT_SUCCESS(Status))
		{
			try_return(Status);
		}

		//
		// Zero the file object and initialize type and size.
		//
		RtlZeroMemory(NewFileObject, sizeof(FILE_OBJECT));

		NewFileObject->Type =  IO_TYPE_FILE;
		NewFileObject->Size =  sizeof(FILE_OBJECT);

		//
		// Fill in the RelatedFileObject as a RootDirectory.
		//

		NewFileObject->RelatedFileObject = (PFILE_OBJECT)ObjectAttributes->RootDirectory;

		//
		// Initialize some more things when the file is for synchronous access.
		//

		if (FlagOn(CreateOptions, FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT))
		{
			SetFlag(NewFileObject->Flags, FO_SYNCHRONOUS_IO);

			if (FlagOn(CreateOptions, FILE_SYNCHRONOUS_IO_ALERT))
			{
				SetFlag(NewFileObject->Flags, FO_ALERTABLE_IO);
			}

			KeInitializeEvent(&NewFileObject->Lock, SynchronizationEvent, FALSE);

			NewFileObject->Waiters =  0;
			NewFileObject->CurrentByteOffset.QuadPart =  0;
		}

		//
		// Set some file object flags with respect to CreateOptions.
		//


		if (FlagOn(CreateOptions, FILE_NO_INTERMEDIATE_BUFFERING))
		{
			SetFlag(NewFileObject->Flags, FO_NO_INTERMEDIATE_BUFFERING);
		}

		if (FlagOn(CreateOptions, FILE_WRITE_THROUGH))
		{	
			SetFlag(NewFileObject->Flags, FO_WRITE_THROUGH);
		}

		if (FlagOn(CreateOptions, FILE_SEQUENTIAL_ONLY))
		{
			SetFlag(NewFileObject->Flags, FO_SEQUENTIAL_ONLY);
		}

		if (!FlagOn(ObjectAttributes->Attributes, OBJ_CASE_INSENSITIVE))
		{
			SetFlag(NewFileObject->Flags, FO_OPENED_CASE_SENSITIVE);
		}

		//
		// Initialize the DeviceObject field in file object.
		//

		NewFileObject->DeviceObject =  RealDevice;

		//
		// If the caller requests no handle we must insert the
		// file object at this time.
		//

		if (FileHandle ==  NULL)
		{
			HANDLE Handle;

			//
			// Insert the file object to the Object Manager
			// requesting one additional reference.
			//

			Status =  ObInsertObject( NewFileObject,NULL,DesiredAccess,1,(PVOID*)&NewFileObject,&Handle );

			if (!NT_SUCCESS(Status))
			{
				try_return(Status);
			}	

			//
			// Close the handle (one reference remains).
			//

			Status =  NtClose(Handle);
			ASSERT(NT_SUCCESS(Status));

			ClearFlag(NewFileObject->Flags, FO_HANDLE_CREATED);
		}

		//
		// Associate the NewFileObject with the Irp
		//

		Irp->Tail.Overlay.OriginalFileObject =  NewFileObject;
		NextIrpSp->FileObject =  NewFileObject;

		//
		// If the ObjectAttributes contains some name we must
		// make a copy for the file object.
		//

		if (ObjectAttributes->ObjectName->Length)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产人成亚洲第一网站在线播放| 欧美三级韩国三级日本一级| 日韩国产在线观看一区| 亚洲蜜桃精久久久久久久| 国产精品人成在线观看免费| 久久久不卡网国产精品二区| 国产免费观看久久| 一区在线中文字幕| 亚洲欧洲www| 亚洲免费视频成人| 亚洲高清在线视频| 日韩电影在线看| 久久精品国产77777蜜臀| 韩国精品主播一区二区在线观看 | 成人禁用看黄a在线| 国产成人午夜电影网| 国产91富婆露脸刺激对白| 99久久er热在这里只有精品15| 不卡在线观看av| 色综合久久综合中文综合网| 欧美日韩免费电影| 日韩美女主播在线视频一区二区三区 | 日本特黄久久久高潮| 久久精品国产第一区二区三区| 国产成人在线电影| 91在线国产福利| 精品1区2区3区| 久久免费视频一区| 亚洲免费视频成人| 麻豆国产精品777777在线| 成人av在线电影| 欧美裸体一区二区三区| 国产网站一区二区| 亚洲综合色丁香婷婷六月图片| 视频一区欧美日韩| 国产成人综合网| 欧美日韩精品一区二区三区蜜桃 | 亚洲国产精品精华液2区45| 亚洲女同一区二区| 国产在线播放一区三区四| 色综合色狠狠天天综合色| 日韩一区二区免费视频| 亚洲精品一二三| 国精品**一区二区三区在线蜜桃| 色视频欧美一区二区三区| 日韩欧美一区二区在线视频| 日韩一区在线播放| 久久国产综合精品| 国产激情精品久久久第一区二区 | 美女免费视频一区| 色成年激情久久综合| 久久先锋资源网| 蜜臀久久99精品久久久画质超高清| 国产麻豆9l精品三级站| 91麻豆精品国产自产在线观看一区| 国产色一区二区| 激情综合色播五月| 在线播放亚洲一区| 国产精品久久久久久户外露出| 蜜桃视频在线一区| 欧美日韩亚洲国产综合| 亚洲欧洲无码一区二区三区| 国产露脸91国语对白| 欧美日本一区二区三区四区| 亚洲另类色综合网站| 99在线精品一区二区三区| 精品不卡在线视频| 美女视频黄a大片欧美| 欧美精品色综合| 亚洲国产日韩av| 在线这里只有精品| 亚洲摸摸操操av| 日本丰满少妇一区二区三区| 亚洲精品欧美在线| 欧洲视频一区二区| 亚洲一线二线三线久久久| 日本高清不卡在线观看| 亚洲视频一区二区免费在线观看| va亚洲va日韩不卡在线观看| 亚洲国产精品传媒在线观看| 国产v综合v亚洲欧| 国产欧美一区二区精品秋霞影院| 国产精品一区二区在线观看不卡 | 成人免费视频视频在线观看免费| 久久亚洲捆绑美女| 国产盗摄女厕一区二区三区| 国产精品久久久久久久久免费相片 | 国产精品亚洲成人| 国产精品亲子伦对白| 成人国产精品免费观看视频| 综合欧美一区二区三区| 色综合天天视频在线观看 | 午夜国产精品影院在线观看| 日韩三级视频在线观看| 国产精品影视网| 亚洲欧洲精品一区二区三区| 日本福利一区二区| 免费成人在线视频观看| 久久精品一区二区三区不卡| 99久久国产综合色|国产精品| 亚洲第一搞黄网站| 精品粉嫩超白一线天av| 成人小视频免费观看| 亚洲一区二区中文在线| 欧美美女视频在线观看| 国内精品国产三级国产a久久| 欧美国产日产图区| 欧美日韩三级一区二区| 国产综合色精品一区二区三区| 亚洲免费大片在线观看| 日韩欧美国产一二三区| 国产精品1区二区.| 午夜日韩在线观看| 国产午夜精品一区二区| 欧美日韩一区二区在线观看视频| 国内精品嫩模私拍在线| 一区二区三区高清在线| 亚洲精品在线网站| 欧洲精品一区二区| 国产成人免费av在线| 亚洲成人中文在线| 中文字幕五月欧美| 亚洲精品一区二区三区精华液 | 成人免费毛片a| 日av在线不卡| 亚洲精品视频免费观看| 久久久亚洲欧洲日产国码αv| 欧美影视一区二区三区| av电影在线不卡| 国产精品1区2区3区在线观看| 日日夜夜免费精品| 亚洲狠狠丁香婷婷综合久久久| 精品国产99国产精品| 91精品国产乱码久久蜜臀| 91在线观看免费视频| 国产成人在线视频免费播放| 美女脱光内衣内裤视频久久网站 | 亚洲电影视频在线| 国产精品电影院| 国产亚洲一区二区三区在线观看| 欧美精品aⅴ在线视频| 在线观看av不卡| 在线亚洲一区观看| av电影在线不卡| 一本久道中文字幕精品亚洲嫩| 丁香五精品蜜臀久久久久99网站| 狠狠色丁香九九婷婷综合五月| 免费三级欧美电影| 日本欧美一区二区三区| 亚洲成a人v欧美综合天堂下载| 又紧又大又爽精品一区二区| 一区二区三区在线播| 亚洲区小说区图片区qvod| 中文字幕一区av| 亚洲乱码日产精品bd| 亚洲专区一二三| 午夜精品一区二区三区电影天堂| 亚洲成人综合在线| 午夜欧美电影在线观看| 五月综合激情网| 免费在线观看一区| 国产在线视视频有精品| 国产乱码精品一区二区三区忘忧草| 国产一区二区三区黄视频 | 亚洲综合在线电影| 亚洲香肠在线观看| 日韩成人一区二区三区在线观看| 麻豆精品国产91久久久久久 | 亚洲欧洲另类国产综合| 亚洲欧美色图小说| 午夜精品久久久久久久| 久久综合综合久久综合| 国产精品羞羞答答xxdd| 91色porny在线视频| 欧美日韩一二三| 26uuuu精品一区二区| 欧美国产精品一区二区三区| 国产精品丝袜一区| 一区二区三区欧美在线观看| 日韩av一级电影| 国产成人av福利| 欧美性色aⅴ视频一区日韩精品| 日韩欧美一区在线观看| 亚洲色图欧美激情| 日韩—二三区免费观看av| 国产成人综合网| 欧美日韩成人一区| 国产日韩av一区二区| 亚洲五码中文字幕| 国产精品一二三区在线| 欧美色综合网站| 国产精品久久久99| 日本亚洲三级在线| 99国产精品久久| 日韩欧美国产系列| 亚洲高清久久久| 97精品超碰一区二区三区| 日韩午夜精品电影| 一区二区三区四区视频精品免费| 激情丁香综合五月|