FatFs - f_fdisk

## f_fdisk

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

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

#### 引数

pdrv
  分割する物理ドライブを指定します。これは論理ドライブ番号ではなく、ディスク関数に渡される物理ドライブ番号です。
szt
  区画サイズ テーブルの先頭項目へのポインタを指定します。
work
  ワークエリアへのポインタを指定します。サイズは`_MAX_SS`バイト必要です。

#### 戻り値

FR_OK, FR_DISK_ERR, FR_NOT_READY, FR_WRITE_PROTECTED, FR_INVALID_PARAMETER

#### 説明

この関数は、指定された物理ドライブのMBRに区画テーブルを作成します。区画分けは一般的なFDISK形式で行うため、最大4つの基本区画を作成することができます。拡張区画には対応していません。区画サイズ テーブルにはドライブをどのように分割するか指定します。この配列は4つの項目から成り、先頭の項目が1番目の区画のサイズを示します。項目の値が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)の初期化 */

        DWORD plist[] = {50, 50, 0, 0};  /* 第1区画,第2区画それぞれに50%ずつ割り当て */
        BYTE work[_MAX_SS];

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

        f_mkfs("0:", FM_ANY, work, sizeof work);   /* 論理ドライブ 0: のフォーマット */
        f_mkfs("1:", FM_ANY, work, sizeof work);   /* 論理ドライブ 1: のフォーマット */

#### 参照

`ボリューム管理, f_mkfs`

戻る