Библиотека FatFS: f_fdisk Печать
Добавил(а) microsin   

f_fdisk

Функция 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

[Ссылки]

1. f_fdisk - деление диска на разделы (оригинал статьи на английском языке).