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

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

?? file.#1

?? sl811 c8051F驅(qū)動程序 保證絕對可以使用 USB通信協(xié)議USB1.1
?? #1
字號:
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龍源
//*************************************************************************
#include "AT89X52.h"
#include "host_811.h"
#include "file.h"
#include "math.h"
#include "string.h"
#include "ufi.h"
struct _BPB		SimpleBpb;
struct _FILE	FileControl;
FAT_PARAMETER FatParameter;
WORD FatCache[2][256];
BYTE InitFsys()
{	
	BYTE buf[512];
	UINT m_Offset;
	DWORD DataSectors,TotalClusters;
	///////////////////////////////////////////////////////////////////////
	DelayMs(100);
	if(Read(0,1,(BYTE *)buf)==FALSE)	
		return FALSE;
	DelayMs(100);
	if(buf[0x00]==0xEB ||buf[0x02]==0x90)	
		m_Offset=0;
	else
		m_Offset=ConvTwoBytes((buf+0x1c6));	
	if(Read(0+m_Offset,1,(BYTE *)buf)==FALSE)
		return FALSE;
	SimpleBpb.BytsPerSec =ConvTwoBytes((&buf[11]));
	SimpleBpb.SecPerClus = buf[13];
	SimpleBpb.RsvdSecCnt =ConvTwoBytes((&buf[14]));
	SimpleBpb.NumFATs = buf[16];
	SimpleBpb.RootEntCnt = ConvTwoBytes((&buf[17]));
	if((SimpleBpb.TotSec = ConvTwoBytes((&buf[19])))==0)
		SimpleBpb.TotSec = ConvFourBytes((&buf[32]));	
	if((SimpleBpb.FATSz = ConvTwoBytes((&buf[22])))==0)
		SimpleBpb.FATSz =ConvFourBytes((&buf[36]));
	//------------------------------------------------------------------------
	//Compute the corresponding data for Fat information;
	//------------------------------------------------------------------------
	FatParameter.RootDirSectors= ((SimpleBpb.RootEntCnt * 32) + (SimpleBpb.BytsPerSec - 1)) / SimpleBpb.BytsPerSec;
	DataSectors = SimpleBpb.TotSec - (SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParameter.RootDirSectors);
	TotalClusters = DataSectors / SimpleBpb.SecPerClus;
	//判斷文件格式是否為fat16;
	if(TotalClusters < 4085 || TotalClusters >= 65525)
		return FALSE;	
	FatParameter.FirstFatSecNum=SimpleBpb.RsvdSecCnt+m_Offset;
	FatParameter.FirstRootDirSecNum = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz)+m_Offset;
	FatParameter.FirstDataSector = SimpleBpb.RsvdSecCnt + (SimpleBpb.NumFATs * SimpleBpb.FATSz) + FatParameter.RootDirSectors+m_Offset;	
	return TRUE;
}
WORD SeekEmptyCluster()
{	
//	static WORD  Cluster=2;//加快尋找進度
	WORD  i,Cache[256],OffSet,j;
	//	WORD  i,Cache[256],OffSet;
		for(i=0;i<SimpleBpb.FATSz;i++)
	{
		if(!Read(FatParameter.FirstFatSecNum+i,1,(BYTE *)Cache))
			return FALSE;
		for(j=0;j<256;j++)
		{
				if(Cache[j]==0)
					return (i*256+j);			
		}
	}
	return 0xffff;
	//************************************************************************
/*	for(i=Cluster;i<SimpleBpb.BytsPerSec * SimpleBpb.FATSz / sizeof(WORD);i++)
	{	
		OffSet=i%(SimpleBpb.BytsPerSec/2);
		if(OffSet==0)
		{
			if(!Read((i*2/SimpleBpb.BytsPerSec)+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
				return 0xffff;		
		}
		 if(Cache[OffSet]==0)
		 {
			Cluster=i;
			return  Cluster;
		 }

	}//*end for cycle
	//************************************************************************
	for(i=2;i<Cluster;i++) 
	{
		OffSet=i%(SimpleBpb.BytsPerSec/2);
		if(!Read(i*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum,1,(BYTE *)Cache))
			return 0xffff;
		if(Cache[OffSet]==0x0)
		{
			Cluster=i;
			return  Cluster;
		}
	}//*end for cycl
	return 0xffff;*/
}	
WORD LinkClusterList(WORD Cluster)
{
	static WORD VariedCluster=2;
	WORD i,OffSet,FixedSec,UpdateSec,j;
	BYTE p;	
	//////////////////////////////////////////////////////////////////////////////////
	if(VariedCluster==2)
	{	 FatCache[0][256]=0;
	//	FatCache[1][256]=0;
		VariedCluster=3;
	}
	//VariedCluster=Cluste
	FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
	if(FatCache[0][256]!=FixedSec+FatParameter.FirstFatSecNum)
	{	FatCache[0][256]=0;
		//	if(FatCache[1][256])
		//	if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
		//		return FALSE;
		if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
			return FALSE;
	}
	for(i=FixedSec;i<SimpleBpb.FATSz;i++)
	{
		if(i!=FixedSec)
		{
			p=1;
			FatCache[0][256]=0;
			if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
				return FALSE;
		}
		else{
			p=0;		
			FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
			}
		for(j=0;j<256;j++)
		{
			if(FatCache[p][j]==0)
			{//	if(i==FixedSec)
			//	{	p=0;	
			//		FatCache[0][256]=FixedSec+FatParameter.FirstFatSecNum;
			//	}
			//else{
			//	p=1;
			//	FatCache[0][256]=0;
			//	}
				FatCache[p][j]=0xffff;
				FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
				if(i!=FixedSec)
				{	if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
						return FALSE;
					if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
						return FALSE;
				}
				return (i*256+j);
			}
		}
	}
	///////////////////////////////////////////////////////////////////////////
	FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
	if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
		return FALSE;
	for(i=0;i<FixedSec;i++)
	{
		if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
			return FALSE;
		for(j=0;j<256;j++)
		{
			if(FatCache[1][j]==0)
			{	
				FatCache[1][j]=0xffff;
				FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
				if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
					return FALSE;
				if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
					return FALSE;
				return (i*256+j);
			}
		}
	}
	return 0Xffff;	
/*	FixedSec=Cluster*2/SimpleBpb.BytsPerSec;
	if(!Read(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0]))
		return FALSE;
	for(i=FixedSec;i<SimpleBpb.FATSz;i++)
	{
		if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
			return FALSE;
		for(j=0;j<256;j++)
		{
			if(FatCache[1][j]==0)
			{	if(i==FixedSec)
					p=0;	
				else p=1;
				FatCache[p][j]=0xffff;
				FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
				if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
					return FALSE;
				if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
					return FALSE;
				return (i*256+j);
			}
		}
	}
	for(i=0;i<FixedSec;i++)
	{
		if(!Read(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[1]))
			return FALSE;
		for(j=0;j<256;j++)
		{
			if(FatCache[1][j]==0)
			{	if(i==FixedSec)
					p=0;	
				else p=1;
				FatCache[p][j]=0xffff;
				FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap((i*256+j));
				if(!Write(FixedSec+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[0],TRUE))
					return FALSE;
				if(!Write(i+FatParameter.FirstFatSecNum,1,(BYTE *)FatCache[p],TRUE))
					return FALSE;
				return (i*256+j);
			}
		}
	}
	return 0Xffff;*/
	///////////////////////////////////////////////////////////////////////////////
/*	FixedSec=Cluster*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum;
	if(!Read(FixedSec,1,(BYTE *)FatCache[0]))
		return FALSE;
	for(i=VariedCluster; i<SimpleBpb.BytsPerSec * SimpleBpb.FATSz / sizeof(WORD); i++)
	{	
		UpdateSec=i*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum;	
		OffSet=i%(SimpleBpb.BytsPerSec/2);
		if(FixedSec==UpdateSec)
		{
		p=0;
		}
		else
		{
			if(!Read(UpdateSec,1,(BYTE *)FatCache[1]))
				return FALSE;	
			p=1;
		}
		///////////////////////////////////////////////////////////////////////////
		if(FatCache[p][OffSet]==0)
		{
			FatCache[p][OffSet]=0xffff;
			VariedCluster= i;
			FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]= WordSwap(VariedCluster);
			if(!p)
			{
				if(!Write(FixedSec,1,(BYTE *)FatCache[p],TRUE))
					return FALSE;		
				return VariedCluster;
			}
			if(!Write(FixedSec,1,(BYTE *)FatCache[0],TRUE))
				return FALSE;
			
			if(!Write(UpdateSec,1,(BYTE *)FatCache[1],TRUE))
				return FALSE;		
			return VariedCluster;
		}
	}//*----------------end for cycle	
	//////////////////////////////////////////////////////////////////////////////////
	for(i=2;i<VariedCluster;i++)
	{
		UpdateSec=i*2/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum;	
		OffSet=i%(SimpleBpb.BytsPerSec/2);
		if(FixedSec==UpdateSec)
			p=0;	
		else
		{
			if(!Read(UpdateSec,1,(unsigned char *)FatCache[1]))
				return FALSE;	
			p=1;
		}
		
		if(FatCache[p][OffSet]==0)
		{
			FatCache[p][OffSet]=0xffff;
			VariedCluster= i;
			FatCache[0][Cluster%(SimpleBpb.BytsPerSec/2)]=WordSwap(VariedCluster);
			if(!p)
			{
				if(!Write(FixedSec,1,(unsigned char *)FatCache[p],TRUE))
					return FALSE;
				
				return VariedCluster;;
			}
			if(!Write(FixedSec,1,(unsigned char *)FatCache[0],TRUE))
				return FALSE;
			
			if(!Write(UpdateSec,1,(unsigned char *)FatCache[1],TRUE))
				return FALSE;	
			return VariedCluster;;
		}
		
	}//----------------------------end for cycle
	/////////////////////////////////////////////////////////////////////////////////
	return 0xffff;*/
}
WORD GetListCluster(WORD Cluster)
{
	WORD Fatbuf[256];
	//////////////////////////////////////////////////////////////////////////////////
	if(!Read(2*Cluster/SimpleBpb.BytsPerSec+FatParameter.FirstFatSecNum,1,(BYTE *)Fatbuf))
		return FALSE;
	return WordSwap(Fatbuf[Cluster%(SimpleBpb.BytsPerSec/2)]);
}
WORD SecToCluster(DWORD Sector)
{
	if(Sector < FatParameter.FirstDataSector)
		return FALSE;
	else
		return (WORD)((Sector -  FatParameter.FirstDataSector) / SimpleBpb.SecPerClus + 2);
}
DWORD ClusterToSec(WORD Cluster)
{
	if(Cluster<2)
		return (FatParameter.FirstDataSector-1);
	return ((Cluster-2)*SimpleBpb.SecPerClus+FatParameter.FirstDataSector);
}
DWORD SeekSector(DWORD Sector, const char dirname[11], struct _FILE *file)
{
	BYTE Cache[512];
	struct _DIR *dir;
	UINT j, i;
	WORD temp,temp1;
	///////////////////////////////////////////////////////////////////////////////////	
	for(i=0; i<SimpleBpb.RootEntCnt * sizeof(struct _DIR) / SimpleBpb.BytsPerSec; i++)
	{
		if(!Read(Sector,1,(BYTE *)Cache))
			return  0xffffffff;			
		dir = (struct _DIR *)Cache;
	//********************************************************************************
		for(j=0; (dir->Name[0] != '\0') && (j< SimpleBpb.BytsPerSec / sizeof(struct _DIR)); j++)
		{
			if(memcmp((const char*)dir->Name, dirname, 11)== 0)	
			{
				if(file != NULL)
				{
					memset(file, 0, sizeof(struct _FILE));
					file->DirSectorNum = Sector;
					file->DirIndex = j; //j 代表了文件中該扇區(qū)中的位置(0-15);
					memcpy(&file->dir, dir, sizeof(struct _DIR));
				}
				temp=WordSwap(dir->FstClusLO);
				temp1=ClusterToSec(temp);
				return temp1;
			}	
			dir++;
		}//end for cycle
		Sector++;
	}//end for cycle
	return  0xffffffff;
}

