FatFs文件系统:f_fdisk
划分一个物理驱动器。
FRESULT f_fdisk ( BYTE Drive, /* Physical drive number */ const DWORD Partitions[], /* Partition size */ void* Work /* Work area */ );
参数:
Drive——指定要划分的物理驱动器
Partitions[]——分区映象表,必须有四个项目。
Work——指向函数工作区的指针。其大小必须至少为_MAX_SS 字节。
返回值:
FR_OK (0)函数成功。
FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_WRITE_PROTECTED 驱动器被写保护。
FR_DISK_ERR 由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INVALID_PARAMETER 所给参数无效或不一致。
描述:
f_fdisk 函数创建一个分区表到物理驱动器的 MBR。分区规则为通用 FDISK 格式,所以可以创建多达 四个主分区。不支持扩展分区。Partitions[]指定了如何划分物理驱动器。第一个项目指定第一个主分区的大 小,第四个项目指定第四个主分区。如果其值小于或等于 100,表示分区占整个磁盘空间的百分比。如果大 于 100,则表示以扇区为单位的分区大小。 提示 在_FS_READOLNY == 0、_USE_MKFS == 1 并且_MULTI_PARTITION == 2 时可用。
示例:
/* 用户定义的卷管理表(当 _MULTI_PARTITION != 0 时必需) */ PARTITION VolToPart[] = { {0, 1}, /* 逻辑驱动器 0 ==> 物理驱动器 0,第一个分区 */ {0, 2}, /* 逻辑驱动器 1 ==> 物理驱动器 0,第二个分区 */ {1, 0} /* 逻辑驱动器 2 ==> 物理驱动器 1,第三个分区 */ }; /* 初始化一个全新的硬盘,映射到物理驱动器 0 */ FATFS Fatfs; DWORD plist[] = {50, 50, 0, 0}; /* 将驱动器分为两个分区 */ BYTE work[_MAX_SS]; f_fdisk(0, plist, work); /* Divide physical drive 0 */ f_mount(0, &Fatfs); f_mkfs(0, 0, 0); /* Create an FAT volume on the logical drive 0. 2nd argument is ignored. */ f_mount(0, 0); f_mount(1, &Fatfs); f_mkfs(1, 0, 0); f_mount(1, 0);