FatFs - f_mount

## f_mount

論理ドライブにファイル システム オブジェクトを登録・抹消します。

    FRESULT f_mount (
      FATFS*       fs,     /* [IN] ファイル システム オブジェクト */
      const TCHAR* path,   /* [IN] 論理ドライブ番号 */
      BYTE         opt     /* [IN] 動作オプション */
    );

#### 引数

fs
  登録するファイル システム オブジェクトへのポインタ、またはヌル ポインタ
path
  対象となる論理ドライブのパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。パス名にドライブ番号が含まれない場合は、デフォルト ドライブを指定したことになります。
opt
  ファイル システム オブジェクトの登録と同時にマウント動作を行うかどうかを指定するフラグ。登録抹消のときは意味を持ちません。

#### 戻り値

FR_OK, FR_INVALID_DRIVE, FR_DISK_ERR, FR_NOT_READY, FR_NO_FILESYSTEM

#### 解説

FatFsモジュールでは、それぞれの論理ドライブにファイル システム オブジェクトというワーク エリアが必要です。この関数は論理ドライブにファイル システム オブジェクトを登録したり抹消したりします。何らかのファイル関数を使用する前に、この関数でその論理ドライブのファイル システム オブジェクトを与えておかなければなりません。`fs`にヌル ポインタを指定すると、その論理ドライブのファイル システム オブジェクトの登録は抹消されるだけです。登録抹消されたファイル システム オブジェクトのメモリは解放できます。操作の対象の論理ドライブ上に開かれたままのファイルやディレクトリがあった場合、それらに対して作成された構造体は全て無効になります。この関数の内部処理は次のような順に行われます。

1. 対象の論理ドライブを`path`から得る。
2. 登録されているファイル システム オブジェクトがあるときは、それをクリア(無効化)し、登録を解除する。
3. `fs`が有効なポインタのときは、そのファイル システム オブジェクトをクリアし、登録する。
4. マウント動作が指定されているときは、それを実行する。

`opt`に0を指定すると、マウント動作(物理ドライブの初期化、FATボリュームの検索、BPBを解析しファイル システム オブジェクトを初期化)は行われず、関数は物理ドライブの状態に関わらず常に成功します。関数内では下位レイヤへのアクセスは発生せず、指定されたファイル システム オブジェクトをクリア(無効化)し、そのアドレスを内部配列に登録するだけです。単に登録済みのファイル システム オブジェクトをクリアする目的にも使えます。実際のマウント動作は、ボリュームへのアクセス(パス名を渡すもの全て)が行われたときに、次のうちいずれかの条件が真の場合に行われます。

- ファイル システム オブジェクトがクリア(無効)状態(`f_mount`関数の実行による)
- 物理ドライブが未初期化状態(システム リセットやメディアの交換による)

`opt`に1を指定すると、ファイル システムオブジェクトの登録に続きマウント動作が行われます。メディアが無いなどの理由でマウント動作に失敗すると対応するエラーを返しファイル システム オブジェクトはクリア状態のままになりますが、登録自体は有効なので続いてボリュームへのアクセスがあれば再びマウント動作が実行されます。

下位レイヤの実装上メディア交換の検出がサポートされない(`disk_status`関数に反映されない)ときは、アプリケーションはメディア交換の後この関数でファイル システム オブジェクトを明示的にクリアし、マウント動作が正常に行えるようにする必要があります。

#### 対応情報

全ての構成で使用可能です。

#### 参照

`f_open`, `FATFS`

戻る