⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fat32getdirname.c

📁 爱特梅尔的mp3解码模块源代码之2
💻 C
字号:
#ifndef _FAT32_DEFINE
 #include "FAT32.c"
#endif

BYTE FAT32GetDirName(WORD SecNum);

BYTE FAT32GetDirName(WORD SecNum)
{
	BYTE i,j,k,m,n;
	DWORD chain;
	CHAR temp[27];
	
	chain=FAT32.CurrentDirectory;
	FAT32.ClusSecCnt=0;
	while(chain!=0x0fffffff)
	{
		FAT32ReadCluster(&chain);
		for (i=0;i<16;i++)
		{
			if (SecNum==1)
			{
				if ((sDIR[i].Attr&FAT32_ATTR_LONG_NAME_MASK)==FAT32_ATTR_LONG_NAME)
				//长文件名
				{
					j=lDIR[i].Ord - FAT32_LAST_LONG_ENTRY;
					LongFileName[0]=0;n=0;
					for(;j>0;j--)
					{
						FAT32GetPartLongName(lDIR+i,temp);
						m=strlen((char *)temp);
						k=m+n;
						for(;n>0;n--)
							LongFileName[m+n]=LongFileName[n];
						LongFileName[m+n]=LongFileName[n];
						m--;
						for(;m>0;m--)
							LongFileName[m]=temp[m];
						LongFileName[m]=temp[m];
						n=k;
						i++;
						if (i==16)
						{
							FAT32ReadCluster(&chain);
							i=0;
						}
					}
					if (sDIR[i].Name[0]==0x00||sDIR[i].Name[0]==0xe5) return(3);		//空目录项
					if (sDIR[i].Attr&FAT32_ATTR_DIRECTORY) return(2);			//找到一个目录入口
				}
				else
				{
				//短文件名
					if (sDIR[i].Name[0]==0x00||sDIR[i].Name[0]==0xe5) return(3);		//空目录项
					if (sDIR[i].Attr&FAT32_ATTR_VOLUME_ID) continue;			//如果是目录入口或卷标则跳过
					for(j=0;j<11;j++)
						LongFileName[j]=sDIR[i].Name[j];
					LongFileName[j]=0;
					for(j=0;j<3;j++)
						temp[j]=toupper(sDIR[i].Name[8+j]);
					temp[j]=0;
					if (sDIR[i].Attr&FAT32_ATTR_DIRECTORY) return(2);			//找到一个目录入口
				}
				return(1);
			}
			else if (sDIR[i].Attr!=FAT32_ATTR_LONG_NAME) SecNum--;
		}
	}
	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -