## f_mount

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

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

#### 引数

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

#### 戻り値

FR_OK, FR_INVALID_DRIVE, FR_DISK_ERR, FR_NOT_READY, FR_NO_FILESYSTEM

#### 解説

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

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

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

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

`opt`に1を指定すると、登録に続いてマウント動作が行われます。マウントに失敗すると対応するエラーを返しますが、登録は有効なので続くボリュームへのアクセスで再びマウント動作が実行されます。

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

#### 対応情報

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

#### 参照

`f_open`, `FATFS`

戻る