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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? memory.c

?? FSD file system driver
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	if(!IsFlagOn(FFSMcb->Flags, MCB_IN_TREE))
	{
		return TRUE;
	}

	if (FFSMcb->Parent)
	{
		if (FFSMcb->Parent->Child == FFSMcb)
		{
			FFSMcb->Parent->Child = FFSMcb->Next;
		}
		else
		{
			TmpMcb = FFSMcb->Parent->Child;

			while (TmpMcb && TmpMcb->Next != FFSMcb)
				TmpMcb = TmpMcb->Next;

			if (TmpMcb)
			{
				TmpMcb->Next = FFSMcb->Next;
			}
			else
			{
				// error
				return FALSE;
			}
		}
	}
	else if (FFSMcb->Child)
	{
		return FALSE;
	}

	RemoveEntryList(&(FFSMcb->Link));
	ClearFlag(FFSMcb->Flags, MCB_IN_TREE);

	return TRUE;
}


VOID
FFSFreeMcbTree(
	PFFS_MCB McbTree)
{
	if (!McbTree)
		return;

	if (McbTree->Child)
	{
		FFSFreeMcbTree(McbTree->Child);
	}

	if (McbTree->Next)
	{
		PFFS_MCB   Current;
		PFFS_MCB   Next;

		Current = McbTree->Next;

		while (Current)
		{
			Next = Current->Next;

			if (Current->Child)
			{
				FFSFreeMcbTree(Current->Child);
			}

			FFSFreeMcb(Current);
			Current = Next;
		}
	}

	FFSFreeMcb(McbTree);
}


BOOLEAN
FFSCheckSetBlock(
	PFFS_IRP_CONTEXT IrpContext,
	PFFS_VCB         Vcb,
	ULONG            Block)
{
#if 0
	ULONG           Group, dwBlk, Length;

	RTL_BITMAP      BlockBitmap;
	PVOID           BitmapCache;
	PBCB            BitmapBcb;

	LARGE_INTEGER   Offset;

	BOOLEAN         bModified = FALSE;


	//Group = (Block - FFS_FIRST_DATA_BLOCK) / BLOCKS_PER_GROUP;

	dwBlk = (Block - FFS_FIRST_DATA_BLOCK) % BLOCKS_PER_GROUP;


	Offset.QuadPart = (LONGLONG) Vcb->BlockSize;
	Offset.QuadPart = Offset.QuadPart * Vcb->ffs_group_desc[Group].bg_block_bitmap;

	if (Group == Vcb->ffs_groups - 1)
	{
		Length = TOTAL_BLOCKS % BLOCKS_PER_GROUP;

		/* s_blocks_count is integer multiple of s_blocks_per_group */
		if (Length == 0)
			Length = BLOCKS_PER_GROUP;
	}
	else
	{
		Length = BLOCKS_PER_GROUP;
	}

	if (dwBlk >= Length)
		return FALSE;

	if (!CcPinRead(Vcb->StreamObj,
				&Offset,
				Vcb->BlockSize,
				PIN_WAIT,
				&BitmapBcb,
				&BitmapCache))
	{
		FFSPrint((DBG_ERROR, "FFSDeleteBlock: PinReading error ...\n"));
		return FALSE;
	}

	RtlInitializeBitMap(&BlockBitmap,
			BitmapCache,
			Length);

	if (RtlCheckBit(&BlockBitmap, dwBlk) == 0)
	{
		FFSBreakPoint();
		RtlSetBits(&BlockBitmap, dwBlk, 1);
		bModified = TRUE;
	}

	if (bModified)
	{
		CcSetDirtyPinnedData(BitmapBcb, NULL);

		FFSRepinBcb(IrpContext, BitmapBcb);

		FFSAddMcbEntry(Vcb, Offset.QuadPart, (LONGLONG)Vcb->BlockSize);
	}

	{
		CcUnpinData(BitmapBcb);
		BitmapBcb = NULL;
		BitmapCache = NULL;

		RtlZeroMemory(&BlockBitmap, sizeof(RTL_BITMAP));
	}

	return (!bModified);
#endif
	return FALSE;
}


