1.SVD:Volume Descriptor Version の設定
大抵 Joliet 形式の CD-ROM では、SVD の Volume Descriptor Version は 1 になっています。ですが Joliet は SVD よりむしろ EVD 寄りのため、Volume Descriptor Version には 2 を設定したほうがいいのかもしれません。しかし、これは Joliet の後 ISO9660:1999 になってから作られた仕様です。Windows95 や 98 を使っている人のことを考えると、1 のままのほうが良いかもしれません。
2.ソート
パステーブルレコードやディレクトリレコードを並び替える際、ファイル名の長さの違いをどうするかという問題があります。ISO9660 では短い方を長い方に合わせる為、適当な1バイトデータを足りない分だけ後ろに追加することになっています。ISO9660 の PVD では、0x20 (半角スペース) を使います。Joliet の SVD では、0x00 を使います。
…まあ d 文字 と a 文字 を使う場合に限れば 0x20 でも 0x00 でもソートの結果は同じでしょう。VisualC++6.0に組み込まれた文字列の比較関数では、先頭の文字から順番に比較し、「abc」「abcde」の場合は短い「abc」を小さいとしますが、これも上のやり方と結果は同じでしょう。
3.FILLER (Justification of characters)
SVD には、Volume Identifier などの固定長文字列において、使わない場合や余った場所をどう設定するかという問題があります。ISO9660 の PVD では、0x20 (半角スペース) を使います。ですが、Joliet では特に書かれていません。なので CD-ROM の作成者によってまちまちです。
・ソートと同様に 0x00 を使う。
・半角スペースを UCS-2 に直した 0x00,0x20 を使う。この場合、37バイトと奇数の Copyright File Identifier、Abstract File Identifier、Bibliographic File Identifier の最後のバイトは 0x00 にする。
・ISO9660 の PVD に倣い、全て 0x20 で埋める。
などです。