2007年06月29日

Joliet その4 複セッションのディスク

音楽とデータを別個のトラックに置いて一枚にまとめられる CD では、特有のややこしい問題があります。

まず、先頭の位置は最初のセッションの 00:02:00 とします。経過時間(分秒フレーム)と論理アドレスの変換式はは、
(((Minute*60)+Seconds)*75) - 150
です。

そして Joliet では、セクタフォーマットに Mode 1 か Mode 2 Form 1 のどちらかを使います。
Mode 1 は単一セッションの場合のみ使用します。
この Mode 1 と Mode 2 Form 1 のユーザーデータの容量は1セクタあたり 2048バイトなので、00:02:00 からの論理アドレスを論理ブロック番号として、SVD の パステーブルの先頭位置やディレクトリレコードのディレクトリ/ファイルの先頭位置に記録します。

ボリューム記述子群は、そのデータトラックの 16 セクタ目より始まります。

これらのことは、Joliet に限らず ISO9660 (の PVD) のみのディスクでも、こうなっているようです。

なお、DVD では、ユーザーデータ領域の開始位置から数えます。ユーザーデータの容量は1セクタ当たり2048 バイトです。
posted by 七癖 at 09:49| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月27日

Joliet その3 疑問

Joliet の仕様を訳してみて、疑問に思ったことを並べてみます。

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 で埋める。
などです。
posted by 七癖 at 09:43| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月25日

Joliet その2 仕様

Joliet では、ISO9660 の SVD を利用し、文字に UCS-2 を使います。 それに伴う変更点を挙げてゆきます。


1.SVD の設定

1.1 エスケープシーケンスの設定

SVD の Escape Sequences に、UCS-2 を示す 3 レベルあるエスケープシーケンスのいずれかを設定します。

StandardLevelDecimalHex BytesASCII
UCS-2Level 12/5, 2/15, 4/00x25, 0x2F, 0x40"%\@"
UCS-2Level 22/5, 2/15, 4/30x25, 0x2F, 0x43"%\C"
UCS-2Level 32/5, 2/15, 4/50x25, 0x2F, 0x45"%\E"

残りの29バイトは全て 0x00 です。
とりあえず全部扱えるレベル3に設定しておくのが無難です。

1.2 Volume Flags の設定

UCS-2 は ISO2375 に登録済のため、SVD の Volume Flags は 0 です。


2.文字

2.1 記述法

各文字は UCS-2 の文字をビッグエンディアンで使用します。

2.2 使えない文字

次の文字は使用禁止です。

コード文字意味備考
0x00,0x00〜0x00,0x90 制御文字 
0x00,0x2A*アスタリスク 
0x00,0x2F/スラッシュ 
0x00,0x3A:コロン 
0x00,0x3B;セミコロンファイル識別子のファイル名/拡張子とバージョンの区切りに使用
0x00,0x3F?疑問符 
0x00,0x5C\バックスラッシュ 

理由は書かれていませんが、 なんとなく Windows でファイル名として使えない文字は使えませんよ、と言っている気がします。

2.3 使用箇所

SVD 及び SVD から辿るファイルとディレクトリに UCS-2 の文字列を使用します。 並び立てると、

SVD : System Identifier
SVD : Volume Identifier
SVD : Volume Set Identifier
SVD : Publisher Identifier
SVD : Data Preparer Identifier
SVD : Application Identifier
SVD : Copyright File Identifier
SVD : Abstract File Identifier
SVD : Bibliographic File Identifier
ディレクトリレコード : File Identifier
パステーブル : Directory Identifier
拡張属性レコード : System Identifier

つまり a1/d1 文字を使用する箇所の全てです。


3.ファイル識別子

3.1 ファイル識別子の形

ファイル識別子は次の形を取ります。
ファイル名+0x00,0x2E+拡張子+0x00,0x3B+バージョン
0x00,0x2E = '.'
0x00,0x3B = ';'
単純に各文字をUCS-2の文字に変換しただけです。
ドットは自由に使えるので、ファイル名と拡張子の区切りは無いようなものです。

3.2 ファイル識別子の長さ

ファイル識別子はファイル名と拡張子の合計が64文字、128バイトまで使えます。


4.ディレクトリ識別子