BOOLEAN
FFSCheckBitmapConsistency(
	PFFS_IRP_CONTEXT IrpContext,
	PFFS_VCB         Vcb)
{
#if 0
	ULONG i, j, InodeBlocks;

	for (i = 0; i < Vcb->ffs_groups; i++)
	{
		FFSCheckSetBlock(IrpContext, Vcb, Vcb->ffs_group_desc[i].bg_block_bitmap);
		FFSCheckSetBlock(IrpContext, Vcb, Vcb->ffs_group_desc[i].bg_inode_bitmap);


		if (i == Vcb->ffs_groups - 1)
		{
			InodeBlocks = ((INODES_COUNT % INODES_PER_GROUP) * sizeof(FFS_INODE) + Vcb->BlockSize - 1) / (Vcb->BlockSize);
		}
		else
		{
			InodeBlocks = (INODES_PER_GROUP * sizeof(FFS_INODE) + Vcb->BlockSize - 1) / (Vcb->BlockSize);
		}

		for (j = 0; j < InodeBlocks; j++)
			FFSCheckSetBlock(IrpContext, Vcb, Vcb->ffs_group_desc[i].bg_inode_table + j);
	}

	return TRUE;
#endif
	return FALSE;
}


VOID
FFSInsertVcb(
	PFFS_VCB Vcb)
{
	InsertTailList(&(FFSGlobal->VcbList), &Vcb->Next);
}


VOID
FFSRemoveVcb(
	PFFS_VCB Vcb)
{
	RemoveEntryList(&Vcb->Next);
}


