Функция f_fdisk делит физический диск на разделы.
FRESULT f_fdisk (
BYTE Drive, /* Номер физического диска */
const DWORD Partitions[], /* Размер раздела */
void* Work /* Рабочая область */
);
Параметры
- Drive
- Указывает физический диск (physical drive), который будет поделен на разделы.
- Partitions[]
- Таблица карты разделов (Partition map table). Она должна иметь 4 элемента.
- Work
- Рабочая область для функции. Её размер должен быть как минимум _MAX_SS байт.
Возвращаемые значения
FR_OK, FR_DISK_ERR, FR_NOT_READY, FR_WRITE_PROTECTED, FR_INVALID_PARAMETER
Описание
Функция f_fdisk создает таблицу разделов в области MBR (Master Boot Record) физического диска. Правило разбивки на разделы соответствует простому формату FDISK, который позволяет задать до 4 первичных разделов (primary partition). Расширенный раздел (Extended partition) не поддерживается. Массив Partitions[] указывает, как нужно поделить физический диск. Первый элемент указывает размер первого главного раздела (first primary partition), и 4-й элемент указывает размер 4-го главного раздела. Если величина меньше или равна 100, то это означает процент от общего размера физического диска. Если указанная величина больше 100, то это означает размер раздела в секторах.
Краткая информация (QuickInfo)
Функция доступна, когда _FS_READOLNY == 0, _USE_MKFS == 1 и _MULTI_PARTITION == 2.
Пример кода
/* Таблица управления разделами, заданная пользователем (нужна, если _MULTI_PARTITION != 0) */
PARTITION VolToPart[] = {
{0, 1}, /* Логический диск 0 ==> Физический диск 0, 1-й раздел */
{0, 2}, /* Логический диск 1 ==> Физический диск 0, 2-й раздел */
{1, 0} /* Логический диск 2 ==> Физический диск 1, автодетектирование */
};
/* Инициализация совершенно нового дисковода, привязанного к физическому диску 0 */
FATFS Fatfs;
DWORD plist[] = {50, 50, 0, 0}; /* Деление драйва на два раздела */
BYTE work[_MAX_SS];
f_fdisk(0, plist, work); /* Деление физического драйва 0 */
f_mount(0, &Fatfs);
f_mkfs(0, 0, 0); /* Создание тома FAT на логическом драйве 0. 2-й аргумент игнорируется. */
f_mount(0, 0);
f_mount(1, &Fatfs);
f_mkfs(1, 0, 0);
f_mount(1, 0);
См. также
Volume management (управление томами), f_mkfs