4

ISO 9660ファイルシステムでのファイルの読み取りに関するこの記事を読み終えたところですが、ファイルをメモリに読み取る方法について混乱しています。ルートディレクトリがPVDのオフセット156にあることを理解しています。これを使用して、ルートディレクトリにあるファイルを検索します。ファイル名を見つけたら、そのファイルが存在するアドレスをどのように見つけますか。 (int 0x13 AH = 42を使用して)メモリにロードできるようにしますか?

4

1 に答える 1

8

BIOSはint13hを介してCDドライブに直接アクセスできない場合があります。常にint13hを使用して直接アクセスできるのはフロッピーとHDDのみです。CDから起動する場合(BIOSがサポートしている場合)、int 13hを使用してCDにアクセスできますが、動作が保証される唯一のオプションは、CD全体ではなくアクセスするエミュレーションモードです。 、ただし、ブートイメージはFDDまたはHDDであるかのようになります(この場合、BIOSは通常、ドライブ番号0または80hをエミュレートされたディスクAKAA:およびに割り当てますC:)。ここにこの問題の議論があります。

I / Oポートを使用してCDドライバから直接データを読み取るには、CDドライバを作成する必要がある場合があります。

ISO9660に関しては、 (オフセット156にある)Directory entry for the root directoryから読み取る必要があります。次に、からの(オフセット2)と(オフセット10)Primary Volume Descriptorに関心があります。これらは、ディレクトリデータ(ファイル/ディレクトリのリスト)が存在する場所とその大きさを示します。Location of extent (LBA)Data length (size of extent)Directory entry for the root directory

このリストは基本的に、長さが可変である同じディレクトリエントリのリストです(ファイル/ディレクトリ名の長さとパディングが可変であるため)。それを読むときはFile flags、すべてのエントリを調べて、それがファイルなのかディレクトリなのかを判断する必要があります。それがディレクトリであり、それにアクセスしたい場合は、手順全体を再帰的に繰り返します。ファイルの場合、Location of extent (LBA)(オフセット2)とData length (size of extent)(オフセット10)は、ファイルの場所とサイズを示します。

うまくいけば、古いCDコードが手元にないので、これを台無しにしないでください。

ああ、そして注意してください、上記はあなたがCD、ほとんどのCDを読むべき方法の非常に単純化された説明ですが、すべてではありません。FSは不必要に一般的で複雑であり、すべての状況で正しく読み取ることを困難にする多くの機能とオプションがあります。

.isoいくつかのファイル、16進エディター、電卓を入手し、ロジックを再確認して、ファイルシステムに慣れることをお勧めします。

于 2012-03-16T04:05:28.500 に答える