NTSTATUS
FFSInitializeVcb(
	IN PFFS_IRP_CONTEXT IrpContext, 
	IN PFFS_VCB         Vcb, 
	IN PFFS_SUPER_BLOCK FFSSb,
	IN PDEVICE_OBJECT   TargetDevice,
	IN PDEVICE_OBJECT   VolumeDevice,
	IN PVPB             Vpb)
{
	BOOLEAN                     VcbResourceInitialized = FALSE;
	USHORT                      VolumeLabelLength;
	ULONG                       IoctlSize;
	BOOLEAN                     NotifySyncInitialized = FALSE;
	LONGLONG                    DiskSize;
	LONGLONG                    PartSize;
	NTSTATUS                    Status = STATUS_UNSUCCESSFUL;
	UNICODE_STRING              RootNode;
	USHORT                      Buffer[2];
	ULONG                       ChangeCount;

	__try
	{
		if (!Vpb)
		{
			Status = STATUS_DEVICE_NOT_READY;
			__leave;
		}

		Buffer[0] = L'\\';
		Buffer[1] = 0;

		RootNode.Buffer = Buffer;
		RootNode.MaximumLength = RootNode.Length = 2;

		Vcb->McbTree = FFSAllocateMcb(Vcb, &RootNode,
				FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_NORMAL);

		if (!Vcb->McbTree)
		{
			__leave;
		}

#if FFS_READ_ONLY
		SetFlag(Vcb->Flags, VCB_READ_ONLY);
#endif //READ_ONLY

		if (IsFlagOn(Vpb->RealDevice->Characteristics, FILE_REMOVABLE_MEDIA))
		{
			SetFlag(Vcb->Flags, VCB_REMOVABLE_MEDIA);
		}

		if (IsFlagOn(Vpb->RealDevice->Characteristics, FILE_FLOPPY_DISKETTE))
		{
			SetFlag(Vcb->Flags, VCB_FLOPPY_DISK);
		}
#if 0
		if (IsFlagOn(FFSGlobal->Flags, FFS_SUPPORT_WRITING))
		{
			if (IsFlagOn(FFSGlobal->Flags, FFS_SUPPORT_WRITING))
			{
				ClearFlag(Vcb->Flags, VCB_READ_ONLY);
			}
			else
			{
				SetFlag(Vcb->Flags, VCB_READ_ONLY);
			}
		}
		else
#endif
		{
			SetFlag(Vcb->Flags, VCB_READ_ONLY);
		}

		ExInitializeResourceLite(&Vcb->MainResource);
		ExInitializeResourceLite(&Vcb->PagingIoResource);

		ExInitializeResourceLite(&Vcb->McbResource);

		VcbResourceInitialized = TRUE;

		Vcb->McbTree->Inode = FFS_ROOT_INO;

		Vcb->Vpb = Vpb;

		Vcb->RealDevice = Vpb->RealDevice;
		Vpb->DeviceObject = VolumeDevice;

		{
			UNICODE_STRING      LabelName;
			OEM_STRING          OemName;

			LabelName.MaximumLength = 16 * 2;
			LabelName.Length    = 0;
			LabelName.Buffer    = Vcb->Vpb->VolumeLabel;

			RtlZeroMemory(LabelName.Buffer, LabelName.MaximumLength);

			VolumeLabelLength = 16;

			while((VolumeLabelLength > 0) &&
					((FFSSb->fs_volname[VolumeLabelLength-1] == 0x00) ||
					 (FFSSb->fs_volname[VolumeLabelLength-1] == 0x20)))
			{
				VolumeLabelLength--;
			}

			OemName.Buffer = FFSSb->fs_volname;
			OemName.MaximumLength = 16;
			OemName.Length = VolumeLabelLength;

			Status = FFSOEMToUnicode(&LabelName,
					&OemName);

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

			Vpb->VolumeLabelLength = LabelName.Length;
		}

		Vpb->SerialNumber = ((ULONG*)FFSSb->fs_id)[0] + ((ULONG*)FFSSb->fs_id)[1] +
			((ULONG*)FFSSb->fs_id)[2];


		Vcb->StreamObj = IoCreateStreamFileObject(NULL, Vcb->Vpb->RealDevice);

		if (Vcb->StreamObj)
		{
			Vcb->StreamObj->SectionObjectPointer = &(Vcb->SectionObject);
			Vcb->StreamObj->Vpb = Vcb->Vpb;
			Vcb->StreamObj->ReadAccess = TRUE;
			if (IsFlagOn(Vcb->Flags, VCB_READ_ONLY))
			{
				Vcb->StreamObj->WriteAccess = TRUE;
				Vcb->StreamObj->DeleteAccess = TRUE;
			}
			else
			{
				Vcb->StreamObj->WriteAccess = TRUE;
				Vcb->StreamObj->DeleteAccess = TRUE;
			}
			Vcb->StreamObj->FsContext = (PVOID) Vcb;
			Vcb->StreamObj->FsContext2 = NULL;
			Vcb->StreamObj->Vpb = Vcb->Vpb;

			SetFlag(Vcb->StreamObj->Flags, FO_NO_INTERMEDIATE_BUFFERING);
		}
		else
		{
			__leave;
		}

		InitializeListHead(&Vcb->FcbList);

		InitializeListHead(&Vcb->NotifyList);

		FsRtlNotifyInitializeSync(&Vcb->NotifySync);

		NotifySyncInitialized = TRUE;

		Vcb->DeviceObject = VolumeDevice;

		Vcb->TargetDeviceObject = TargetDevice;

		Vcb->OpenFileHandleCount = 0;

		Vcb->ReferenceCount = 0;

		Vcb->ffs_super_block = FFSSb;

		Vcb->Header.NodeTypeCode = (USHORT) FFSVCB;
		Vcb->Header.NodeByteSize = sizeof(FFS_VCB);
		Vcb->Header.IsFastIoPossible = FastIoIsNotPossible;
		Vcb->Header.Resource = &(Vcb->MainResource);
		Vcb->Header.PagingIoResource = &(Vcb->PagingIoResource);

		Vcb->Vpb->SerialNumber = 'PS';

		DiskSize =
			Vcb->DiskGeometry.Cylinders.QuadPart *
			Vcb->DiskGeometry.TracksPerCylinder *
			Vcb->DiskGeometry.SectorsPerTrack *
			Vcb->DiskGeometry.BytesPerSector;

		IoctlSize = sizeof(PARTITION_INFORMATION);

		Status = FFSDiskIoControl(
					TargetDevice,
					IOCTL_DISK_GET_PARTITION_INFO,
					NULL,
					0,
					&Vcb->PartitionInformation,
					&IoctlSize);

		PartSize = Vcb->PartitionInformation.PartitionLength.QuadPart;

		if (!NT_SUCCESS(Status))
		{
			Vcb->PartitionInformation.StartingOffset.QuadPart = 0;

			Vcb->PartitionInformation.PartitionLength.QuadPart =
				DiskSize;

			PartSize = DiskSize;

			Status = STATUS_SUCCESS;
		}

		IoctlSize = sizeof(ULONG);
		Status = FFSDiskIoControl(
					TargetDevice,
					IOCTL_DISK_CHECK_VERIFY,
					NULL,
					0,
					&ChangeCount,
					&IoctlSize);

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

		Vcb->ChangeCount = ChangeCount;

		Vcb->Header.AllocationSize.QuadPart =
			Vcb->Header.FileSize.QuadPart = PartSize;

		Vcb->Header.ValidDataLength.QuadPart = 
			(LONGLONG)(0x7fffffffffffffff);
		/*
		Vcb->Header.AllocationSize.QuadPart = (LONGLONG)(ffs_super_block->s_blocks_count - ffs_super_block->s_free_blocks_count)
			* (FFS_MIN_BLOCK << ffs_super_block->s_log_block_size);
			Vcb->Header.FileSize.QuadPart = Vcb->Header.AllocationSize.QuadPart;
			Vcb->Header.ValidDataLength.QuadPart = Vcb->Header.AllocationSize.QuadPart;
		*/

		{
			CC_FILE_SIZES FileSizes;

			FileSizes.AllocationSize.QuadPart =
				FileSizes.FileSize.QuadPart =
				Vcb->Header.AllocationSize.QuadPart;

			FileSizes.ValidDataLength.QuadPart= (LONGLONG)(0x7fffffffffffffff);

			CcInitializeCacheMap(Vcb->StreamObj,
					&FileSizes,
					TRUE,
					&(FFSGlobal->CacheManagerNoOpCallbacks),
					Vcb);
		}
#if 0 //	LoadGroup XXX
		if (!FFSLoadGroup(Vcb))
		{
			Status = STATUS_UNSUCCESSFUL;
			__leave;
		}
#endif
		FsRtlInitializeLargeMcb(&(Vcb->DirtyMcbs), PagedPool);
		InitializeListHead(&(Vcb->McbList));

		if (IsFlagOn(FFSGlobal->Flags, FFS_CHECKING_BITMAP))
		{
			FFSCheckBitmapConsistency(IrpContext, Vcb);
		}

		{
			ULONG   dwData[FFS_BLOCK_TYPES] = {NDADDR, 1, 1, 1};
			ULONG   dwMeta[FFS_BLOCK_TYPES] = {0, 0, 0, 0};
			ULONG   i;

			if (FS_VERSION == 1)
			{
				for (i = 0; i < FFS_BLOCK_TYPES; i++)
				{
					dwData[i] = dwData[i] << ((BLOCK_BITS - 2) * i);

					if (i > 0)
					{
						dwMeta[i] = 1 + (dwMeta[i - 1] << (BLOCK_BITS - 2));
					}

					Vcb->dwData[i] = dwData[i];
					Vcb->dwMeta[i] = dwMeta[i];
				}
			}
			else
			{
				for (i = 0; i < FFS_BLOCK_TYPES; i++)
				{
					dwData[i] = dwData[i] << ((BLOCK_BITS - 3) * i);

					if (i > 0)
					{
						dwMeta[i] = 1 + (dwMeta[i - 1] << (BLOCK_BITS - 3));
					}

					Vcb->dwData[i] = dwData[i];
					Vcb->dwMeta[i] = dwMeta[i];
				}
			}
		}

		SetFlag(Vcb->Flags, VCB_INITIALIZED);
	}

	__finally
	{
		if (!NT_SUCCESS(Status))
		{
			if (NotifySyncInitialized)
			{
				FsRtlNotifyUninitializeSync(&Vcb->NotifySync);
			}

			if (Vcb->ffs_super_block)
			{
				ExFreePool(Vcb->ffs_super_block);
				Vcb->ffs_super_block = NULL;
			}

			if (VcbResourceInitialized)
			{
				ExDeleteResourceLite(&Vcb->MainResource);
				ExDeleteResourceLite(&Vcb->PagingIoResource);
			}
		}
	}

	return Status;
}


