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

📄 fat32mountvolumeid.c

📁 外挂硬盘和FLASH的MP3播放器解决方案
💻 C
字号:
#ifndef _FAT32_DEFINE
 #include "FAT32.c"
#endif

BYTE FAT32MountVolumeID(BYTE Partition);

BYTE FAT32MountVolumeID(BYTE Partition)
{
	register BYTE i;

	#ifdef DEBUG
		printf("Mount FAT32 volume ID...%bd\n",Partition);
	#endif

	if (Partition>=HDD.TotalPartitions) return(FAT32_ERR_PARTITION_NOT_FOUND);	//没找到指定扇区

	IDEReadSector(sDPT[Partition].LBABegin);		//读FAT32 VolumeID扇区
	//检查VolumeID扇区标记
 	if (DiskBuffer[510] != 0x55||DiskBuffer[511] != 0xaa)
		return(FAT32_ERR_MBR_FLAG);			//不正常的引导扇区标志

	//检查分区类型
	HDD.CurrentPartition = Partition;							//当前分区号
//	HDD.BytesPerSec = BOOTSEC->BPB_BytesPerSec;					//每扇区字节数
	FAT32.SecPerClus = BOOTSEC->BPB_SecPerClus;					//每簇扇区数
	FAT32.RsvdSecCnt = MEMSwap16(BOOTSEC->BPB_RsvdSecCnt);		//保留扇区数
	FAT32.NumFATs = BOOTSEC->BPB_NumFATs;						//FAT表个数
	FAT32.FATSz = MEMSwap32(BOOTSEC->FAT.F32.BPB_FATSz32);		//FAT表达小(扇区)
	FAT32.RootClus = MEMSwap32(BOOTSEC->FAT.F32.BPB_RootClus);	//根目录簇号
	FAT32.CurrentDirectory = FAT32.RootClus;					//当前目录入口(簇号)
	FAT32.FATSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt;		//FAT表开始的扇区号
	FAT32.ClusSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt + (FAT32.NumFATs * FAT32.FATSz);		//簇开始的扇区
	FAT32.FSISec = MEMSwap16(BOOTSEC->FAT.F32.BPB_FSInfo) + sDPT[Partition].LBABegin;		//FAT32扩展信息扇区号

	//加载第一个FAT表
	IDEReadSector(FAT32.FATSec);
	for(i=0;i<128;i++)				
		FAT.FAT[i]=((DWORD *)&DiskBuffer)[i];
	FAT.Sector=0;
	return(0);
}

⌨️ 快捷键说明

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