位置 | 大きさ | 型 | 名称 | 内容 |
0 | 1 | unsigned char | Volume Descriptor Type | =1 |
1〜5 | 5 | char[5] | Standard Identifier | ="CD001" |
6 | 1 | unsigned char | Volume Descriptor Version | 大抵 =1 |
7 | 1 | unsigned char | Unused Field | =0 |
8〜39 | 32 | char[32] | System identifier | システム識別子 (a文字) |
40〜71 | 32 | char[32] | Volume Identifier | ボリュームラベル (d文字) |
72〜79 | 8 | char[8] | Unused Field | =0 |
80〜83 | 4 | unsigned long | Volume Space Size | ボリュームの大きさ [Blocks] |
84〜87 | 4 | unsigned long (M) | Volume Space Size | 上に同じ |
88〜119 | 32 | char[32] | Escape Sequences | =0 |
120〜121 | 2 | unsigned short | Volume Set Size | ボリューム集合の大きさ |
122〜123 | 2 | unsigned short (M) | Volume Set Size | 上に同じ |
124〜125 | 2 | unsigned short | Volume Sequence Number | ボリューム順序番号 |
126〜127 | 2 | unsigned short (M) | Volume Sequence Number | 上に同じ |
128〜129 | 2 | unsigned short | Logical Block Size | 論理ブロックの大きさ [BYTE] 大抵2048 |
130〜131 | 2 | unsigned short (M) | Logical Block Size | 上に同じ |
132〜135 | 4 | unsigned long | Path Table Size | パステーブルの大きさ [BYTE] |
136〜139 | 4 | unsigned long (M) | Path Table Size | 上に同じ |
140〜143 | 4 | unsigned long | Location of Occurrence of Type L Path Table | L形パステーブルの先頭位置 [LBN] |
144〜147 | 4 | unsigned long | Location of Optional Occurrence of Type L Path Table | 任意L形パステーブルの先頭位置 [LBN] |
148〜151 | 4 | unsigned long (M) | Location of Occurrence of Type M Path Table | M形パステーブルの先頭位置 [LBN] |
152〜155 | 4 | unsigned long (M) | Location of Optional Occurrence of Type M Path Table | 任意M形パステーブルの先頭位置 [LBN] |
156〜189 | 34 | struct directory_record | Directory Record for Root Directory | ルートディレクトリのディレクトリレコード |
190〜317 | 128 | char[128] | Volume Set Identifier | ボリューム集合識別子 (d文字) |
318〜445 | 128 | char[128] | Publisher Identifier | 出版者識別子 (a文字) |
446〜573 | 128 | char[128] | Data Preparer Identifier | データ編集者識別子 (a文字) |
504〜701 | 128 | char[128] | Application Identifier | 応用システム識別子 (a文字) |
702〜738 | 37 | char[37] | Copyright File Identifier | 著作権ファイル識別子 (d文字) |
739〜775 | 37 | char[37] | Abstract File Identifier | 抄録ファイル識別子 (d文字) |
776〜812 | 37 | char[37] | Bibliographic File Identifier | 書誌ファイル識別子 (d文字) |
813〜829 | 17 | struct datetime_l | Volume Creation Date and Time | ボリューム作成日時 |
830〜846 | 17 | struct datetime_l | Volume Modification Date and Time | ボリューム更新日時 |
847〜863 | 17 | struct datetime_l | Volume Expiration Date and Time | ボリューム失効日時 |
864〜880 | 17 | struct datetime_l | Volume Effective Date and Time | ボリューム発効日時 |
881 | 1 | unsigned char | File Structure Version | ファイル構造版数 =1 |
882 | 1 | unsigned char | Reserved | =0 |
883〜1394 | 512 | unsigned char[512] | Application Use | =0 |
1395〜2047 | 653 | unsigned char[653] | Reserved | =0 |
文字を入れる System identifier、Volume Identifier、 Volume Set Identifier、Publisher Identifier、Data Preparer Identifier、Application Identifier、 Copyright File Identifier、Abstract File Identifier、Bibliographic File Identifier は全て先詰で、 余った部分には半角スペース (0x20) を入れます。 使わない場合は全て半角スペース (0x20) です。
ただ、中には最後のバイトが 0 であったり、余った部分が 0 であるディスクもあったような気がします。
Volume Set Size と Volume Sequence Number は、 例えばCD-ROM何枚組の百科辞典があるとき、 辞典のディスク枚数を Volume Set Size に、そのディスク番号を Volume Sequence Number に それぞれ入れます。ただ複数枚組のゲームでも使われているのを見たことは無く、 どちらも大抵 0x01 が入っています。
Path Table Size はパステーブルの先端から終端までのバイト数です。 パステーブルでは一つのパステーブルレコードが論理ブロックを跨いでも大丈夫です。
任意パステーブルを使わない場合 Location of Occurrence of Type L/M Path Table に 0 を入れます。
Directory Record for Root Directory には、 ルートディレクトリのディレクトリレコード(後述)が丸ごと入っています。 ディレクトリ識別子は 0x00 で、識別子の長さは 1 バイトです。
Volume Set Identifier には、例えばCD-ROM何枚組の百科辞典があるとき、 その百科辞典名を入れます。 ただ使われているのを見たことはあまり無く、 ボリュームラベルと同じか、半角スペース(0x20)で埋まっています。NOT_SET と書かれるソフトもあったような気がします。
Publisher Identifier、Data Preparer Identifier、Application Identifier が使われる場合で、 最初のバイトがアンダーバー (0x5F '_') のとき、ファイル名が入っており、 そのファイルがルートディレクトリに置かれています。 その場合、ディレクトリレコードのファイル記述子と同じ構造です。他、普通の文字列が入っている場合もあります。
Copyright File Identifier、Abstract File Identifier、Bibliographic File Identifier が使われるとき、 ファイル名が入っており、 そのファイルがルートディレクトリに置かれています。
作成、更新、失効、発行日時の構造(datetime_l)は、次のとおりです。
位置 | 大きさ | 型 | 名称 | 内容 |
0 | 4 | char[4] | Year from 1 to 9999 | 西暦年 (d文字) |
4 | 2 | char[2] | Month of the year from 1 to 12 | 月 (d文字) |
6 | 2 | char[2] | Day of the month from 1 to 31 | 日 (d文字) |
8 | 2 | char[2] | Hour of the day from 0 to 23 | 時 (d文字) |
10 | 2 | char[2] | Minute of the hour from 0 to 59 | 分 (d文字) |
12 | 2 | char[2] | Second of the minute from 0 to 59 | 秒 (d文字) |
14 | 2 | char[2] | Hundredths of a second | 1/100 秒 (d文字) |
16 | 1 | char | Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East) | グリニッジ標準時からの偏差(15分単位) |
年月日時分秒1/100秒は、数値ではなくd文字です。1月の場合'0x30''0x31'、12月の場合'0x31''0x32'となります。偏差のみ数値です。 偏差は、日本の場合 0x24=36=9×4 になります。
使われていない場合、年月日時分秒1/100秒にd文字の 0 (0x30) 、偏差に数値の 0x00 がそれぞれ入っています。 たまに全て数値の 0x00 になっているディスクもあります。
なお、西暦1万年問題があります。
Application Use や 最後の Reserved には、プロテクトがかけられたディスクなどで 何かしらの文字などが入っている場合があります。