## f_mkfs

物理ドライブ上にFATボリュームを作成(フォーマット)します。

    FRESULT f_mkfs (
      BYTE  Drive,              /* 論理ドライブ番号 */
      BYTE  PartitioningRule,   /* 区画作成方法 */
      UINT  AllocSize           /* クラス・タサイズ */
    );

#### 引数

Drive
  フォーマットする論理ドライブ(0-9)。
PartitioningRule
  0を指定すると、ドライブの全領域を占める基本DOS区画を作成したあと、そこにFATボリュームを作成します(FDISKフォーマット)。1を指定すると、区画テーブルを作成せず物理ドライブの先頭セクタから直接ファイル・システムを作成します(super floppy (SFD) フォーマット)。
AllocSize
  クラスタ・サイズをバイト単位で指定します。2の累乗、且つセクタ・サイズ以上、且つセクタ・サイズの128倍以下でなければなりません。無効な値を指定した場合、ドライブ・サイズに応じたデフォルトのクラスタ・サイズが選択されます。特に指定しない場合は、0を指定して自動選択とします。

#### 戻り値

FR_OK (0)
  正常終了。
FR_INVALID_DRIVE
  ドライブ番号が無効。
FR_NOT_READY
  メディアがセットされていないなど、物理ドライブが動作不能状態。
FR_WRITE_PROTECTED
  メディアが書き込み禁止状態。
FR_NOT_ENABLED
  その論理ドライブにワーク・エリアが割り当てられていない。
FR_DISK_ERR
  ディスク・エラーによる失敗。
FR_MKFS_ABORTED
  次の理由で開始前に処理が中断された。
  - ディスク・サイズが小さすぎる。
  - 何らかの引数が不正。
  - そのクラスタ・サイズが使えない。クラスタ数がFATタイプの境界に近くなるとき発生する可能性がある。

#### 説明

f_mkfs関数は物理ドライブ上にFATボリュームを作成します。リムーバブル・メディアのパーテーショニング・ルールとしてはFDISK形式とSFD形式があり、メモリ・カードではFDISK形式が普通です。この関数は複数区画には対応していないので、その物理ドライブの既存の区画は全て削除され、全体が一つの区画になります。

FATタイプ(FAT12/FAT16/FAT32)は、その論理ドライブ上のクラスタ数によってのみ決定される決まり[FAT仕様書より]になっていて、それ以外の要因はありません。したがって、どのFATタイプになるかはドライブ・サイズとクラスタ・サイズに依存します。クラスタ・サイズは大きくするほど性能が上がり、逆にディスク利用効率は落ちます。

クラスタ数がFATタイプの境界に近くなるときは、FR_MKFS_ABORTEDで関数が失敗する可能性があります。

#### 対応情報

`_FS_READONLY == 0`で、且つ`_USE_MKFS == 1`のとき使用可能です。

Return