4.1 ディレクトリ識別子の長さ

ディレクトリ識別子は64文字、128バイトまで使えます。

4.2 ルートディレクトリと自身のディレクトリ、親ディレクトリ

これらの特別なディレクトリの識別子には、 ISO9660 の PVD と同様に、 識別子の長さを 1 (バイト)と置き、 ルートディレクトリと自身のディレクトリ は 0x00、 親ディレクトリ は 0x01 と設定します。


5. ディレクトリ階層

ディレクトリ階層の深さに制限はありません。8 を越えてもいいです。


6. フルパス名

各ファイルは、以下の合計が 240 バイトを越えないようにします。
・ファイル識別子の長さ
・すべての関連したディレクトリの識別子の長さ
・関連したディレクトリの数

posted by 七癖 at 10:35| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月23日

Joliet その1 導入

Joliet は、1995年にMicrosoft社が提唱した CD-ROM 用のファイルシステムであり、ISO 9660:1988 の制限を緩めたものです。

Joliet では、ISO9660 と併用させるために、ISO9660 の SVD を使用します。そして、ディレクトリやパステーブルなど、ファイルシステムの構造と使い方は、ISO9660 と同じです。
違うのは、文字列に Unicode (正確にはUCS-2)を使っていることであり、それに関わる問題を調整しているだけです。

結果として、Joliet は ISO9660:1999 の SVD と EVD の中間のようなものであり、EVD の「当事者同士の合意」とある部分を定めたものになっています。というより、Joliet のような仕様が普及したため、ISO9660:1999 の EVD が作られたのでしょう。

参考文献

Joliet Specification
http://bmrc.berkeley.edu/people/chaffee/jolspec.html
今回の基礎資料。
他にも検索すれば幾つか見つかります。
Microsoft のサイトで見つからないため、オリジナルがどれか不明です。

その他、多くの方の WebSite、ソースコード。
posted by 七癖 at 09:31| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月21日

ISO9660 その15 情報交換の水準

PVD から辿るファイルとディレクトリには、以下の水準に分けられた制限があります。

水準123
ファイル名+拡張子[BYTE]8+33030
ディレクトリ名[BYTE]83131
ファイル分割不可不可
ディレクトリ階層888
フルパス名[BYTE]255255255


EVD から辿るファイルとディレクトリには、以下の制限があります。

水準123
ファイル識別子[BYTE]207207207
ディレクトリ識別子[BYTE]207207207
ファイル分割不可不可
ディレクトリ階層制限なし制限なし制限なし
フルパス名[BYTE]制限なし制限なし制限なし


PVD のファイル名+拡張子はの 30 は、ファイル名と拡張子の長さの合計で、'.'を除きます。 また、ファイル名か拡張子のどちらかは 1 文字以上です。

ディレクトリ階層は、ルートディレクトリを1とし、2、3、と続きます。

フルパス名[BYTE]には、ドライブレターを含みません。
0/LEVEL_02/LEVEL_03/LEVEL_04/LEVEL_05/LEVEL_06/LEVEL_07/LEVEL_08/FILENAME.EXT;32767
であれば 83 文字です。(ルートを1文字と数えると思うのですが、どうなのでしょう?)
水準1ならば問題ありません。

EVD のファイル/ディレクトリ識別子の 207 バイトという数字は、 ディレクトリレコードの仕様から算出されます。
ディレクトリレコードの長さは 8 ビットで記録され、 偶数のため最大254バイトです。 ファイル識別子以外の部分で最低33バイト必要であり、 CD-ROM XA で14バイト使用する(詳しくは不明)ため、 ファイル識別子の長さは最大207バイトになります。
なお、EVD のファイル識別子の拡張子、版数などは特に規定がなく、当事者間の合意によります。

一般的には 水準 1 が使われます。

posted by 七癖 at 09:35| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月19日

ISO9660 その14 拡張属性レコード

拡張属性レコードは使ったことが無いので、表のみ掲げておきます。

