www.pudn.com > 外挂硬盘和FLASH的MP3方案程序下载.rar > FAT32GETDIRNAME.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); 
}