問題が発生する理由と基本的な対処方法と、1ファイルがまだ処理できていない旨の説明は以下に書いた通り。
問題は残された1ファイルの読み出しである。
当初、様々な未知の問題があるかのように見えたが、実はそうではないことが分かった。
根本的な問題はツール側でクラスタサイズの認識をバグっていて、セクタを過剰に読み過ぎて関係ないディレィトリーのエントリーが存在するかのように誤認していた誤動作が問題であり、このバグを取ると、残った問題は以下のみであった。
- Sub Directory: C:\(中略)\SYSTEM~1を読み出そうとしても未使用セクタを読み出してしまい、初期化された状態のデータをディレクトリとして解釈できずに落ちていた。
今回は長いファイル名に対応する必要はない(そもそも長いファイル名は含まれていない)前提であったが、実はこの前提は間違っていた。問題のMOには、システムが生成したと思われる"System Volume Information"および、その短いファイル名表現である"SYSTEM~1"が含まれていた。そして、"System Volume Information"の内容が不適切だったとして、ここは意味のあるユーザーデータは含まれていないと見なせるので、単純に"SYSTEM~1"は読み飛ばすという処理で対処可能であった。
解決 §
以下の対策はhttps://github.com/autumn009/d88explorerの"BrokenMOFatImageDump$$!にマージ済みである。
- クラスタサイズの認識バグのfix
- "SYSTEM~1"のスキップ