f_fdisk

物理ドライブを分割します。

FRESULT f_fdisk (
  BYTE  pdrv,         /* [IN] 物理ドライブ番号 */
  const DWORD part[], /* [IN] 区画マップ テーブル */
  void* work          /* [-] ワークエリア */
);

引数

pdrv
分割する物理ドライブのドライブ番号を指定します。
part[]
区画マップ テーブルへのポインタを指定します。
work
ワークエリアへのポインタを指定します。サイズは_MAX_SSバイト必要です。

戻り値

FR_OK, FR_DISK_ERR, FR_NOT_READY, FR_WRITE_PROTECTED, FR_INVALID_PARAMETER

説明

この関数は、指定された物理ドライブのMBRに区画テーブルを作成します。区画分けは一般的なFDISK形式で行うため、最大4つの基本区画を作成することができます。拡張区画には対応していません。区画マップテーブルpart[]にはドライブをどのように分割するか指定して渡します。この配列は4つの項目から成り、先頭の項目が1番目の、最後の項目が4番目の区画のサイズを示します。値が100以下の場合、ドライブの総容量に対する割合をパーセント単位で指定します。100を超える値の場合はセクタ数の直接指定になります。

対応情報

_FS_READOLNY == 0_USE_MKFS == 1_MULTI_PARTITION == 1 のとき使用可能です。

使用例

    /* ユーザ定義のボリューム管理テーブル (_MULTI_PARTITION == 1 のとき必要) */

    PARTITION VolToPart[] = {
        {0, 1},    /* 論理ドライブ 0 ==> 物理ドライブ 0, 第1区画 */
        {0, 2},    /* 論理ドライブ 1 ==> 物理ドライブ 0, 第2区画 */
        {1, 0}     /* 論理ドライブ 2 ==> 物理ドライブ 1, 自動検出 */
    };
    /* 新しい物理ドライブ(0)の初期化 */

    FATFS fs;
    DWORD plist[] = {50, 50, 0, 0};  /* 2分割 */
    BYTE work[_MAX_SS];

    f_fdisk(0, plist, work);  /* 物理ドライブ 0 の分割 */

    f_mount(&fs "0:", 0);
    f_mkfs("0:", 0, 0);       /* 論理ドライブ 0 のフォーマット. 第二引数は無視される.  */
    f_mount(0, "0:", 0);

    f_mount(&fs, "1:", 0);
    f_mkfs("1:", 0, 0);       /* 論理ドライブ 0 のフォーマット. 第二引数は無視される.  */
    f_mount(0, "1:", 0);

See Also

Volume management, f_mkfs

Return