位置大きさ名称内容
0〜12unsigned shortOwner Identification 所有者識別情報
2〜32unsigned short (M)Owner Identification 上に同じ
4〜52unsigned shortGroup Identification グループ識別情報
6〜72unsigned short (M)Group Identification 上に同じ
8〜92unsigned shortPermissions 許可条件
10〜2617datetime_lFile Creation Date and Time ファイル作成日時
27〜4317datetime_lFile Modification Date and Time ファイル更新日時
44〜6017datetime_lFile Expiration Date and Time ファイル失効日時
61〜7717datetime_lFile Effective Date and Time ファイル発効日時
781unsigned charRecord Format レコード形式
791unsigned charRecord Attributes レコード属性
80〜812unsigned shortRecord Length レコード長
82〜832unsigned short (M)Record Length 上に同じ
84〜11532char[32]System identifier システム識別子 (a文字)
116〜17964unsigned char[64]System Use =0
1801unsigned charExtended Attribute Record Version 拡張属性レコードの版数
1811unsigned charLength of Escape Sequences (LEN_ESC) エスケープシーケンスの長さ
182〜24564unsigned char[64]Reserved =0
246〜2472unsigned shortLength of Application Use (LEN_AU) 応用システム用欄の長さ
248〜2492unsigned short (M)Length of Application Use (LEN_AU) 上に同じ
250〜(250+LEN_AU-1)LEN_AUunsigned char[LEN_AU]Application Use 応用システム用
250+LEN_AU〜(250+LEN_AU+LEN_ESC-1)LEN_ESCchar[LEN_ESC]Escape Sequences エスケープシーケンス


Permissions は次のとおりです。

ビット実行者内容
0システム0=読み取り可能 / 1=読み取り不能
1=1
20=実行可能 / 1=実行不能
3=1
4所有者0=読み取り可能 / 1=読み取り不能
5=1
60=実行可能 / 1=実行不能
7=1
8グループ0=読み取り可能 / 1=読み取り不能
9=1
100=実行可能 / 1=実行不能
11=1
12その他0=読み取り可能 / 1=読み取り不能
13=1
140=実行可能 / 1=実行不能
15=1

posted by 七癖 at 09:36| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月17日

DirectSound で悪戦苦闘

今日は、ISO9660ファイルシステムの話を休憩して、この前の音楽再生プログラミングの状況を書きます。

続きを読む。
posted by 七癖 at 10:44| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2007年06月15日

ISO9660 その13 パステーブル

パステーブルには、ボリュームが持つ全てのディレクトリの階層情報とディレクトリの場所が記されています。 つまりディレクトリを親から順に辿らなくともショートカットできるわけですが、 それにはパステーブルを全て読み込む必要があります。

パステーブルは、単純に言うと パステーブルレコードというディレクトリの情報を記した構造体をつなげて並べたものです。

一つのパステーブルレコードは一つのディレクトリに対応し、 順番に番号が割り振られます。 ルートディレクトリが 1 です。 子ディレクトリのパステーブルレコードは、親ディレクトリのパステーブルレコードの番号を持っています。

パステーブルレコードは以下の規則に従って並べられます。
1. ディレクトリ階層順。ルートから順に、親が前、子が後。
2. 同じ階層では、親ディレクトリの番号が若い方から先。
3. 親が同じならば、名前(文字コード)順。

パステーブルは、L型とM型をそれぞれ用意します。 L型では パステーブルレコードの Location of Extent と Parent Directory Number をリトルエンディアンで、 M型ではビッグエンディアンで記述します。

また、もう一つづつ予備のパステーブルを用意することも出来ます。

個々のパステーブルレコードの構造は、次のとおりです。

位置大きさ名称内容
01unsigned charLength of Directory Identifier (LEN_DI) ディレクトリ識別子の長さ
11unsigned charExtended Attribute Record Length 拡張属性レコードの長さ
2〜54unsigned long (L/M)Location of Extent ディレクトリの先頭位置 [LBN]
6〜72unsigned short (L/M)Parent Directory Number 親ディレクトリの番号
8〜(8+LEN_DI-1)LEN_FIchar[LEN_FI]File Identifier ディレクトリ識別子
8+LEN_DI1unsigned charPadding Field =0 全体を偶数にするため


Extended Attribute Record Length は、無ければ 0x00 です。

ディレクトリ識別子は、ディレクトリレコードと同様に、 ルートディレクトリでは1バイトの 0x00、 それ以外の一般的なディレクトリにはd/d1文字を使用します。

