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

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

?? fat16.c

?? S3C44BO的nandflash的讀寫與文件系統(tǒng)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):

// NULL indicate failed.
// Valid format is full path:	\[8.3\]*DIR_Name檢驗(yàn)文件路徑字符串是否合法
// limits:
// length < 80 && !(special char)
char* get_valid_format(const char *fullpath)
{
	static char static_path[512];
	char* p=static_path;
	char path[80];
	char* ppath = path;
	int dir_len_count; //count dir len.
	int i;

	if(fullpath == NULL || strlen(fullpath) >=80 || *fullpath != '\\')//第一個(gè)字符是‘\’
		return NULL;

	if(strlen(fullpath) > 1 && fullpath[strlen(fullpath)-1] =='\\')//最后一個(gè)字符是‘\’
		return NULL;

	strcpy(path, fullpath);
	//strupr(path);
	memset(p, 0, 512);

	for(;;)
	{
		switch(*ppath)
		{
		case 0x00://結(jié)束符
			{
				if(dir_len_count != 0) // prev is not '\\'
				{
					for(i=0; i<(11 - dir_len_count); i++)//未滿11字節(jié),用blank填滿
					{
						*p = 0x20;
						p++;
					}
				}
			}
			return static_path;//返回整個(gè)字符串

		case '\\':
			{
				if(p != static_path) // this is not the first '\\'
				{
					if(dir_len_count == 0)// more than one '\\'
						return NULL;

					for(i=0; i<(11 - dir_len_count); i++)
					{
						*p = 0x20;
						p++;
					}
				}
				
				*p = '\\';
				p++;
				
				ppath++;
				dir_len_count =0;
				continue;
			}
			break;

		case '.':
			{
				if(dir_len_count > 8 || dir_len_count ==0) // '\\.' check
					return NULL;

				if(ppath[1] == '.' || ppath[1] == '\\') // more than one '.' or '.\\' check
					return NULL;

				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 NULL;

		default:
			{
				if(*ppath < 0x20)
					return NULL;				
			}
			break;
		}

		*p = *ppath;
		dir_len_count ++;

		if(dir_len_count > 11)
			return NULL;

		p++;
		ppath++;
	}

	return static_path;
}
//11個(gè)字符,其中8個(gè)字符為文件名,3個(gè)字符為文件后綴
void unformat_name(char * filename, const unsigned char dirname[11])
{
	int i;
	int j;

	memset(filename, 0, 13);

	for(i=0; i<8; i++)
	{
		if(dirname[i] != 0x20)
			filename[i] = dirname[i];
		else
			break;
	}
	
	if(dirname[8] != 0x20)
	{
		filename[i] = '.';
		j = i + 1;
		
		for(i=8; i<11; i++,j++)
		{
			if(dirname[i] != 0x20)
				filename[j] = dirname[i];
			else
				break;
		}
	}
}
//在所給的sector內(nèi)尋找與dirname名稱相同的項(xiàng)目
DWORD SectorSearch(DWORD Sector, const char dirname[11],  _FILE *file)
{
	BYTE* Cache;
	DIRENTRY *dir;
	unsigned int j;

	Cache = GetSectorData(Sector);
	if(Cache == NULL)
		return 0xffffffff;
	
	dir = (DIRENTRY *)Cache;
	for(j=0; (dir->deName[0] != '\0') && (j< BytesPerSector / sizeof(DIRENTRY)); j++)//不是空的目錄項(xiàng),在整個(gè)扇區(qū)搜索
	{
		if(memcmp((const char*)dir->deName, dirname, 11) == 0 && (!(dir->deAttributes & ATTR_VOLUME)))// not volumn id or long name entry.
		//如果目錄名/文件名相同,且不是卷標(biāo)項(xiàng)目
		{
			if(file != NULL)
			{
				memset((BYTE *)file, 0, sizeof(_FILE));
				file->DirSectorNum = Sector;
				file->DirIndex = j;
				memcpy((BYTE *)(&file->dir), (BYTE *)dir, sizeof(DIRENTRY));
			}
			return ClusterNum2SectorNum(dir->deStartCluster);//返回該目錄/文件的起始簇號(hào)
		}
		dir++;
	}
	return 0xffffffff;
}
//在所給sector內(nèi)尋找未被刪除且不是卷標(biāo)項(xiàng)的目錄項(xiàng),記錄項(xiàng)目名稱
int SectorGet(DWORD Sector, FatGet *fat_get)
{
	BYTE* Cache;
	DIRENTRY *dir;
	unsigned int j;

	Cache = GetSectorData(Sector);
	if(Cache == NULL)
		return 1;

	dir = (DIRENTRY *)Cache;
	dir += fat_get->DirIndex;

	for(j=fat_get->DirIndex; (dir->deName[0] != '\0') && (j< BytesPerSector / sizeof(DIRENTRY)); j++)
	{
		if(dir->deName[0] != 0xe5 && (!(dir->deAttributes & ATTR_VOLUME)))// not volumn id or long name entry.
		{
			fat_get->DirSectorNum = Sector;
			fat_get->DirIndex = j + 1;
			unformat_name(fat_get->filename, dir->deName);

			return 0;
		}

		dir++;
	}

	return 2;
}
//在根目錄區(qū)或者數(shù)據(jù)區(qū)尋找是否有與dirname名稱相同的項(xiàng)目
// return the first sector number of dir/file entry.
// 0xffffffff indicate failed.
DWORD fat_search(DWORD Sector, const char dirname[11], _FILE *file)
{	
	unsigned int i;
	WORD Cluster;
	DWORD FirstSectorOfFile;

	//if(dirname == NULL)
		//return 0xffffffff;
	
	if(Sector == FirstDirSector)//指定根目錄
	{
		for(i=0; i<(RootDirCount * sizeof(DIRENTRY) / BytesPerSector); i++)//在整個(gè)根目錄區(qū)尋找
		{
			FirstSectorOfFile = SectorSearch(Sector++, dirname, file);//尋找與dirname名稱相同的目錄/文件
			if(FirstSectorOfFile != 0xffffffff)                       //返回目錄/文件的第一簇
				return FirstSectorOfFile;
		}
	}
	else
	{
		Cluster = SectorNum2ClusterNum(Sector);//非根目錄

		// because arg Sector is the first sector of parent dir content,
		// so it is the first sector of the cluster.
		/*
		i = (Sector - FirstDataSector) % Bpb.SecPerClus;
		
		if(i != 0)
		{
			for(; i< Bpb.SecPerClus; i++)
			{
				FirstSectorOfFile = SectorSearch(Sector++, dirname, file);
				if(FirstSectorOfFile != 0xffffffff)
					return FirstSectorOfFile;
			}

			Cluster = GetNextClusterNum(Cluster);
			Sector = ClusterNum2SectorNum(Cluster);
		}*/
		
		while(Cluster != 0xffff)//不是最后一簇
		{
			for(i=0; i< SectorsPerCluster; i++)
			{
				FirstSectorOfFile = SectorSearch(Sector++, dirname, file);//尋找名稱相同的目錄/文件項(xiàng)
				if(FirstSectorOfFile != 0xffffffff)
					return FirstSectorOfFile;
			}

			Cluster = GetNextClusterNum(Cluster);
			Sector = ClusterNum2SectorNum(Cluster);
		}
	}

	return 0xffffffff;//找不到
}
//定位文件,即在根目錄區(qū)查找到它的第一級(jí)目錄,在下一個(gè)簇查找到它的第二級(jí)目錄……,直到最終定位文件。
// return the first sector number of dir/file content.
// 0xffffffff indicate failed.
// if path is root dir, file arg is ignore.
DWORD fat_locate(const char *path, _FILE *file)
{
	DWORD Sector = FirstDirSector;
	char *p;

	p = get_valid_format(path);//判斷是否合法
	if(p == NULL)
		return 0xffffffff;

	// locate first sub dir.
	p++;//忽略第一個(gè)‘\’

	// locate next sub dir(s).
	for(;;)
	{
		if(*p == NULL)
			return Sector;
		Sector = fat_search(Sector, p, file);//在根目錄區(qū)尋找是否有與P同名的目錄/文件項(xiàng)
		if(Sector == 0xffffffff)
			return 0xffffffff;

		p+=12;
	}
	// we never go here.
	return 0xffffffff;
}
//獲得當(dāng)前的系統(tǒng)時(shí)間
void fat_datetime(FatDateTime *fatdatetime)
{
	int year,month,day,weekday,hour,min,sec;
	WORD pdate = fatdatetime->Date;
	WORD ptm = fatdatetime->Time;

	if(rBCDYEAR == 0x99) 
	    year = 0x1999;
	else 
	    year = 0x2000 + rBCDYEAR;
	    month=rBCDMON;
	    day=rBCDDAY;
	    weekday=rBCDDATE;
	    hour=rBCDHOUR;
	    min=rBCDMIN;
	    sec=rBCDSEC;

	pdate = ((day << DD_DAY_SHIFT)&DD_DAY_MASK)+((month <<DD_MONTH_SHIFT)&DD_MONTH_MASK)
	        +(((year-1980) <<DD_YEAR_SHIFT)&DD_YEAR_MASK);
	
	ptm = ((hour<<DT_HOURS_SHIFT)&DT_HOURS_MASK)+((min<<DT_MINUTES_SHIFT)&DT_MINUTES_MASK)
	      +(((sec/2)<<DT_2SECONDS_SHIFT)&DT_2SECONDS_MASK);
	
	fatdatetime->TimeTenth = (sec % 2) * 100; //+ systm.wMilliseconds / 10;
}

///////////////////////////////////////////////////////////////////
// fat apis
///////////////////////////////////////////////////////////////////
//創(chuàng)建目錄
int fat_mkdir( const char *dirname)//僅1級(jí)目錄: 父目錄\新目錄
{
	DIRENTRY dir;
	DWORD SectorNum;
	char path[512];
	char name[11];
	char *p;
	FatDateTime tm;
	_FILE file;	
	BYTE* Cache;
	DIRENTRY *pdir;
	WORD NewCluster;
	char dot[11] = {'.', 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
	char dotdot[11] = {'.', '.', 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};

	// is path format correct ?
	p = get_valid_format(dirname);
	if(p == NULL)
		return 1;

	//if exist this dir ?
	if(fat_locate(dirname, NULL) != 0xffffffff)
		return 4;

	//separate path into parent and name(directory name)
	strncpy(name, &p[strlen(p)-11], 11);//拷貝新的目錄名->name
    //獲得了文件的第一級(jí)目錄(parent path)名稱
	strcpy(path, dirname);
	p = strrchr(path, '\\');//返回path中‘\’第一次出現(xiàn)的指針
	if(p == path) // it is root dir.
		*(p+1) = '\0';
	else
		*p = '\0';
    
	//locate parent path
	SectorNum = fat_locate(path, NULL);//獲取第一級(jí)目錄指向第一個(gè)扇區(qū)的地址
	if(SectorNum == 0xffffffff)
		return 2;

	//fill dir attributes
	memset((BYTE *)&dir, 0, sizeof(dir));
	memcpy((BYTE *)(dir.deName), name, 11);
	dir.deAttributes = ATTR_DIRECTORY;//目錄屬性
	fat_datetime(&tm);
	dir.CrtDate = dir.LstAccDate = dir.WrtDate = tm.Date;
	dir.CrtTime = dir.WrtTime = tm.Time;
	dir.CrtTimeTenth = tm.TimeTenth;

	//alloc one dir在父目錄所指的扇區(qū)下獲得一個(gè)新的目錄項(xiàng)
	if(AllocDir(SectorNum, &dir, &file) != 0)
		return 3;

	//alloc a cluster
	NewCluster = AllocCluster(0);
	if(NewCluster == 0xffff)
		return 4;

	//flush to disk
	Cache = GetSectorData(file.DirSectorNum);//將新的目錄項(xiàng)所在扇區(qū)讀入
	if(Cache == NULL)
		return 6;

	pdir = (DIRENTRY *)Cache;
	pdir += file.DirIndex;

	pdir->deStartCluster = NewCluster;//指向新的一簇
	Flush();

	//create . and .. dir items.
	Cache = GetSectorData(ClusterNum2SectorNum(NewCluster));//將新簇的第一個(gè)扇區(qū)讀入
	if(Cache == NULL)
		return 6;

	pdir = (DIRENTRY *)Cache;//獲得一個(gè)目錄項(xiàng)本地目錄:.?
	memset((BYTE *)pdir, 0, sizeof(DIRENTRY));
	memcpy((BYTE *)(pdir->deName), dot, 11);
	pdir->deAttributes = ATTR_DIRECTORY;
	fat_datetime(&tm);//獲得當(dāng)前系統(tǒng)的時(shí)間,填寫當(dāng)前目錄項(xiàng)的屬性
	pdir->CrtDate = pdir->LstAccDate = pdir->WrtDate = tm.Date;
	pdir->CrtTime = pdir->WrtTime = tm.Time;
	pdir->CrtTimeTenth = tm.TimeTenth;
	pdir->deStartCluster = NewCluster;//指向本地

	pdir++;//獲得一個(gè)目錄項(xiàng)父目錄:..
	memset((BYTE *)pdir, 0, sizeof(DIRENTRY));
	memcpy((BYTE *)(pdir->deName), dotdot, 11);
	pdir->deAttributes = ATTR_DIRECTORY;
	fat_datetime(&tm);
	pdir->CrtDate = pdir->LstAccDate = pdir->WrtDate = tm.Date;
	pdir->CrtTime = pdir->WrtTime = tm.Time;
	pdir->CrtTimeTenth = tm.TimeTenth;
	pdir->deStartCluster = SectorNum2ClusterNum(SectorNum);

	Flush();
    ReadPage(0,9,ClusterBuffer[9]);
	return 0;
}

//刪除目錄
int fat_rmdir( const char *dirname)
{
	DWORD SectorNum;
	_FILE file;
	char filename[13];

	//is dir have no sub dir or file ?
	if(fat_getfirst(dirname, filename) == 0)
		return 3;

	//locate
	SectorNum = fat_locate(dirname, &file);
	if(SectorNum == 0xffffffff)
		return 4;

	// is it a dir ?
	if(!(file.dir.deAttributes & ATTR_DIRECTORY))
		return 6;

	if(DeleteDir(&file) != 0)
		return 5;

	FreeCluster(file.dir.deStartCluster);

	return 0;
}

FatGet fat_get;
//path所指目錄下是否有子目錄或文件,獲得第一個(gè)子目錄/文件名
int fat_getfirst(const char *path, char* filename)
{
	DWORD Sector;
	unsigned int i;
	WORD Cluster;

	//if exist this dir ?
	Sector = fat_locate(path, NULL);
	if(Sector == 0xffffffff)
		return 1;

	if(Sector ==FirstDirSector)
	{
		fat_get.IsRootDir = 1;
		fat_get.DirIndex = 2;

		for(i=0; i<RootDirCount * sizeof(DIRENTRY) / BytesPerSector; i++)
		{
			if(SectorGet(Sector++, &fat_get) == 0)
			{
				strcpy(filename, fat_get.filename);
				return 0;
			}
		}
	}

	else
	{
		fat_get.IsRootDir = 0;
		fat_get.DirIndex = 2;

		Cluster = SectorNum2ClusterNum(Sector);

		// because the sector is the first sector of parent dir,
		// so it is the first sector of cluster.
		/*
		i = (Sector - FirstDataSector) % Bpb.SecPerClus;
		
		if(i != 0)
		{
			for(; i< Bpb.SecPerClus; i++)
			{
				if(SectorGet(Sector++, &fat_get) == 0)
				{
					strcpy(filename, fat_get.filename);
					return 0;
				}
			}

			Cluster = GetNextClusterNum(Cluster);
			Sector = ClusterNum2SectorNum(Cluster);
		}*/
		
		while(Cluster != 0xffff)
		{
			for(i=0; i< SectorsPerCluster; i++)
			{
				if(SectorGet(Sector++, &fat_get) == 0)
				{
					strcpy(filename, fat_get.filename);
					return 0;
				}
			}

			Cluster = GetNextClusterNum(Cluster);
			Sector = ClusterNum2SectorNum(Cluster);
		}
	}

	return 2;
}

int fat_getnext(char* filename)
{
	DWORD Sector;
	unsigned int i;
	WORD Cluster;

	Sector = fat_get.DirSectorNum;

	if(fat_get.IsRootDir)
	{
		i=(Sector - RootDirSectors) * BytesPerSector/ sizeof(DIRENTRY) + fat_get.DirIndex +1;

		for(; i<RootDirCount * sizeof(DIRENTRY) / BytesPerSector; i++)
		{
			if(SectorGet(Sector++, &fat_get) == 0)
			{
				strcpy(filename, fat_get.filename);
				return 0;
			}
		}
	}

	else
	{
		Cluster = SectorNum2ClusterNum(Sector);

		i = (Sector - FirstDataSector) % SectorsPerCluster;

		if(i != 0)
		{
			for(; i< SectorsPerCluster; i++)
			{
				if(SectorGet(Sector++, &fat_get) == 0)
				{
					strcpy(filename, fat_get.filename);
					return 0;
				}
			}

			Cluster = GetNextClusterNum(Cluster);
			Sector = ClusterNum2SectorNum(Cluster);
		}

		while(Cluster != 0xffff)
		{
			for(i=0; i< SectorsPerCluster; i++)
			{
				if(SectorGet(Sector++, &fat_get) == 0)
				{
					strcpy(filename, fat_get.filename);
					return 0;
				}
			}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 亚洲欧美在线高清| 欧洲精品一区二区| 91精品1区2区| 91麻豆.com| 一本到三区不卡视频| 成人免费av在线| 国产成都精品91一区二区三| 国产1区2区3区精品美女| 国产999精品久久久久久| 国产91精品久久久久久久网曝门 | 欧美日韩黄色一区二区| 欧美三片在线视频观看| 欧美军同video69gay| 日韩精品一区二区三区三区免费 | 国产亚洲欧美日韩日本| 欧美国产精品一区二区三区| 国产精品成人免费精品自在线观看| 国产精品色呦呦| 亚洲小说春色综合另类电影| 性欧美疯狂xxxxbbbb| 老司机精品视频线观看86 | 亚洲自拍偷拍图区| 视频一区二区国产| 美女精品自拍一二三四| 精品一区二区三区的国产在线播放| 日本aⅴ亚洲精品中文乱码| 亚洲精选一二三| 亚洲高清视频在线| 午夜a成v人精品| 久久精品国产亚洲高清剧情介绍| 狠狠色丁香九九婷婷综合五月| 久久不见久久见免费视频7| 国产精品1024| 色诱亚洲精品久久久久久| 欧美性大战久久久| 欧美电影免费观看高清完整版在 | 久久成人久久鬼色| 国产福利91精品一区| 91视频.com| 欧美一区二区三区在线视频| 久久综合久久综合亚洲| 中文字幕一区二区三区四区不卡| 亚洲黄色免费电影| 精品一区中文字幕| 色综合天天综合网国产成人综合天| 欧洲av在线精品| 精品成人在线观看| 亚洲美女电影在线| 免费观看成人鲁鲁鲁鲁鲁视频| 国产成人精品影视| 欧美影片第一页| 久久久五月婷婷| 一区二区三区高清在线| 韩国在线一区二区| 在线观看日韩毛片| 国产拍欧美日韩视频二区| 午夜精品爽啪视频| 成人app软件下载大全免费| 欧美一区二区网站| 一区二区三区中文字幕| 成人免费高清视频在线观看| 在线观看日韩一区| 久久久久久久久久久黄色| 亚洲综合av网| 成人av电影免费观看| 日韩欧美久久久| 五月综合激情日本mⅴ| jizz一区二区| 久久综合久久鬼色中文字| 亚洲国产成人tv| 91一区在线观看| 国产色综合久久| 麻豆成人久久精品二区三区红| 国产精一品亚洲二区在线视频| proumb性欧美在线观看| 日韩免费高清视频| 欧美国产日本韩| 久久不见久久见免费视频7| 91丨porny丨国产入口| 久久久不卡网国产精品一区| 麻豆91免费看| 日韩一区二区麻豆国产| 欧美国产视频在线| 成人爱爱电影网址| 国产精品久久久久一区| 成人污污视频在线观看| 国产人成一区二区三区影院| 国内精品写真在线观看| 精品剧情在线观看| 免费观看30秒视频久久| 欧美一区二区三区婷婷月色| 日本亚洲免费观看| 欧美精品日韩综合在线| 日韩二区在线观看| 日韩一级大片在线观看| 老汉av免费一区二区三区| 欧美一区二区日韩| 极品瑜伽女神91| 91精品国产综合久久小美女| 偷拍与自拍一区| 欧美美女直播网站| 日日夜夜免费精品| 久久一日本道色综合| 国产99一区视频免费| 自拍偷拍亚洲欧美日韩| 99久久国产综合精品女不卡| 亚洲免费视频中文字幕| 欧美日韩三级在线| 激情综合网激情| 国产欧美一区二区精品性| 91香蕉国产在线观看软件| 亚洲一区视频在线| 精品盗摄一区二区三区| thepron国产精品| 亚洲视频一二三区| 欧美日韩久久久久久| 久久99精品久久久久婷婷| 国产精品麻豆欧美日韩ww| 色婷婷激情久久| 精品影院一区二区久久久| 中文字幕亚洲成人| 91精品午夜视频| 蜜臀av一区二区三区| 久久精品视频在线免费观看 | 18成人在线视频| 欧美精品久久99久久在免费线| 麻豆一区二区三| 中文字幕欧美一区| 91精品国产日韩91久久久久久| 国产激情一区二区三区| 亚洲综合区在线| 久久青草国产手机看片福利盒子| 91视频91自| 国产经典欧美精品| 亚洲一区av在线| 国产农村妇女精品| 在线不卡的av| 色婷婷亚洲一区二区三区| 韩日精品视频一区| 日韩福利电影在线| 尤物在线观看一区| 中文字幕av一区二区三区高| 日韩一区二区在线免费观看| 欧亚洲嫩模精品一区三区| 不卡的电视剧免费网站有什么| 蜜桃精品视频在线| 亚洲大片一区二区三区| 欧美国产综合一区二区| 精品日韩在线一区| 96av麻豆蜜桃一区二区| 国产精品一区一区| 久久精品国产99国产| 午夜成人在线视频| 亚洲国产精品天堂| 一区二区三区欧美在线观看| 亚洲欧洲日韩av| 国产婷婷一区二区| 精品国产凹凸成av人导航| 91精品国产综合久久福利软件| 国产91精品入口| 99精品在线观看视频| 懂色av中文一区二区三区| 国产丶欧美丶日本不卡视频| 九色porny丨国产精品| 美腿丝袜在线亚洲一区| 日韩影院在线观看| 亚洲婷婷综合久久一本伊一区| 国产精品护士白丝一区av| 在线成人免费视频| 欧美精品久久久久久久久老牛影院| 国产麻豆欧美日韩一区| 九九精品一区二区| 粉嫩欧美一区二区三区高清影视| 精品中文字幕一区二区| 精品中文av资源站在线观看| 美腿丝袜亚洲综合| 韩国精品一区二区| 国产99精品视频| aaa欧美大片| 91浏览器入口在线观看| 大美女一区二区三区| 精久久久久久久久久久| 国产成人午夜视频| 成人免费va视频| 91久久精品一区二区| 在线播放中文一区| 国产亚洲精品aa午夜观看| 国产欧美一区二区精品久导航| 亚洲欧美在线观看| 亚洲成人av一区| 视频一区二区不卡| 成人av午夜电影| 91成人在线观看喷潮| 欧美视频中文字幕| 日韩精品一区二区三区中文不卡 | 成人欧美一区二区三区在线播放| 亚洲精品一二三四区| 奇米四色…亚洲| 99久久伊人网影院|