VOID
FFSFreeVcb(
	IN PFFS_VCB Vcb)
{
	ASSERT(Vcb != NULL);

	ASSERT((Vcb->Identifier.Type == FFSVCB) &&
			(Vcb->Identifier.Size == sizeof(FFS_VCB)));

	FsRtlNotifyUninitializeSync(&Vcb->NotifySync);

	if (Vcb->StreamObj)
	{
		if (IsFlagOn(Vcb->StreamObj->Flags, FO_FILE_MODIFIED))
		{
			IO_STATUS_BLOCK IoStatus;

			CcFlushCache(&(Vcb->SectionObject), NULL, 0, &IoStatus);
			ClearFlag(Vcb->StreamObj->Flags, FO_FILE_MODIFIED);
		}

		if (Vcb->StreamObj->PrivateCacheMap)
			FFSSyncUninitializeCacheMap(Vcb->StreamObj);

		ObDereferenceObject(Vcb->StreamObj);
		Vcb->StreamObj = NULL;
	}

#if DBG
	if (FsRtlNumberOfRunsInLargeMcb(&(Vcb->DirtyMcbs)) != 0)
	{
		LONGLONG            DirtyVba;
		LONGLONG            DirtyLba;
		LONGLONG            DirtyLength;
		int                 i;

		for (i = 0; FsRtlGetNextLargeMcbEntry (&(Vcb->DirtyMcbs), i, &DirtyVba, &DirtyLba, &DirtyLength); i++)
		{
			FFSPrint((DBG_INFO, "DirtyVba = %I64xh\n", DirtyVba));
			FFSPrint((DBG_INFO, "DirtyLba = %I64xh\n", DirtyLba));
			FFSPrint((DBG_INFO, "DirtyLen = %I64xh\n\n", DirtyLength));
		}

		FFSBreakPoint();
	}
#endif

	FsRtlUninitializeLargeMcb(&(Vcb->DirtyMcbs));

	FFSFreeMcbTree(Vcb->McbTree);

	if (Vcb->ffs_super_block)
	{
		ExFreePool(Vcb->ffs_super_block);
		Vcb->ffs_super_block = NULL;
	}

	ExDeleteResourceLite(&Vcb->McbResource);

	ExDeleteResourceLite(&Vcb->PagingIoResource);

	ExDeleteResourceLite(&Vcb->MainResource);

	IoDeleteDevice(Vcb->DeviceObject);
}


