www.pudn.com > 外挂硬盘和FLASH的MP3方案程序下载.rar > FAT32FINDDIRENTRY.C


#ifndef _FAT32_DEFINE 
 #include "FAT32.c" 
#endif 
 
BYTE FAT32FindDIREntry(CHAR *DirName); 
 
BYTE FAT32FindDIREntry(CHAR *DirName) 
{ 
	xdata BYTE i,j,k,m,n; 
	xdata DWORD chain; 
	xdata CHAR temp[27]; 
 
	chain=FAT32.CurrentDirectory; 
	FAT32.ClusSecCnt=0; 
	while(chain!=0x0fffffff) 
	{ 
		FAT32ReadCluster(&chain); 
		for (i=0;i<16;i++) 
		{ 
			if (sDIR[i].Name[0]==0xe5||sDIR[i].Name[0]==0x00) continue;			//空目录项跳过 
			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 (strcmp((const char *)DirName,(const char *)LongFileName)==0) return(i); 
			} 
			else 
			{ 
			//短文件名 
				if (sDIR[i].Attr&FAT32_ATTR_VOLUME_ID) continue;		//如果是卷标则跳过 
				for(j=0;j<11;j++) 
					temp[j]=sDIR[i].Name[j]; 
				temp[j]=0; 
				if (strcmp((const char *)DirName,(const char *)temp)==0) return(i); 
			} 
		} 
	} 
	return(i); 
}