ディレクトリ識別子の長さが奇数の場合(全体の長さが奇数になってしまった場合) 終端に 1 バイト追加し、0x00 を入れます。これが Padding Field です。 ファイル名の長さが偶数ならば、必要ありません。

posted by 七癖 at 10:07| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月11日

ISO9660 その12 ディレクトリとディレクトリレコード

ディレクトリは、単純に書くとそのディレクトリが持っている ファイルやディレクトリの情報を記した構造体(ディレクトリレコード)をつなげて並べたものです。
ただ、個々のディレクトリレコードの大きさは、ファイル/ディレクトリの名前の長さによって異なります。

ディレクトリレコードは、次のようになっています。

位置大きさ名称内容
01unsigned charLength of Directory Record (LEN_DR) このディレクトリレコードの長さ [BYTE]
11unsigned charExtended Attribute Record Length 拡張属性レコードの長さ(無ければ0)
2〜54unsigned longLocation of Extent ディレクトリまたはファイル本体の先頭位置 [LBN]
6〜94unsigned long (M)Location of Extent 上に同じ
10〜134unsigned longData Length ディレクトリまたはファイル本体の大きさ [BYTE]
14〜174unsigned long (M)Data Length 上に同じ
18〜247struct datetime_sRecording Date and Time 記録日時
251unsigned charFile Flags ファイルフラグ
261unsigned charFile Unit Size ファイルユニットの大きさ
271unsigned charInterleave Gap Size インタリーブ間隙の大きさ
28〜292unsigned shortVolume Sequence Number ボリューム順序番号
30〜312unsigned short (M)Volume Sequence Number 上に同じ
321unsigned charLength of File Identifier (LEN_FI) ファイル識別子の長さ(LEN_FI)
33〜(33+LEN_FI-1)LEN_FIchar[LEN_FI]File Identifier ファイル/ディレクトリ識別子
33+LEN_FI1unsigned charPadding Field =0 全体を偶数にするため
(LEN_DR-LEN_SU)〜(LEN_DR-1)LEN_SUchar[LEN_SU]System Use システム用

ファイルの場合、Data Length はファイル本体のバイト数です。
ディレクトリの場合、Data Length は
ディレクトリが占有している論理ブロック数×論理ブロック当たりのバイト数
です
また、Data Length に拡張属性の大きさは含みません。


表中の記録日時の構造(datetime_s)は次のとおりです。

位置大きさ名称内容
01unsigned charNumber of years since 1900 西暦年 - 1900
11unsigned charMonth of the year from 1 to 12
21unsigned charDay of the month from 1 to 31
31unsigned charHour of the day from 0 to 23
41unsigned charMinute of the hour from 0 to 59
51unsigned charSecond of the minute from 0 to 59
61charOffset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East) グリニッジ標準時からの偏差(15分単位)

こちらの年月日時分秒は文字ではなく数値です。 使われていなければ、全て 0x00 です。
西暦2156年問題があります。

ファイルフラグは次のとおりです。

ビット名称内容
0Existence0=可視ファイル / 1=不可視ファイル
1Directory0=ファイル / 1=ディレクトリ
2Associated File0=主ファイル / 1=関連ファイル
3Record0=ファイルがレコード形式を持たない / 1=レコード形式を持つ
4Protection0=許可条件無効 / 1=許可条件有効
5Reserved予約(=0)
6Reserved予約(=0)
7Multi-Extent0=ファイルの最終ディレクトリレコードである / 1=ファイルの最終ディレクトリレコードでない

隠しファイルのとき、ビット0を設定します。
ビット1でファイルかディレクトリかを判別します。
他は…大抵 0 です。

File Unit Size と Interleave Gap Size は、ファイルが分割されている時に使います。 ファイルが分割されていなければ 0 です。

Volume Sequence Number は、普通一つのボリューム内に全て記入するので、その場合 1 です。


ファイル/ディレクトリ識別子は、いわゆるファイル/ディレクトリ名です。

PVD から辿る場合、ファイル識別子は、次のようになっています。
ファイル名+0x2E+拡張子+0x3B+バージョン
0x2E = '.'
0x3B = ';'
拡張子は無い場合もあります。
バージョンは、1〜32767の数値を文字で記述します。 windows では 1 です。
各文字はd文字を使用します。
よって、
FILENAME.EXT;1
のように書かれています。
(文字数の制限は後まわし。)

