FatFs R0.12a, released July 10, 2016
This commit is contained in:
+4
-3
@@ -52,12 +52,12 @@ FRESULT f_expand (
|
||||
|
||||
<div class="para desc">
|
||||
<h4>解説</h4>
|
||||
<p><tt class="arg">opt</tt>に1を指定すると、ファイルに連続したデータ領域を割り当てます。<tt>f_lseek</tt>によるサイズ拡張とは異なり、対象ファイルのサイズは0(つまりデータ領域未割り当て)でなければなりません。リード/ライト ポインタは、ファイルの先頭に留まります。この関数により割り当てられたファイルの内容は未定義なので、それに対して何の前提も持つべきではありません。この関数は、次の理由により<tt>FR_DENIED</tt>で失敗することがあります。</p>
|
||||
<p><tt class="arg">opt</tt>に1を指定すると、ファイルに連続したデータ領域を割り当てます。<tt>f_lseek</tt>によるサイズ拡張とは異なり、対象ファイルのサイズは0(つまりデータ領域未割り当て)でなければなりません。また、リード/ライト ポインタは、ファイル先頭に留まります。この関数により割り当てられたファイルの内容は未定義なので、それに対して何の前提も持つべきではありません。この関数は、次の理由により<tt>FR_DENIED</tt>で失敗することがあります。</p>
|
||||
<ul>
|
||||
<li>ボリューム上に連続した空き領域が見つからなかった。</li>
|
||||
<li>対象ファイルのサイズが0ではなかった。</li>
|
||||
<li>ファイルのサイズが0ではなかった。</li>
|
||||
<li>ファイルが非書き込みモードで開かれている。</li>
|
||||
<li>指定されたファイル サイズが無効。(FATボリューム上で >= 4GiB)</li>
|
||||
<li>指定されたファイル サイズが無効。(FATボリューム上で >=4GiB)</li>
|
||||
</ul>
|
||||
<p><tt class="arg">opt</tt>に0を指定したときは、連続したデータ領域を探すのみで、その時点ではファイルへの割り当てを行わず、代わりにそれを検索開始ポイントとしてファイル システム オブジェクトにセットします。これにより、そのボリューム上で別の操作(FAT変更を伴う)が行われない限り、書き込まれるファイルは少なくともそのサイズまでは連続性が保証され、遅延無く書き込めることになります。</p>
|
||||
<p>時間的制約のあるファイル読み書き操作において、連続データ領域を割り当てられたファイルは有利となります。これは、分割されたファイルによりもたらされる無用なランダム アクセスが減ることにより、ファイル システムやストレージ デバイスの処理のオーバーヘッドが削減されるからです。特にexFATボリューム上の連続ファイルでは一切のFATアクセスが発生せず、効率的なシーケンシャル アクセスが行えます。</p>
|
||||
@@ -85,6 +85,7 @@ FRESULT f_expand (
|
||||
<span class="c">/* 100 MiB の連続領域を割り当てる */</span>
|
||||
res = f_expand(fp, 104857600, 1);
|
||||
if (res) { <span class="c">/* 割り当てられたかチェック */</span>
|
||||
...
|
||||
free(fp);
|
||||
...
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user