ISO 13346のファイル構造(ADVPからデータへ
 ISO 13346の仕組みもISO 9660に似ています。しかし、ISO 13346は最初から書き換えを前提として設計されており、書き換えなければいけない場所も最小限になるように設計されています。

 ISO 9660ではまずPVDを見に行きました。実はPVDはVDS(Volume Descriptor Sequence)の先頭のDescriptorです。ISO 9660ではVDSの始まりの場所はLBN(論理ブロック番号)=16セクタにあると決まっていました。ISO 13346ではVDSの始まりの場所はAVDP(Anchor Volume Descriptor Pointer)という場所に書いてあります。Anchorとは“錨(いかり)”や“拠りどころ”といったような意味。光ヘッドが最初に見に行くポイントになっており、ここを介してすべてのファイルにたどり着けるようになっています。ISO 9660の「PVD→ルートディレクトリ→ディレクトリ→ファイル」と同様の経路です。

 AVDPについてもう少し詳しく述べておくと、AVDPの位置はLBN=256のセクタ、最後のセクタ、LBN=最後のセクタのLBN-256のセクタのうちの二個所以上にあります(CD-Rの場合LBN=512のみにある場合もあります)。ISO 9660が利用するLBN=16が避けてあるためISO 9660とも共存が可能です。

 つづいてUDFのファイル構造について、UDFとCD-R/RWの関係を交えながらお話していくことにします。

 さて、AVDP以下はつぎのようにたぐっていきます。欧文の省略名が多くて恐縮ですが……。

 「AVDP→VDS→FSD(File Set Descriptor)→ルートディレクトリのFE(File Entry)→ルートディレクトリのICB(Information Control Block)→ルートディレクトリ内のFID(File Identifier Descriptor)→ファイルのICB→データ」です。

 VDSとはボリュームの中身の記述。FSDSはファイルセットの記述の方法。ルートディレクトリの中にはファイルごとにFIDというファイルのIDを示す記述子があります。

 ところでICBとは何でしょうか。ICBは書き換えの個所を最小にするためのISO 13346の仕組みです。FIDにはデータの場所は直接書いていません。代わりにICBの位置が書いてあり、ICBにはファイルのデータの長さ、場所、属性などのデータが書いてあります。データを追記してファイルの長さや場所が変わったときはICBを書き換えるだけでよく、そのファイルを含むディレクトリは書き換える必要はなく、したがって変更が上のディレクトリに波及しないということになります。MOではICBを直接書き換えればいいのですが、WORMの場合はいままでのICBよりLBNが一つ大きいセクタに新しいICBを書きます。

 UDFではFIDに書いてあるファイル名のキャラクタコードや、ICBに記述されているファイルの属性情報を各OSでどのように解釈するかの約束を決めています。

 以上がISO 13346の基本的な構造です。それぞれがどのような役割であるかはこれ以上細かくは述べませんが、ISO 9660との比較で言うと、骨格は両者同じであるものの、ISO 13346は、

 ・ パステーブルがない

 ・ ポインタにICBを使う

 という点がISO 9660と大きく違います。