EVD から辿る場合、文字はd1文字を使用します。
拡張子、版数などはありません。(当事者間の合意によります。)

ディレクトリでは、最初に自身のディレクトリレコードを、 次に親のディレクトリレコードを記録します。 自分自身のディレクトリ識別子には、1バイトの 0x00 を、 親ディレクトリのディレクトリ識別子には、1バイトの 0x01 を使います。 文字に Unicode のような2バイト文字を使う場合でも、 ファイル識別子の長さ(LEN_FI)を 1 と置き、 単一バイトの 0x00 と 0x01 を使用します。
なお、ルートディレクトリの識別子にも1バイトの 0x00 を使います。 ルートディレクトリ内の親ディレクトリ(0x01)もルートディレクトリ自身を示します。 (無いこともあります。)
それ以外の一般的なディレクトリの識別子にはd/d1文字を使用します。


ファイル識別子の長さが偶数の場合(全体の長さが奇数になってしまった場合) 終端に 1 バイト追加し、0x00 を入れます。これが Padding Field です。 ファイル名の長さが奇数ならば、必要ありません。

System Use は、ファイル名の長さにかかわらず ディレクトリレコードの長さを同じにしたい場合(たまにある)など、 ディレクトリレコード間に隙間を空ける時に使います。
なお、ディレクトリレコードが論理ブロックを跨がないように、 論理ブロックの終わりのほうを 0x00 で埋める必要があります。
 
posted by 七癖 at 09:20| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月09日

Ogg Vorbis と Wave 再生プログラミングで悪戦苦闘

今日は、ISO9660ファイルシステムの話は休憩して、最近手を付けた .ogg ファイルを再生するプログラムの状況を書きます。
(発表予定はなし。)

続きを読む。
posted by 七癖 at 09:53| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2007年06月07日

ISO9660 その11 VDT

Volume Descriptor Set Terminator (VDT)(ボリューム記述子集合終端子)は、 ボリューム記述子群の終端を示すもので、ISO9660及びその派生、拡張形式には 必ず一つは存在します。その構造は、次のとおりです。

位置大きさ名称内容
01unsigned charVolume Descriptor Type=255
1〜55char[5]Standard Identifier="CD001"
61unsigned charVolume Descriptor Version大抵 =1
7〜20472041unsigned char[2041](Reserved for future standardization)=0

最初のバイトが 255 ならば、ボリューム記述子群はここまで、ということです。

posted by 七癖 at 11:01| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月05日

ISO9660 その10 Boot Record

Boot Record (BR)(ブートレコード)は使ったことがないので、 表のみ書いておきます。

位置大きさ名称内容
01charVolume Descriptor Type=0
1〜55char[5]Standard Identifier="CD001"
61unsigned charVolume Descriptor Version大抵 =1
7〜3832char[32]Boot System Identifier起動システム識別子 (a文字)
39〜7032char[32]Boot Identifier起動識別子 (a文字)
71〜20471977unsigned char[1977]Boot System Use起動システム用

posted by 七癖 at 09:44| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月03日

ISO9660 その9 VPD

Volume Partition Descriptor (VPD)(ボリューム区画記述子)は使ったことがないので、 表のみ書いておきます。

位置大きさ名称内容
01unsigned charVolume Descriptor Type=3
1〜55char[5]Standard Identifier="CD001"
61unsigned charVolume Descriptor Version大抵 =1
71unsigned charUnused Field=0
8〜3932char[32]System identifierシステム識別子 (a文字)
40〜7132char[32]Volume Partition Identifierボリューム区画識別子 (d文字)
72〜754unsigned longVolume Partition Locationボリューム区画の先頭位置 [LBN]
76〜794unsigned long (M)Volume Partition Location上に同じ
80〜834unsigned longVolume Partition Sizeボリューム区画の大きさ [Blocks]
84〜874unsigned long (M)Volume Partition Size上に同じ
88〜20471960unsigned char[1960]System Useシステム用

posted by 七癖 at 10:09| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月01日

