バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
FatFsのファイル上シミュレーションの話。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
FatFs Win32のソースコード群確認
前回、
「FatFsのディスクアクセス部分を改造してディスクイメージをファイルにする方向で進める!(キリッ)」
みたいなことをフクさんが言ってたけど・・・。
(「キリッ」は入ってなかったと思うぞ・・・。)
具体的にはどこをどう弄ることになるの?
まず、FatFsのWin32フォルダの内容を確認してみよう。
ソースコード関連としては以下があるね。
- diskio.c
- ff.c
- main.c
- ffsystem.c
- ffunicode.c
FatFs Win32のソースコード群の概要
それぞれ簡単に説明するとこんなだ。
- diskio.c :ディスクアクセス
- ff.c:FatFs本体
- main.c:FatFs対話用
- ffsystem.c:OS依存関数(malloc/free/排他同期)
- ffunicode.c:UNICODEテーブル
これらを見る感じだと、
diskio.c :ディクスアクセス
を改造すればOKそうってことかな?
その通り。
実際にソースコードを見ても、以下のWindows APIが散見される。
- CreateFile
- ReadFile
- WriteFile
- SetFilePointer
ということは、結構そのままでも行ける?
まぁ結構流用はできるだろうが、
これらのAPIはWinXP時代のHDD直接制御を目的にしたものなので、
ちょこちょこ弄る必要はあるかもね。
改造方針
とりあえず、改造方針は以下だ。
- 物理ドライブ0は従来通りRAM Disk
- 物理ドライブ1~9のディスクイメージをファイルとする。
ファイル名はPhysicalDriveXとする。
RAM Disk以外に9個のディスクイメージが作れるようになるわけか!
まぁ一個しか使わないけどねー。
とりあえず、次回までにざっと改造しておこう。
まとめ
まとめだよ。
- FatFs Win32のソースコード群確認。
- 「diskio.c」を改造すればディスクイメージをファイルにできそう。
- diskio.cはWindowsXP時代のHDDアクセス用にAPIが残っている。
- このAPIをうまく流用すると楽かもしれない。
- 認識する物理ドライブを元からあるRAM Diskと別に加えて10個にする方針。
バックナンバーはこちら。
コメント