From 7b78a5a287827db9e9b16286f3604aef69b37c5c Mon Sep 17 00:00:00 2001 From: Leo C Date: Mon, 17 Nov 2014 14:47:05 +0100 Subject: Import fatfs R0.10c --- fatfs/doc/ja/lseek.html | 76 ++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) (limited to 'fatfs/doc/ja/lseek.html') diff --git a/fatfs/doc/ja/lseek.html b/fatfs/doc/ja/lseek.html index 5578852..88e1ab2 100644 --- a/fatfs/doc/ja/lseek.html +++ b/fatfs/doc/ja/lseek.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@

f_lseek

-

ファイルのリード/ライト・ポインタを移動します。また、高速シーク機能使用時にはCLMT(後述)の作成にも使用します。

+

繝輔ぃ繧、繝ォ縺ョ繝ェ繝シ繝/繝ゥ繧、繝 繝昴う繝ウ繧ソ繧堤ァサ蜍輔@縺セ縺吶ゅ∪縺溘鬮倬溘す繝シ繧ッ讖溯ス菴ソ逕ィ譎ゅ↓縺ッCLMT(蠕瑚ソー)縺ョ菴懈舌↓繧ゆスソ逕ィ縺励∪縺吶

 FRESULT f_lseek (
-  FIL* fp,    /* [IN] ファイル・オブジェクト構造体へのポインタ */
-  DWORD ofs   /* [IN] 移動先オフセット */
+  FIL* fp,    /* [IN] 繝輔ぃ繧、繝ォ 繧ェ繝悶ず繧ァ繧ッ繝域ァ矩菴薙∈縺ョ繝昴う繝ウ繧ソ */
+  DWORD ofs   /* [IN] 遘サ蜍募医が繝輔そ繝繝 */
 );
 
-

引数

+

蠑墓焚

fp
-
対象となるファイル・オブジェクト構造体へのポインタを指定します。
+
蟇セ雎。縺ィ縺ェ繧九ヵ繧。繧、繝ォ 繧ェ繝悶ず繧ァ繧ッ繝域ァ矩菴薙∈縺ョ繝昴う繝ウ繧ソ繧呈欠螳壹@縺セ縺吶
ofs
-
移動先のオフセット(リード/ライト・ポインタ)値。ファイル先頭からのオフセットをバイト単位で指定します。
+
遘サ蜍募医ョ繧ェ繝輔そ繝繝(繝ェ繝シ繝/繝ゥ繧、繝 繝昴う繝ウ繧ソ)蛟、縲ゅヵ繧。繧、繝ォ蜈磯ュ縺九i縺ョ繧ェ繝輔そ繝繝医r繝舌う繝亥腰菴阪〒謖螳壹@縺セ縺吶
-

戻り値

+

謌サ繧雁、