ISO9660 その8 SVD/EVD

Supplementary Volume Descriptor (SVD)(副ボリューム記述子) と Enhanced Volume Descriptor (EVD)(拡張ボリューム記述子)の構造は PVD と同じですが、入れる値が異なります。

位置大きさ名称内容
01unsigned charVolume Descriptor Type=2
1〜55char[5]Standard Identifier="CD001"
61unsigned charVolume Descriptor Version=1(SVD), =2(EVD)
71unsigned charVolume Flagsビット0 : 0=ISO2375登録のエスケープシーケンスのみ / 1=ISO2375登録外のエスケープシーケンスが含まれる
8〜3932char[32]System identifierシステム識別子 (a1文字)
40〜7132char[32]Volume Identifierボリュームラベル (d1文字)
72〜798char[8]Unused Field=0
80〜834unsigned longVolume Space Sizeボリュームの大きさ [Blocks]
84〜874unsigned long (M)Volume Space Size上に同じ
88〜11932char[32]Escape Sequencesエスケープシーケンス
120〜1212unsigned shortVolume Set Sizeボリューム集合の大きさ
122〜1232unsigned short (M)Volume Set Size上に同じ
124〜1252unsigned shortVolume Sequence Numberボリューム順序番号
126〜1272unsigned short (M)Volume Sequence Number上に同じ
128〜1292unsigned shortLogical Block Size論理ブロックの大きさ [BYTE] 大抵2048
130〜1312unsigned short (M)Logical Block Size上に同じ
132〜1354unsigned longPath Table Sizeパステーブルの大きさ [BYTE]
136〜1394unsigned long (M)Path Table Size上に同じ
140〜1434unsigned longLocation of Occurrence of Type L Path TableL形パステーブルの先頭位置 [LBN]
144〜1474unsigned longLocation of Optional Occurrence of Type L Path Table任意L形パステーブルの先頭位置 [LBN]
148〜1514unsigned long (M)Location of Occurrence of Type M Path TableM形パステーブルの先頭位置 [LBN]
152〜1554unsigned long (M)Location of Optional Occurrence of Type M Path Table任意M形パステーブルの先頭位置 [LBN]
156〜18934struct directory_recordDirectory Record for Root Directoryルートディレクトリのディレクトリレコード
190〜317128char[128]Volume Set Identifierボリューム集合識別子 (d1文字)
318〜445128char[128]Publisher Identifier出版者識別子 (a1文字)
446〜573128char[128]Data Preparer Identifierデータ編集者識別子 (a1文字)
504〜701128char[128]Application Identifier応用システム識別子 (a1文字)
702〜73837char[37]Copyright File Identifier著作権ファイル識別子 (d1文字)
739〜77537char[37]Abstract File Identifier抄録ファイル識別子 (d1文字)
776〜81237char[37]Bibliographic File Identifier書誌ファイル識別子 (d1文字)
813〜82917struct datetime_lVolume Creation Date and Timeボリューム作成日時
830〜84617struct datetime_lVolume Modification Date and Timeボリューム更新日時
847〜86317struct datetime_lVolume Expiration Date and Timeボリューム失効日時
864〜88017struct datetime_lVolume Effective Date and Timeボリューム発効日時
8811unsigned charFile Structure Versionファイル構造版数 =1
8821unsigned charReserved=0
883〜1394512unsigned char[512]Application Use=0
1395〜2047653unsigned char[653]Reserved=0

Escape Sequences には、ISO/IEC 2022 のエスケープシーケンスを入れます。 これがあると、ファイル名などに多種の文字が使用できるようになりますが、 読み取る側がそのエスケープシーケンスに対応していないと無駄です。
全て 0 であれば ISO/IEC 646 となり、a 文字と d 文字しか使えません。

各日時は、PVD と同じです。つまり、年月日時分秒1/100秒にはd文字を使います。

System identifier、Publisher Identifier、Data Preparer Identifier、Application Identifier が a 文字から a1 文字に、 Volume Identifier、Volume Set Identifier、Copyright File Identifier、Abstract File Identifier、Bibliographic File Identifier が d 文字から d1 文字に、 それぞれ変更されています。

エスケープシーケンスの補足と疑問
posted by 七癖 at 09:57| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。