|
发表于 2011-5-27 00:13:23
|
显示全部楼层
unsigned char SearchNextFile(unsigned char dir) //dir=0则向下目录查找,如果dir>0则向上目录查找
{
unsigned long int cluster,sector;
unsigned int i,clusterct,sectorct;
unsigned char item,n,m,k,dt[4];
signed char cnt;
while(1)
{
n=BytePerSector/32; //n=一个扇区里面目录个数
m=SectorsPerCluster*n ; //m=一个簇里面目录个数
clusterct=ShearchItem/m; //获取簇号clusterct=ShearchItem/(SectorsPerCluster*(BytePerSector/32))
k=ShearchItem%m;
sectorct=k/n; //获取扇区号sectorct=(ShearchItem%(SectorsPerCluster*(BytePerSector/32)))/(BytePerSector/32)
item=k%n; //获取目录号item=(ShearchItem%(SectorsPerCluster*(BytePerSector/32)))%(BytePerSector/32)
cluster=RootClusterNumber;
for(i=0;i<clusterct;i++)
{
cluster=Fat32GetNextCluster(cluster);
if(cluster==0x0fffffff)
{
ShearchItem=0;
return 1;
}
}
sector=ClusterToSector(cluster);
sector+=sectorct;
SD_Read_Sector(sector);
请问楼主,在调用这个函数的时候,cluster=RootClusterNumber,是把根目录簇号赋给cluster,cluster=Fat32GetNextCluster(cluster); if(cluster==0x0fffffff).....return 1; 这几句话是说由根目录的簇号得到下个簇号,可我用WINHEX 看FAT表中根目录簇号存的是 0x0fffffff,那么是不是就一直返回“1”值了? |
|