FR_OK, FR_DISK_ERR, @@ -48,82 +48,82 @@ FRESULT f_lseek (

-

解説

-

ファイルのリード/ライト・ポインタ(次に読み出し・書き込みされるバイトのオフセット)を移動します。オフセットの原点はファイル先頭です。書き込みモードでファイル・サイズより大きな値を指定すると、そこまでファイル・サイズが拡張され、拡張された部分のデータは未定義となります。データを遅延無く高速に書き込みたいときは、予めこの関数で必要なサイズまでファイル・サイズを拡張しておくと良いでしょう。f_lseek()が正常終了したあとは、リード/ライト・ポインタが正しく移動したかチェックするべきです。リード/ライト・ポインタが指定より小さいときは、次の原因が考えられます。

+

隗」隱ャ

+

繝輔ぃ繧、繝ォ縺ョ繝ェ繝シ繝/繝ゥ繧、繝 繝昴う繝ウ繧ソ(谺。縺ォ隱ュ縺ソ蜃コ縺励サ譖ク縺崎セシ縺ソ縺輔l繧九ヰ繧、繝医ョ繧ェ繝輔そ繝繝)繧堤ァサ蜍輔@縺セ縺吶ゅが繝輔そ繝繝医ョ蜴溽せ縺ッ繝輔ぃ繧、繝ォ蜈磯ュ縺ァ縺吶よ嶌縺崎セシ縺ソ繝「繝シ繝峨〒繝輔ぃ繧、繝ォ 繧オ繧、繧コ繧医j螟ァ縺阪↑蛟、繧呈欠螳壹☆繧九→縲√◎縺薙∪縺ァ繝輔ぃ繧、繝ォ 繧オ繧、繧コ縺梧僑蠑オ縺輔l縲∵僑蠑オ縺輔l縺滄Κ蛻縺ョ繝繝シ繧ソ縺ッ譛ェ螳夂セゥ縺ィ縺ェ繧翫∪縺吶ゅョ繝シ繧ソ繧帝≦蟒カ辟。縺城ォ倬溘↓譖ク縺崎セシ縺ソ縺溘>縺ィ縺阪ッ縲∽コ医a縺薙ョ髢「謨ー縺ァ蠢隕√↑繧オ繧、繧コ縺セ縺ァ繝輔ぃ繧、繝ォ 繧オ繧、繧コ繧呈僑蠑オ縺励※縺翫¥縺ィ濶ッ縺縺ァ縺励g縺縲f_lseek()縺梧ュ」蟶ク邨ゆコ縺励◆縺ゅ→縺ッ縲√Μ繝シ繝/繝ゥ繧、繝 繝昴う繝ウ繧ソ縺梧ュ」縺励¥遘サ蜍輔@縺溘°繝√ぉ繝繧ッ縺吶k縺ケ縺阪〒縺吶ゅΜ繝シ繝/繝ゥ繧、繝 繝昴う繝ウ繧ソ縺梧欠螳壹h繧雁ー上&縺縺ィ縺阪ッ縲∵ャ。縺ョ蜴溷屏縺瑚縺医i繧後∪縺吶

-

_USE_FASTSEEKが1で、且つファイル・オブジェクトのcltblメンバがNULL以外(f_open()でNULLに設定される)のとき、高速シーク・モードになります。これはファイルのクラスタ配置情報(CLMT)をメモリ上に保持しておくことにより、FATにアクセスすることなく後方シークやロング・シークを高速に行う機能です。高速シーク・モードは、f_read()/f_wtite()の動作にも適用されます。高速シーク・モードではf_wtite()/f_lseek()によるファイル・サイズの拡張はできません。

-

高速シーク動作を行う前に、CLMTを作成しておく必要があります。これを作成するには、まずCLMT格納バッファ(DWORD型配列)を準備し、cltblメンバにそのポインタをセットします。そして、配列の先頭要素にその配列のサイズ(要素数)を入れ、f_lseek()ofsCREATE_LINKMAPを指定して呼び出します。関数が成功するとCLMTが作成され、以降のf_read()/f_write()/f_lseek()ではFATへのアクセスは発生しません。FR_NOT_ENOUGH_COREで失敗したときは配列サイズが不足で、先頭要素には実際に必要となる要素数が返されます。必要な要素数は、(ファイルの分割数 + 1) * 2 です。たとえば、ファイルが5つのフラグメントに分断されているときに必要な要素数は、12となります。

+

_USE_FASTSEEK縺1縺ァ縲∽ク斐▽繝輔ぃ繧、繝ォ 繧ェ繝悶ず繧ァ繧ッ繝医ョcltbl繝。繝ウ繝舌′NULL莉・螟(f_open()縺ァNULL縺ォ險ュ螳壹&繧後k)縺ョ縺ィ縺阪鬮倬溘す繝シ繧ッ 繝「繝シ繝峨↓縺ェ繧翫∪縺吶ゅ%繧後ッ繝輔ぃ繧、繝ォ縺ョ繧ッ繝ゥ繧ケ繧ソ驟咲スョ諠蝣ア(CLMT)繧偵Γ繝「繝ェ荳翫↓菫晄戟縺励※縺翫¥縺薙→縺ォ繧医j縲:AT縺ォ繧「繧ッ繧サ繧ケ縺吶k縺薙→縺ェ縺丞セ梧婿繧キ繝シ繧ッ繧繝ュ繝ウ繧ー 繧キ繝シ繧ッ繧帝ォ倬溘↓陦後≧讖溯ス縺ァ縺吶るォ倬溘す繝シ繧ッ 繝「繝シ繝峨ッ縲f_read()/f_wtite()縺ョ蜍穂ス懊↓繧る←逕ィ縺輔l縺セ縺吶るォ倬溘す繝シ繧ッ 繝「繝シ繝峨〒縺ッf_wtite()/f_lseek()縺ォ繧医k繝輔ぃ繧、繝ォ 繧オ繧、繧コ縺ョ諡。蠑オ縺ッ縺ァ縺阪∪縺帙s縲

+

鬮倬溘す繝シ繧ッ蜍穂ス懊r陦後≧蜑阪↓縲,LMT繧剃ス懈舌@縺ヲ縺翫¥蠢隕√′縺ゅj縺セ縺吶ゅ%繧後r菴懈舌☆繧九↓縺ッ縲√∪縺咾LMT譬シ邏阪ヰ繝繝輔ぃ(DWORD蝙矩榊)繧呈コ門y縺励cltbl繝。繝ウ繝舌↓縺昴ョ繝昴う繝ウ繧ソ繧偵そ繝繝医@縺セ縺吶ゅ◎縺励※縲驟榊励ョ蜈磯ュ隕∫エ縺ォ縺昴ョ驟榊励ョ繧オ繧、繧コ(隕∫エ謨ー)繧貞・繧後f_lseek()ofs縺ォCREATE_LINKMAP繧呈欠螳壹@縺ヲ蜻シ縺ウ蜃コ縺励∪縺吶る未謨ー縺梧仙粥縺吶k縺ィCLMT縺御ス懈舌&繧後∽サ・髯阪ョf_read()/f_write()/f_lseek()縺ァ縺ッFAT縺ク縺ョ繧「繧ッ繧サ繧ケ縺ッ逋コ逕溘@縺セ縺帙s縲FR_NOT_ENOUGH_CORE縺ァ螟ア謨励@縺溘→縺阪ッ驟榊励し繧、繧コ縺御ク崎カウ縺ァ縲∝磯ュ隕∫エ縺ォ縺ッ螳滄圀縺ォ蠢隕√→縺ェ繧玖ヲ∫エ謨ー縺瑚ソ斐&繧後∪縺吶ょソ隕√↑隕∫エ謨ー縺ッ縲(繝輔ぃ繧、繝ォ縺ョ蛻蜑イ謨ー + 1) * 2 縺ァ縺吶ゅ◆縺ィ縺医ー縲√ヵ繧。繧、繝ォ縺5縺、縺ョ繝輔Λ繧ー繝。繝ウ繝医↓蛻譁ュ縺輔l縺ヲ縺繧九→縺阪↓蠢隕√↑隕∫エ謨ー縺ッ縲12縺ィ縺ェ繧翫∪縺吶

-

対応情報

-

_FS_MINIMIZE < 3のとき使用可能です。

+

蟇セ蠢懈ュ蝣ア

+

_FS_MINIMIZE < 3縺ョ縺ィ縺堺スソ逕ィ蜿ッ閭ス縺ァ縺吶

-

使用例

+

菴ソ逕ィ萓

-    /* ファイルを開く */
+    /* 繝輔ぃ繧、繝ォ繧帝幕縺 */
     fp = malloc(sizeof (FIL));
     res = f_open(fp, "file.dat", FA_READ|FA_WRITE);
     if (res) ...
 
-    /* ファイル・オフセット5000へ移動 */
+    /* 繝輔ぃ繧、繝ォ 繧ェ繝輔そ繝繝5000縺ク遘サ蜍 */
     res = f_lseek(fp, 5000);
 
-    /* ファイル終端へ移動(ファイル追記の準備) */
+    /* 繝輔ぃ繧、繝ォ邨らォッ縺ク遘サ蜍(繝輔ぃ繧、繝ォ霑ス險倥ョ貅門y) */
     res = f_lseek(fp, f_size(fp));
 
-    /* 3000バイト進める */
+    /* 3000繝舌う繝磯イ繧√k */
     res = f_lseek(fp, f_tell(fp) + 3000);
 
-    /* 2000バイト戻す (ラップアラウンドに注意) */
+    /* 2000繝舌う繝域綾縺 (繝ゥ繝繝励い繝ゥ繧ヲ繝ウ繝峨↓豕ィ諢) */
     res = f_lseek(fp, f_tell(fp) - 2000);
 
-/* クラスタ先行割り当て (ストリーミング・ライト時のバッファ・オーバーラン防止) */
+/* 繧ッ繝ゥ繧ケ繧ソ蜈郁。悟牡繧雁ス薙※ (繧ケ繝医Μ繝シ繝溘Φ繧ー 繝ゥ繧、繝域凾縺ョ繝舌ャ繝輔ぃ 繧ェ繝シ繝舌シ繝ゥ繝ウ髦イ豁「) */
 
-    res = f_open(fp, "record.wav", FA_CREATE_NEW | FA_WRITE);    /* ファイル作成 */
+    res = f_open(fp, "record.wav", FA_CREATE_NEW | FA_WRITE);    /* 繝輔ぃ繧、繝ォ菴懈 */
 
-    res = f_lseek(fp, MAX_SIZE);             /* 十分なクラスタの先行割り当て */
-    if (res || f_tell(fp) != PRE_SIZE) ...   /* 正しくファイルが拡張されたかチェック */
+    res = f_lseek(fp, MAX_SIZE);             /* 蜊∝縺ェ繧ッ繝ゥ繧ケ繧ソ縺ョ蜈郁。悟牡繧雁ス薙※ */
+    if (res || f_tell(fp) != PRE_SIZE) ...   /* 豁」縺励¥繝輔ぃ繧、繝ォ縺梧僑蠑オ縺輔l縺溘°繝√ぉ繝繧ッ */
 
-    res = f_lseek(fp, DATA_START);           /* データ・ストリームの記録(アロケーションディレイ無し) */
+    res = f_lseek(fp, DATA_START);           /* 繝繝シ繧ソ 繧ケ繝医Μ繝シ繝縺ョ險倬鹸(繧「繝ュ繧ア繝シ繧キ繝ァ繝ウ繝繧」繝ャ繧、辟。縺) */
     ...
 
-    res = f_truncate(fp);                    /* 不要領域の切り捨て */
-    res = f_lseek(fp, 0);                    /* ヘッダの記録 */
+    res = f_truncate(fp);                    /* 荳崎ヲ鬆伜沺縺ョ蛻繧頑昏縺ヲ */
+    res = f_lseek(fp, 0);                    /* 繝倥ャ繝縺ョ險倬鹸 */
     ...
 
     res = f_close(fp);
 
-/* 高速シーク機能を使う */
+/* 鬮倬溘す繝シ繧ッ讖溯ス繧剃スソ縺 */
 
-    DWORD clmt[SZ_TBL];                    /* リンク・マップ・テーブル格納バッファ */
+    DWORD clmt[SZ_TBL];                    /* 繝ェ繝ウ繧ッ 繝槭ャ繝 繝繝シ繝悶Ν譬シ邏阪ヰ繝繝輔ぃ */
 
-    res = f_lseek(fp, ofs1);               /* 通常シーク (オープン時、cltblはNULLに初期化される) */
+    res = f_lseek(fp, ofs1);               /* 騾壼クク繧キ繝シ繧ッ (繧ェ繝シ繝励Φ譎ゅ…ltbl縺ッNULL縺ォ蛻晄悄蛹悶&繧後k) */
 
-    fp->cltbl = clmt;                      /* 高速シーク機能の有効化 */
-    clmt[0] = SZ_TBL;                      /* 先頭要素に配列要素数をセット */
-    res = f_lseek(fp, CREATE_LINKMAP);     /* CLMTの作成 */
+    fp->cltbl = clmt;                      /* 鬮倬溘す繝シ繧ッ讖溯ス縺ョ譛牙柑蛹 */
+    clmt[0] = SZ_TBL;                      /* 蜈磯ュ隕∫エ縺ォ驟榊苓ヲ∫エ謨ー繧偵そ繝繝 */
+    res = f_lseek(fp, CREATE_LINKMAP);     /* CLMT縺ョ菴懈 */
     ...
 
-    res = f_lseek(fp, ofs2);               /* 以降、f_read/f_write/f_lseekでFATアクセスは発生しない */
+    res = f_lseek(fp, ofs2);               /* 莉・髯阪’_read/f_write/f_lseek縺ァFAT繧「繧ッ繧サ繧ケ縺ッ逋コ逕溘@縺ェ縺 */
 
-

参照

+

蜿らァ

f_open, FIL

-

戻る

+

謌サ繧

-- cgit v1.2.3