Logical Volume Integrity format
BP | 大きさ | 型 | 名称 | 内容 |
0〜15 | 16 | struct tag | Descriptor Tag | TagID=9 |
16〜27 | 12 | struct timestamp | Recording Date and Time | 記録日時 |
28〜31 | 4 | unsigned long | Integrity Type | =1 |
32〜39 | 8 | struct extent_ad | Next Integrity Extent | =0 (指定せず) |
40〜71 | 32 | unsigned char[32] | Logical Volume Contents Use | 次の一意ID |
72〜75 | 4 | unsigned long | Number of Partitions (=N_P) | (=1) パーティション数 |
76〜79 | 4 | unsigned long | Length of Implementation Use (=L_IU) | =46 |
80〜80 + N_P×4 -1 | N_P×4 | unsigned long[N_P] | Free Space Table | (=0) 各パーティションの空き領域の大きさ [LBs] |
80 + N_P×4〜80 + N_P×8 -1 | N_P×4 | unsigned long[N_P] | Size Table | 各パーティションが使用している論理ブロックの数 [LBs] |
80 + N_P×8〜80 + N_P×8 + L_IU -1 | L_IU | unsigned char[L_IU] | Implementation Use | 下記参照 |
Integrity Type は、0 がオープン、1 がクローズ、2〜255 は予約です。
Next Integrity Extent は、次の論理ボリューム保全列の位置を示します。無ければ 0 です。
Logical Volume Contents Use には、次の Logical Volume Header Descriptor (論理ボリュームヘッダ記述子) を記述します。
Logical Volume Header Descriptor format
RBP | 大きさ | 型 | 名称 | 内容 |
0〜7 | 8 | unsigned __int64 | Unique Id | 一意ID |
8〜31 | 24 | unsigned char[24] | Reserved | =0 |
Unique Id は、全てのファイルとディレクトリに割り振られた番号です。 ルートディレクトリは 0、1〜15 は Macintosh 用に予約で、 他のファイルとディレクトリは、16 以上のそれぞれ別の番号をもちます。 普通は、記録順に番号を振ってゆきます。 そして、この LVID の UniqueID には、どのファイルやディレクトリよりも大きな値、 もし、次にファイルを加えるとすれば、それに割り振る値を入れます。 (なお、Macintosh のことを考え 231 - 1 未満の値にしてください。)
Free Space Table と Size Table の値が 0xFFFFFFFF ならば、サイズは未定義ですが、 これだと OS が困るのでちゃんとした値を入れましょう。
UDF1.02 では、Implementation Use は次のとおりです。
Implementation Use format
RBP | 大きさ | 型 | 名称 | 内容 |
0〜31 | 32 | entity_id | Implementation ID | *開発者名 |
32〜35 | 4 | unsigned long | Number of Files | ファイル総数 |
36〜39 | 4 | unsigned long | Number of Directories | ディレクトリ総数 (ルートディレクトリを含む) |
40〜41 | 2 | unsigned short | Minimum UDF Read Revision | =0x0102 読出し最小版数 |
42〜43 | 2 | unsigned short | Minimum UDF Write Revision | =0x0102 書込み最小版数 |
44〜45 | 2 | unsigned short | Maximum UDF Write Revision | =0x0102 書込み最大版数 |
それぞれ、論理ボリューム内の数です。
今説明しているのは UDF 1.02 なので、各版数は 0x0102 です。 他のバージョンの場合は、対応するマニュアルを調べてください。
(確か UDF 1.50 の場合は、0x0150 だったと思います。)