ボリューム認識列は、そのボリュームの先頭から 32767 バイトより後の最初のセクタから始まり、 数セクタ続きます。 1セクタが 2048 バイトならば、16セクタ目から始まります。
記述子はセクタの先頭から記述し、セクタ内の余ったバイトは 0 で埋めます。
各ボリューム構造記述子は、次のようになっています。
Generic Volume Structure Descriptor format
BP | 大きさ | 型 | 名称 | 内容 |
0 | 1 | unsigned char | Structure Type | ボリューム記述子の種類 |
1〜5 | 5 | char[5] | Standard Identifier | 規格識別子 |
6 | 1 | unsigned char | Structure Version | バージョン |
7〜2047 | 2041 | - | Structure Data | 記述子の内容 |
ECMA167 では、次の種類を使います。
Volume Structure Descriptor interpretation
規格識別子 | 内容 |
"BEA01" | 拡張領域先頭記述子 |
"BOOT2" | ブート記述子 |
"CD001" | ISO9660 用 |
"CDW02" | |
"NSR02" | NSR記述子 ECMA-167/2 |
"NSR03" | NSR記述子 ECMA-167/3 |
"TEA01" | 拡張領域終端記述子 |
読み取る際には、まず規格識別子を調べ、次にボリューム記述子の種類を読んで区別します。
記述子を記録する順序は、ISO9660 など CD-ROM 用のシステムがある場合、 それらを先に記録します。 ISO9660 では、最低 PVD + TD の2セクタ、 joliet を含む場合 PVD + SVD + TD の 3 セクタを使います。
その後、UDF のボリューム認識列を記述していきます。 先頭に BEA01 (拡張領域先頭記述子) を記録し、 中身である NSR02 や NSR03、BOOT2 を記録した後、 TEA01 (拡張領域終端記述子) を最後に記録して終わります。
よくある UDF Bridge DVD-ROM の一例を挙げておきます。
sector | Standard Identifier | Structure Type | 備考 |
16 | CD001 | 1 | ISO9660 PVD |
17 | CD001 | 2 | joliet SVD |
18 | CD001 | 255 | ISO9660 TD |
19 | BEA01 | 0 | 拡張領域の先頭 |
20 | NSR02 | 0 | ECMA-167/2 が使われていることを示す |
21 | TEA01 | 0 | 拡張領域の終端 |
ディスクにアクセスする時は、 まず、このボリューム認識列を調べます。 そこに「CD001」があれば、ISO9660 (あるいは joliet) フォーマット、 「NSR02」か「NSR03」があれば、ECMA167 フォーマットのディスクと解釈して 読み取りを開始します。