DWORD LocateFile(const char *filename, struct _FILE *file)
{
	DWORD Sector = FatParameter.FirstRootDirSecNum;
	char NewFile[12];
	char *p=NewFile;
	///////////////////////////////////////////////////////////////////////////////
	if(!CheckFileName(filename,p))
		return FALSE;
	Sector = SeekSector(Sector, p, file);
	if(*(p+11)==NULL)
		return Sector;
	return 0Xffffffff;
}
BYTE LocateDir(struct _DIR* new_dir, struct _FILE * fp)
{
	BYTE Cache[512];
	struct _DIR *dir;
	DWORD i;
	DWORD DirSectorNum = FatParameter.FirstRootDirSecNum;	
	////////////////////////////////////////////////////////////////////////////////
	for(i=0; i<SimpleBpb.RootEntCnt * sizeof(struct _DIR) / SimpleBpb.BytsPerSec; i++)//total root dir sectors;
	{
		if(!Read(DirSectorNum,1,(BYTE *)Cache))
			return FALSE;
		/////////////////////////////////////////////////////////////////////
		for(dir = (struct _DIR *)Cache; (BYTE*)dir < Cache + SimpleBpb.BytsPerSec; dir++)
		{
			if(dir->Name[0] == '\0'||dir->Name[0] == 0xE5)
			{
				memcpy(dir, new_dir, sizeof(struct _DIR));	
				if(!Write(DirSectorNum,1,Cache,TRUE))
					if(!Write(DirSectorNum,1,Cache,TRUE))	
						return FALSE;				
				if(fp)
				{
					fp->DirSectorNum = DirSectorNum;
					fp->DirIndex = ((BYTE*)dir - Cache)/sizeof(struct _DIR);
					memcpy(&fp->dir, new_dir, sizeof(struct _DIR));
				}
				return TRUE;
			}
		}//--------------------------end for cycle
		 DirSectorNum++;
	}//-------------------------------end for cycle
	return FALSE; 
}
BYTE CheckFileName(const char * oldfilename,  char newfilename[11])
{
	char* p=newfilename;
	char path[12];
	char* ppath = path;
	int dir_len_count; //count dir len.
	int i;
	////////////////////////////////////////////////////////////////////////////////////
	if(oldfilename==NULL || strlen(oldfilename) >=12)
		return FALSE;
	dir_len_count=0;
	strcpy(path, oldfilename);
	//變小寫字母為大寫
	for(i=0;(*ppath!=NULL&&i<12);i++)
	{
		if(	*ppath > 96 && *ppath < 123)
			*ppath -= 32;	
		ppath++;
	}
	memset(p, 0, 12);
	ppath = path;
	for(;;)
	{
		switch(*ppath)
		{
		case 0:
			{
				if(dir_len_count>=11)
					return TRUE;		
				else 
				{
				dir_len_count ++;
				*p = 0x20;
				p++;
				}
				continue;
			}
		////////////////////////////////////////////////////////////////////////////////
		case '.':
			{
				if(dir_len_count > 8 || dir_len_count ==0)
				{ 
					return FALSE;
				}
				if(ppath[1] == '.')
				{
					return FALSE;
				}
				for(i=0; i<(8 - dir_len_count); i++)
				{
					*p = 0x20;
					p++;
				}
				dir_len_count =8;
				ppath++;
				continue;
				break;
			}
		/////////////////////////////////////////////////////////////////////////////////
		case 0x22:
		case 0x2A:
		case 0x2B:
		case 0x2C:
		case 0x2F:
		case 0x3A:
		case 0x3B:
		case 0x3C:
		case 0x3D:
		case 0x3E:
		case 0x3F:
		case 0x5B:
		case 0x5D:
		case 0x7C:
			return FALSE;
		/////////////////////////////////////////////////////////////////////////////////
		default:
			{
				if(*ppath < 0x20)
					return FALSE;		
				break;	
			}
		////////////////////////////////////////////////////////////////////////////////
		}
		*p = *ppath;
		dir_len_count ++;
		if(dir_len_count >= 11)
			return TRUE;
		p++;
		ppath++;
	}//*end for cycle
	return FALSE;	
}
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龍源
//*************************************************************************

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久电影网站中文字幕| voyeur盗摄精品| 久久久久久久久久电影| 91视频免费看| 国产精品亚洲人在线观看| 欧美一区三区四区| 一区二区成人在线| 99精品国产一区二区三区不卡| 中文幕一区二区三区久久蜜桃| 制服丝袜亚洲播放| 国产亚洲欧洲997久久综合| 色吊一区二区三区| 亚洲国产高清aⅴ视频| 日本不卡视频一二三区| 麻豆中文一区二区| 精品视频全国免费看| 亚洲国产中文字幕| av不卡在线观看| 国产偷国产偷亚洲高清人白洁| 日韩和的一区二区| 欧美中文字幕一区| 亚洲裸体xxx| 不卡av免费在线观看| 中文字幕av一区二区三区| 丁香婷婷深情五月亚洲| 国产网红主播福利一区二区| 91日韩在线专区| 日本一区二区三区国色天香| 欧美日韩日本视频| 首页欧美精品中文字幕| 色成年激情久久综合| 一区二区三区av电影| 欧美成人伊人久久综合网| 国产在线精品一区二区不卡了| 另类小说综合欧美亚洲| 91在线云播放| 五月综合激情网| 亚洲欧美日本在线| 日本在线不卡一区| 色噜噜狠狠色综合欧洲selulu| 一区二区三区日韩欧美精品| 亚洲欧洲三级电影| 国产精品国产三级国产a | 成人综合婷婷国产精品久久免费| 在线播放91灌醉迷j高跟美女 | 久久精品久久久精品美女| 在线免费不卡视频| 97久久久精品综合88久久| 亚洲精品乱码久久久久久日本蜜臀| 久久先锋资源网| 日韩一区二区高清| 精品噜噜噜噜久久久久久久久试看 | 日韩一区二区在线播放| 成人精品鲁一区一区二区| 久久99精品国产.久久久久 | 精品久久久久久最新网址| 日韩一区二区在线播放| 精品久久久久久亚洲综合网 | 亚洲国产成人自拍| 免费成人小视频| 秋霞午夜av一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 久久亚洲欧美国产精品乐播 | 2024国产精品| 国产精品网站在线观看| 亚洲欧美一区二区三区久本道91| 亚洲欧美日韩一区二区 | 国产精品538一区二区在线| 日韩国产精品大片| 从欧美一区二区三区| 香蕉成人啪国产精品视频综合网| 亚洲午夜三级在线| 蜜臀av一级做a爰片久久| 免费欧美在线视频| 国产一区二区在线免费观看| 国产精品影视在线观看| eeuss影院一区二区三区| 在线观看区一区二| 日韩欧美国产成人一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 精品动漫一区二区三区在线观看 | 亚洲人成7777| 五月天欧美精品| 国产呦精品一区二区三区网站| 处破女av一区二区| 欧美精品丝袜久久久中文字幕| 欧美精品一区二区三区蜜桃视频 | 日韩av一二三| 丰满亚洲少妇av| 欧美影视一区在线| 久久久国产精品麻豆| 一区二区三区久久久| 国内成人精品2018免费看| 日韩一级大片在线| 国产精品理伦片| 日本欧美肥老太交大片| 成人a免费在线看| 在线不卡欧美精品一区二区三区| 久久久精品日韩欧美| 五月天激情综合| 成人性生交大片| 91精品国产91久久久久久最新毛片 | 日本一区二区三区在线不卡| 午夜精品久久久久久久蜜桃app| 国产精品一区二区三区乱码| 欧美日韩精品福利| 最近中文字幕一区二区三区| 九一久久久久久| 欧美日韩在线播放三区| 亚洲色图视频网| 国产毛片一区二区| 日韩一区和二区| 亚洲高清三级视频| 99免费精品在线| 久久久无码精品亚洲日韩按摩| 图片区小说区国产精品视频| 91一区二区在线观看| 欧美国产丝袜视频| 国内精品视频一区二区三区八戒 | 欧美电视剧免费全集观看| 亚洲国产裸拍裸体视频在线观看乱了| 国产中文一区二区三区| 日韩三级伦理片妻子的秘密按摩| 亚洲夂夂婷婷色拍ww47| 91同城在线观看| 国产精品国产三级国产三级人妇| 国产一级精品在线| 欧美电视剧免费全集观看| 美国欧美日韩国产在线播放| 9191成人精品久久| 一区二区三区高清在线| 99re这里只有精品6| 国产精品婷婷午夜在线观看| 国产精品99久久久久久宅男| www国产成人免费观看视频 深夜成人网| 三级久久三级久久久| 在线播放视频一区| 日本在线不卡一区| 欧美一级久久久久久久大片| 日本视频免费一区| 亚洲欧美一区二区三区久本道91| 成人一区在线看| 亚洲国产激情av| a亚洲天堂av| 综合av第一页| 91国产精品成人| 亚洲a一区二区| 欧美日本国产视频| 免费在线观看一区| 日韩欧美中文一区| 久久99国产精品成人| 欧美精品一区男女天堂| 国产精品91xxx| 国产精品大尺度| 色综合久久中文综合久久97| 亚洲一区二区四区蜜桃| 欧美精品v国产精品v日韩精品 | 国产大陆亚洲精品国产| 久久久久久久久久久久久久久99 | 日韩视频免费观看高清完整版| 麻豆freexxxx性91精品| 久久色视频免费观看| 成熟亚洲日本毛茸茸凸凹| 亚洲欧美日韩中文播放| 欧美男男青年gay1069videost| 秋霞午夜鲁丝一区二区老狼| 国产亚洲综合在线| 色婷婷av一区二区三区软件| 亚洲大型综合色站| 日韩精品一区二区三区老鸭窝| 国产一区二区福利| 亚洲天堂av一区| 欧美精品vⅰdeose4hd| 国产馆精品极品| 亚洲激情图片一区| 精品久久一区二区三区| 成人不卡免费av| 亚洲成年人网站在线观看| 久久久美女艺术照精彩视频福利播放| 99在线热播精品免费| 日韩中文字幕av电影| 国产欧美精品国产国产专区 | 91小视频免费观看| 午夜a成v人精品| 国产农村妇女毛片精品久久麻豆 | 亚洲精品国产视频| 日韩一区二区三区四区 | 日韩一区和二区| 92精品国产成人观看免费| 丝袜亚洲另类丝袜在线| 国产精品久久久久永久免费观看| 欧美日韩免费观看一区三区| 国产成人精品综合在线观看| 午夜不卡在线视频| 中文字幕在线不卡一区二区三区| 7777女厕盗摄久久久| 99视频国产精品| 国产一区高清在线| 亚洲风情在线资源站| 国产情人综合久久777777|