ファイル書き込みのAPIを作ろう(Win互換)
- (by K, 2006.06.06)
- 発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです)
- ファイル書き込みのAPI例がほしいということなので書いてみる。
- ただしもともと「はりぼてOS」は読み込みさえできればいいやと割り切って作った部分があるので、これに書き込み機能をつけても、書き込み速度は速くありません。本でいうとここから半日くらいかけて改良していくことになります。その程度の例であることを忘れずに。
- ファイルシステム的には確かに書き込みできますが、実際のディスクへの書き出し部分はつけてないので、電源を切ると書き換え内容はすべて消えます。ディスクへの書き出し方法については、advance/FDCを参照。
まずはAPIの仕様を決める
改造
- 改造するのは以下の点です。
- struct FILEHANDLE にflagsをつけて、ファイル書き込みがあったかどうかを記録できるようにする。ついでにファイルのオープンのAPI(EDX=21)のときにこのflagsを0にする処理も追加します。
- ファイルの書き込み用オープンのAPI(EDX=28)を追加する。
- ファイルの書き込みのAPI(EDX=29)を追加する。
- ファイルのクローズのAPI(EDX=22)を改造して、ファイル書き込みがあった場合はディスクバッファへ書き戻す。
こめんと欄
- 電源を切ったら消えるって・・保存っていえますか?(まあ、確かにほぞんしてるけど) -- Clover 2006-06-07 (水) 15:25:58
- 仮に言えないとして、どうしてほしいのでしょうか? 意図が分かりません。他の人の迷惑になるので、もう少し慎重に発言してください。 -- K 2006-06-07 (水) 16:59:06
- みてて思ったんだけど、再起動とかしても残る方法ってないんですか?多分みんなそっちのほうがいいと思います。 -- Clover 2006-06-07 (水) 18:35:58
- 「ディスクへの書き出し方法については、advance/FDCを参照。」と書いてあります。 -- M59 2006-06-07 (水) 18:59:44
- ふげ〜〜〜難しい。サンプルソースが超欲しい。 -- アセンブラマスターするぞ!! 2006-06-08 (木) 15:59:27
- 多分作りますので気長に待っていてください(待てるなら)。ただし今忙しいので結構先になりそうです。待ちきれなければ挑戦してうまくいったら発表してしまいましょう! -- K 2006-06-08 (木) 18:46:00
- Kさんへ。Kさんの手助けになるように作ってみます。Kさんもいろいろとお忙しいということを聞いていますので、Kさんも、たまには少し休んでみては? -- アセンブラマスターするぞ!! 2006-06-09 (金) 07:07:47
- このAPIの仕様や改造の例で読み込みだけでなく書き込みもすべてFDCでできそうです。ありがとうございます。 -- aotatsu 2009-02-01 (日) 09:43:06
- fwrite関係ないですけどOSのコンソールにdeleteコマンドを付けようとおもって、ディスクの読み込まれたところのファイル情報のファイル名の先端に0xe5を書き込んだら一応いいんじゃない?とおもってやったら普通にできたので報告します。 -- Triangle_Ld. 2009-06-21 (日) 01:18:59
|