📄 fatnextcluster.c
字号:
#ifndef _FAT_DEFINE
#include "FAT.c"
#endif
void FATNextCluster(DWORD *CurrentCluster);
void FATNextCluster(DWORD *CurrentCluster)
{
pdata BYTE Offset;
pdata DWORD Sector;
switch (sDPT[StorageMedia.CurrentPartition].FATType)
{
case FAT_TYPE_FAT32 :
Sector=(*CurrentCluster)>>7; //等价于CurrentCluster/128
Offset=(BYTE)((*CurrentCluster)&0x0000007f); //等价于CurrentCluster%128
if (Sector!=FATTable.Sector)
{
FATTable.Sector=Sector;
StorageMedia.ReadSector(FAT.FATSec + Sector,FATTable.FAT.F12);
}
*CurrentCluster=MEMSwap32(FATTable.FAT.F32[Offset]);
return;
case FAT_TYPE_FAT16 :
Sector=(*CurrentCluster)>>8; //等价于CurrentCluster/256
Offset=(BYTE)((*CurrentCluster)&0x000000ff); //等价于CurrentCluster%256
if (Sector!=FATTable.Sector)
{
FATTable.Sector=Sector;
StorageMedia.ReadSector(FAT.FATSec + Sector,FATTable.FAT.F12);
}
*CurrentCluster=(DWORD) MEMSwap16(FATTable.FAT.F16[Offset]);
return;
case FAT_TYPE_FAT12 :
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -