Primary Volume Descriptor format
BP | 大きさ | 型 | 名称 | 内容 |
0〜15 | 16 | struct tag | Descriptor Tag | TagID=1 |
16〜19 | 4 | unsigned long | Volume Descriptor Sequence Number | ボリューム記述子番号 |
20〜23 | 4 | unsigned long | Primary Volume Descriptor Number | PVDの番号 |
24〜55 | 32 | char[32] | Volume Identifier | ボリュームラベル (dstring) |
56〜57 | 2 | unsigned short | Volume Sequence Number | (=1) ボリューム番号 |
58〜59 | 2 | unsigned short | Maximum Volume Sequence Number | (=1) ボリュームセットのボリューム数 |
60〜61 | 2 | unsigned short | Interchange Level | (=2) 交換水準 |
62〜63 | 2 | unsigned short | Maximum Interchange Level | (=2) 最大交換水準 |
64〜67 | 4 | unsigned long | Character Set List | =1 文字集合リスト |
68〜71 | 4 | unsigned long | Maximum Character Set List | =1 最大文字集合リスト |
72〜199 | 128 | char[128] | Volume Set Identifier | ボリュームセット名 (dstring) |
200〜263 | 64 | charspec | Descriptor Character Set | ={0,"OSTA Compressed Unicode"} |
264〜327 | 64 | charspec | Explanatory Character Set | ={0,"OSTA Compressed Unicode"} |
328〜335 | 8 | struct extent_ad | Volume Abstract | 抄録 |
336〜343 | 8 | struct extent_ad | Volume Copyright Notice | 著作権表示 |
344〜375 | 32 | struct regid | Application Identifier | 応用プログラム識別子 |
376〜387 | 12 | struct timestamp | Recording Date and Time | 記録日時 |
388〜419 | 32 | struct regid | Implementation Identifier | *開発者名 |
420〜483 | 64 | unsigned char[64] | Implementation Use | (=0) 処理方法用 |
484〜487 | 4 | unsigned long | Predecessor Volume Descriptor Sequence Location | (=0) 障害復旧用 |
488〜489 | 2 | unsigned short | Flags | =0 フラグ |
490〜511 | 22 | - | Reserved | =0 |
Volume Descriptor Sequence Number は、 ボリューム記述子の通し番号で、大抵、列の先頭より 0、1、2、と記録します。
Primary Volume Descriptor Number は、PVD 毎に異なる番号が割り振られており、 一つだけ =0 の PVD があります。読み取りには、これが 0 の PVD を使用します。 これは書き換えのための仕様なので、Primary Volume Descriptor Number = 0 の PVD を 一つ用意しておけば十分です。
Interchange Level と Maximum Interchange Level は、このボリュームが複数のボリュームをもつボリュームセットの内の一つならば 3、 単一ボリュームならば 2 です。 DVD-ROM では 2 です。
UDF1.02 では、文字セットは 1 種のみです。
Volume Set Identifier は、読み取りの際はそのままボリュームセット名と解釈します。
UDF1.02 で書き込む際には、他のボリュームセットと区別できるようにします。 そこで、最初の 16 文字がユニークな値になるようにします。 そのために、最初の 8 文字を、32ビット時間 (time_t?) を 16進数に直した文字を入れることが推奨のようです。
Volume Abstract、Volume Copyright Notice、Application Identifier、Implementation Use、 Predecessor Volume Descriptor Sequence Location は、使われていなければ 0 です。
Flags は、次のとおりです。
Bit | 内容 |
0 | 0=PVD はボリュームセット内のボリューム毎に異なる
1=PVD はボリュームセット内の全てのボリュームで同じ |
1〜15 | 予約 |
UDF1.02 では、ボリュームは 1 つなので、フラグは 0 です。