VOID
FFSSyncUninitializeCacheMap(
	IN PFILE_OBJECT FileObject)
{
	CACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent;
	NTSTATUS WaitStatus;
	LARGE_INTEGER FFSLargeZero = {0, 0};


	KeInitializeEvent(&UninitializeCompleteEvent.Event,
			SynchronizationEvent,
			FALSE);

	CcUninitializeCacheMap(FileObject,
			&FFSLargeZero,
			&UninitializeCompleteEvent);

	WaitStatus = KeWaitForSingleObject(&UninitializeCompleteEvent.Event,
			Executive,
			KernelMode,
			FALSE,
			NULL);

	ASSERT (NT_SUCCESS(WaitStatus));
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品在线观看| 欧美日韩第一区日日骚| 国产精品嫩草99a| 亚洲一区二区三区自拍| eeuss鲁片一区二区三区在线观看| 久久精品网站免费观看| 国产成人精品一区二| 国产精品乱人伦一区二区| 日韩中文字幕一区二区三区| 日韩欧美国产小视频| 国产精品99久| 亚洲日本在线看| 欧美另类久久久品| 日本网站在线观看一区二区三区| 欧美久久久久久蜜桃| 精品亚洲欧美一区| 国产精品不卡一区| 欧美午夜精品免费| 国产一区二区三区在线观看精品| 日韩码欧中文字| 色94色欧美sute亚洲线路一久| 亚洲婷婷综合久久一本伊一区| 色婷婷亚洲精品| 国产精品乱码妇女bbbb| 色婷婷亚洲精品| 26uuu色噜噜精品一区| 男人的天堂久久精品| 国产视频一区二区三区在线观看 | 美女视频黄a大片欧美| 国产欧美日本一区视频| 在线观看视频91| 国精品**一区二区三区在线蜜桃| 在线播放一区二区三区| 东方欧美亚洲色图在线| 亚洲影院在线观看| 久久久久久夜精品精品免费| 欧美视频一区在线| 久久精品二区亚洲w码| 亚洲专区一二三| 最新成人av在线| 亚洲女爱视频在线| 一区二区视频免费在线观看| 亚洲国产三级在线| 日韩成人av影视| 久久精品久久综合| 国产成人午夜电影网| 成人性生交大片免费看中文| av中文一区二区三区| aaa欧美日韩| 欧美性受极品xxxx喷水| 欧美日韩国产精选| 日韩欧美国产一区二区在线播放| 久久亚洲精华国产精华液| 久久精品视频免费| 亚洲精品亚洲人成人网| 国产精品1024| 亚洲一区二区三区在线看| 久久精品亚洲精品国产欧美kt∨ | 国产精品国产a| 亚洲美女一区二区三区| 亚洲综合一区二区| 蜜臀va亚洲va欧美va天堂 | 激情都市一区二区| 成人一级片在线观看| 99久久99久久精品免费看蜜桃| 色综合天天综合色综合av| 欧美群妇大交群中文字幕| 欧美少妇一区二区| 精品国产乱码久久久久久夜甘婷婷| 久久精品一区八戒影视| 亚洲丝袜自拍清纯另类| 日韩和欧美一区二区三区| 成人黄色免费短视频| 亚洲444eee在线观看| 美女国产一区二区三区| 国产精品一区二区x88av| 91在线视频免费观看| 在线观看91精品国产麻豆| 日韩三级.com| 亚洲人成人一区二区在线观看 | 日韩二区在线观看| 国产乱淫av一区二区三区 | 91网站最新网址| 91九色最新地址| 精品理论电影在线| 亚洲人成网站精品片在线观看| 蜜臀va亚洲va欧美va天堂| 成人国产精品免费观看动漫| 正在播放亚洲一区| 国产精品久久久久久久久久免费看| 亚洲国产aⅴ天堂久久| 国产电影精品久久禁18| 欧美精品777| 亚洲色图欧洲色图婷婷| 精品一区精品二区高清| 在线一区二区三区做爰视频网站| 琪琪一区二区三区| 精品欧美一区二区久久| 国产女主播视频一区二区| 亚洲成av人片一区二区三区| 国产成人精品www牛牛影视| 色偷偷成人一区二区三区91 | 日本电影欧美片| 久久久精品免费网站| 午夜欧美电影在线观看| jvid福利写真一区二区三区| 欧美mv和日韩mv的网站| 丝袜美腿一区二区三区| 91在线看国产| 久久久久久久免费视频了| 亚洲成a人片在线观看中文| 成人免费va视频| 欧美成人性战久久| 亚洲国产精品视频| 日本韩国一区二区三区视频| 精品国产乱码久久久久久图片| 亚洲精品视频在线| 成人永久免费视频| 久久人人爽人人爽| 秋霞国产午夜精品免费视频| 国产一区 二区| 久久精品国产久精国产| 成人晚上爱看视频| 久久九九影视网| 日韩不卡免费视频| 在线观看免费一区| 亚洲人吸女人奶水| 91片黄在线观看| 欧美日本在线视频| 亚洲国产日韩a在线播放性色| 91小视频在线免费看| 国产亚洲欧洲997久久综合| www.欧美日韩国产在线| 久久久精品tv| 国产精品456露脸| 久久午夜色播影院免费高清| 亚洲一区免费观看| 色999日韩国产欧美一区二区| 一区二区三区在线免费视频| 99re亚洲国产精品| 亚洲综合一区二区三区| 欧美视频自拍偷拍| 视频一区视频二区中文| 在线亚洲+欧美+日本专区| 久久亚洲综合av| 成人免费黄色在线| 洋洋av久久久久久久一区| 欧洲国内综合视频| 日韩精品福利网| 精品少妇一区二区三区免费观看| 国内一区二区在线| 国产精品久久久久久亚洲伦| 欧美卡1卡2卡| 精品国产免费人成电影在线观看四季| 日本中文字幕一区二区视频 | 亚洲福利视频三区| 欧美一区二区三区在线看| 精品在线观看免费| 久久精品这里都是精品| www.亚洲在线| 国产精品国产自产拍高清av| 国产v日产∨综合v精品视频| 1000精品久久久久久久久| 欧美私人免费视频| 青青草97国产精品免费观看 | 国产精品久久久久一区二区三区| 在线视频欧美区| 麻豆91精品视频| 国产亚洲精品福利| 欧洲国产伦久久久久久久| 六月丁香婷婷色狠狠久久| 亚洲国产精品黑人久久久 | 国产精品入口麻豆原神| 91久久一区二区| 免费在线看成人av| 中文欧美字幕免费| 欧美人xxxx| 懂色av一区二区夜夜嗨| 亚洲mv大片欧洲mv大片精品| 国产无人区一区二区三区| 欧美日韩欧美一区二区| 精品一区二区免费| 亚洲最大色网站| 久久久精品综合| 欧美久久一区二区| 99热精品国产| 美日韩一区二区三区| 国产精品久久久久天堂| 日韩精品影音先锋| 91视频一区二区三区| 狠狠色丁香婷婷综合| 一区二区三区精品| 国产欧美精品国产国产专区| 欧美一区二区免费观在线| 99久久精品99国产精品| 经典三级一区二区| 亚洲成人av电影在线| 日韩理论片一区二区| 久久青草欧美一区二区三区| 欧美日韩视频在线一区二区 |