2008年03月17日

UDF1.02 ファイルシステムの目次

UDF1.02 1-01 導入
UDF1.02 1-02 用語
UDF1.02 1-03 略語
UDF1.02 1-04 訳語
UDF1.02 1-05 三構造
UDF1.02 1-06 要素
UDF1.02 1-07 ファイルへのアクセス
UDF1.02 1-08 ECMA167の一般事項と制限
UDF1.02 1-09 UDF1.02 の制限
UDF1.02 1-10 数値と文字
UDF1.02 1-11 charspec
UDF1.02 1-12 OSTA Compressed Unicode
UDF1.02 1-13 timestamp
UDF1.02 1-14 regid
UDF1.02 1-15 extent_ad
UDF1.02 1-16 tag
UDF1.02 1-17 lb_addr
UDF1.02 1-18 short_ad
UDF1.02 1-19 long_ad
UDF1.02 1-20 ext_ad

UDF1.02 2-01 ボリューム認識列
UDF1.02 2-02 Beginning Extended Area Descriptor
UDF1.02 2-03 Terminating Extended Area Descriptor
UDF1.02 2-04 Boot Descriptor
UDF1.02 2-05 NSR Descriptor

UDF1.02 3-01 Anchor Volume Descriptor Pointer
UDF1.02 3-02 Terminating Descriptor
UDF1.02 3-03 ボリューム記述子列
UDF1.02 3-04 Primary Volume Descriptor
UDF1.02 3-05 Implementation Use Volume Descriptor
UDF1.02 3-06 Partition Descriptor
UDF1.02 3-07 Logical Volume Descriptor
UDF1.02 3-08 Unallocated Space Descriptor
UDF1.02 3-09 Volume Descriptor Pointer
UDF1.02 3-10 論理ボリューム保全列
UDF1.02 3-11 Logical Volume Integrity Descriptor

UDF1.02 4-01 ファイル集合記述子列
UDF1.02 4-02 File Set Descriptor
UDF1.02 4-03 ディレクトリ
UDF1.02 4-04 File Identifier Descriptor
UDF1.02 4-05 ICB Tag
UDF1.02 4-06 File Entry
UDF1.02 4-07 Extended Attribute Header Descriptor
UDF1.02 4-08 Extended Attribute
UDF1.02 4-09 Implementation Use Extended Attribute
UDF1.02 4-10 Character Set Information Extended Attribute
UDF1.02 4-11 Alternate Permissions Extended Attribute
UDF1.02 4-12 File Times Extended Attribute
UDF1.02 4-13 Information Times Extended Attribute
UDF1.02 4-14 Device Specification Extended Attribute
UDF1.02 4-15 Application Use Extended Attribute
UDF1.02 4-16 Extended File Entry
UDF1.02 4-17 Allocation Extent Descriptor
UDF1.02 4-18 Unallocated Space Entry
UDF1.02 4-19 Space Bitmap Descriptor
UDF1.02 4-20 Indirect Entry
UDF1.02 4-21 Terminal Entry
UDF1.02 4-22 Partition Integrity Entry
UDF1.02 4-23 Path Component

UDF1.02 5-1 記述子の長さ
posted by 七癖 at 10:01| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2008年03月15日

UDF1.02 5-1 記述子の長さ

各記述子の長さの一覧を示します。
Descriptor length
略名記述子名長さ [bytes]
PVDPrimary Volume Descriptor512
AVDPAnchor Volume Descriptor Pointer512
VDPVolume Descriptor Pointer512
IUVDImplementation Use Volume Descriptor512
PDPartition Descriptor512
LVDLogical Volume Descriptorno max
USDUnallocated Space Descriptorno max
TDTerminating Descriptor512
LVIDLogical Volume Integrity Descriptorno max
FSDFile Set Descriptor512
FIDFile Identifier Descriptor最大論理ブロック長
AEDAllocation Extent Descriptor24
IEIndirect Entry52
TETerminal Entry36
FEFile Entry最大論理ブロック長
USEUnallocated Space Entry最大論理ブロック長
SBDSpace Bit Map Descriptorno max
PIPartition Integrity EntryN/A

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

2008年03月07日

UDF1.02 4-23 Path Component

ECMA167 では パスの処理方法も用意されているのですが、DVD-ROM では使われてないようです。

一応、パスを記述する記述子 Path Component を載せておきます。

Path Component format
RBP大きさ名称内容
01unsigned charComponent Type形式
11unsigned charLength of Component Identifier (= L_CI)パス名の長さ
2〜32unsigned shortComponent File Version Number=0 バージョン
4〜4+L_CI-1L_CIunsigned char[L_CI]Component Identifierパス名 (d-characters)


UDF1.02 では Component File Version Number は 0 です。

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

2008年03月05日

UDF1.02 4-22 Partition Integrity Entry

Partition Integrity Entry (パーティション保全エントリ) (PIE) は、 UDF1.02 では使いませんが、表のみ載せておきます。

Partition Integrity Entry format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=265
16〜3520struct icbtagICB TagType=2
36〜4712struct timestampRecording Date and Time記録日時
481unsigned charIntegrity Type保全形式
49〜223175-Reserved=0
224〜25532struct regidImplementation Identifier処理方法
256〜511256unsigned charImplementation Use処理方法用


Integrity Type は次のとおりです。
Type意味
0Open
2Close
3Stable
4〜255予約


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

2008年03月03日

UDF1.02 4-21 Terminal Entry

Terminal Entry (TE) はもうこれ以上のエントリーが無いことを示します。

Terminal Entry format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=260
16〜3520struct icbtagICB TagType = 11

TE のかわりに何も記述されていない論理ブロックで代用できます。
UDF1.02 では使わなくてもいいようです。

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

2008年03月01日

UDF1.02 4-20 Indirect Entry

Indirect Entry (IE) は ICB の Strategy Type (ICB階層構造) が 4 以外で使用され、 別の ICB の場所を記述します。 DVD-ROM の Strategy Type は大抵 4 のため、見られません。

Indirect Entry format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=259
16〜3520struct icbtagICB TagType=3
36〜5116struct long_adIndirect ICB別の ICB の場所

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

2008年02月27日

UDF1.02 4-19 Space Bitmap Descriptor

Space Bitmap Descriptor (空間ビットマップ記述子) (SBD) はそのパーティションが持っている 論理ブロックの使用状況を記述します。

Space Bitmap Descriptor format
位置大きさ名称内容
0〜1516struct tagDescriptor TagTagID=264
16〜194unsigned longNumber of Bits (=N_BT)ビット数 ( =論理ブロックの総数 )
20〜234unsigned longNumber of Bytes (=N_B)バイト数 ( >=ip((N_BT+7)/8) )
24〜24+N_B-1N_Bunsigned charBitmapビットマップ


Bitmap に論理ブロックの使用状況を記述します。
一つのビットが一つの論理ブロックを表します。
Bitmap の先頭のバイトを 0 として、 論理ブロック番号 s に対応するビットの位置は、 ip(s/8) バイト目の rem(s,8) ビットになります。
ここで、 ip(s/8) は、s÷8 の整数部分、
rem(s,8) は、s÷8 の余り (剰余) です。
ビットが 1 なら、その論理ブロックは空いています。

Bitmap example
RBPbitLBN
000
1 1
2 2
3 3
4 4
5 5
6 6
7 7
108
1 9
210
311
412
513
614
715
2016
117
218
319
420
521
622
723


SBD の位置は、PD の Partition Contents Use の Unallocated Space Bitmap に記述されます。

UDF1.02 では、SBD の Descriptor Tag の各 CRC を計算しません。

これは普通、上書き可能な媒体で使用します。DVD-ROM で使う必要は全くありません。

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

2008年02月25日

UDF1.02 4-18 Unallocated Space Entry

Unallocated Space Entry (未割付け空間エントリ) (USE) は そのパーティションの割付られていない場所の配列を記述します。

Unallocated Space Entry format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=263
16〜3520struct icbtagICB TagType=1
36〜394unsigned longLength of Allocation Descriptors (=L_AD)Allocation Attributes の長さ [bytes]
40〜40+L_AD-1L_ADunsigned char[L_AD]Allocation descriptors未割付範囲の配列


Allocation descriptors の型 (short_ad or long_ad or ext_ad) は ICB で指定します。
UDF1.02 では short_ad を使用します。

USE の場所は PD の Partition Contents Use の空間表に記述されます。

UDF1.02 では、USE の大きさを 1 論理ブロックに収まるようにします。

USE は普通、追記型媒体だけに使用されます。 DVD-ROM では使う必要は全くありません。

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

2008年02月21日

UDF1.02 4-17 Allocation Extent Descriptor

Allocation Descriptor (配置記述子) の配列 (Allocation Descriptors) (配置記述子列) は、 short_ad または long_ad または ext_ad の配列です。 これは、 記録箇所、 割付け済みだが未記録、 未割付けで未記録、 箇所の羅列を記述します。

配置記述子列は、ファイルエントリや空間表に使われます。 ファイルエントリでは、ファイル本体の場所を記述します。 ファイルが分割されているとき、その各部分を先頭から順番にこの配列に記述していきます。

配置記述子列は、ファイルエントリなどの最後に用意された欄に記述していきます。 そして、用意されたバイトの長さ (L_AD) が終了した場合か、 Extent Length が 0 の配置記述子で終了します。
ですが、(余り考えたくありませんが) ファイルが細分化したり、 繰り返し書き込み可能なデバイスで記録領域や空き領域が入り組んで 一箇所に収まらなくなったとき、列を分けて置く必要に迫られるときがあります。 そういうとき、 配置記述子の Extent Length の最上位 2 ビットを 3 と置くと、 それは次の配置記述子列の場所を示すことになります。 (その配置記述子列はそこで終了です。)

Allocation Extent Descriptor (割付け範囲記述子) (AED) は、 その次に用意された配置記述子列のヘッダになります。

Allocation Extent Descriptor format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=258
16〜194unsigned longPrevious Allocation Extent Location前の配置記述子列の場所
20〜234unsigned longLength of Allocation Descriptors (=L_AD)配置記述子列の長さ [bytes]

24 バイト目より、配置記述子列が L_AD の長さ分続きます。

配置記述子の型 (short_ad または long_ad または ext_ad) は前の配置記述子列と同じです。

UDF1.02 では、一つの AED と配置記述子列の長さの総和を 1 論理ブロックに収まるようにします。

DVD-ROM では普通 AED を使いません。

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

2008年02月19日

UDF1.02 4-16 Extended File Entry

FE のかわりに次の Extended File Entry (拡張ファイルエントリ) (EFE) を使うことも出来ます。


Extended File Entry format
位置大きさ名称内容
0〜1516struct tagDescriptor TagTagID=266
16〜3520struct icbtagICB TagICB
36〜394unsigned longUid=-1 ファイル所有者ID
40〜434unsigned longGid=-1 ファイル所有グループID
44〜474unsigned longPermissions許可条件
48〜492unsigned shortFile Link Count自分+サブディレクトリ数
501unsigned charRecord Format=0 記録形式
511unsigned charRecord Display Attributes=0 記録表示属性
52〜554unsigned longRecord Length=0 記録長
56〜638unsigned int64Information Lengthファイルサイズ [bytes]
64〜718unsigned int64Object Sizeストリーム分も含むファイルサイズ [bytes]
72〜798unsigned int64Logical Blocks Recorded使用している論理ブロックの数
80〜9112struct timestampAccess Date and Time最新アクセス日
92〜10512struct timestampModification Date and Time更新日時
106〜11712struct timestampCreation Date and Time作成日時
118〜12712struct timestampAttribute Date and Time属性修正日時
128〜1314unsigned longCheckpoint=1 チェックポイント
132〜1354-Reserved=0
136〜15116struct long_adExtended Attribute ICB拡張属性ICBの位置
152〜16716struct long_adStream Directory ICBストリームディレクトリの ICB
168〜19932struct regidImplementation Identifier*処理システム名
200〜2078unsigned int64Unique Id一意ID
208〜2114unsigned longLength of Extended Attributes (=L_EA)Extended Attributes の長さ [bytes]
212〜2154unsigned longLength of Allocation Descriptors (=L_AD)Allocation descriptors の長さ [bytes]
216〜216+L_EA-1L_EAunsigned char[L_EA]Extended Attributes拡張属性
216+L_EA〜216+L_EA+L_AD-1L_ADunsigned char[L_AD]Allocation descriptors(分割)ファイル本体の場所
もしくはファイル本体


FE と同じ変数名の変数は FE と同じです。

Object Size と Stream Directory ICB はストリーム関係のパラメータです。

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

2008年02月15日

UDF1.02 4-15 Application Use Extended Attribute

Application Use Extended Attribute には、Implementation Use Extended Attribute のように、 そのアプリケーション用の様々な情報を、 その情報用のフォーマットを用意することで記述できます。

一般的な Application Use Extended Attribute は、次のようになります。

Application Use Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=65536
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longApplication Use Length (=AU_L)Application Use の長さ [bytes]
16〜4732struct regidApplication Identifier内容
50〜A_L-1AU_Lunsigned char[AU_L]Application Use予約


UDF1.02 では、書き換え可能なメディア用に、次の Free Application Extended Attribute Space が用意されています。

Free Application Extended Attribute Space format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=2048
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longApplication Use Length (=AU_L)Application Use の長さ [bytes]
16〜4732struct regidApplication Identifier="*UDF FreeAppEASpace"
48〜492unsigned shortHeader ChecksumヘッダのCRC
50〜A_L-1IU_L-2unsigned char[IU_L-2]Free EA Space(=0) 空き領域長さ



Extended Attribute の話は、これで終わりです。

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

2008年02月13日

UDF1.02 4-14 Device Specification Extended Attribute

Device Specification Extended Attribute は、メディアを作成したデバイスの情報を記述します。

Device Specification Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=12
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longImplementation Use Length (=IU_L)(=4) 処理方法用の長さ [bytes]
16〜194unsigned longMajor Device Identification装置の指定 (当事者間の同意に基づく)
20〜234unsigned longMinor Device Identification装置の指定 (当事者間の同意に基づく)
24〜A_L-1IU_Lunsigned char[IU_L]Implementation Use処理方法用 (*開発者名)

UDF1.02 では、ICB の File Type が 6 か 7 のときに有効です。

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

2008年02月03日

UDF1.02 4-13 Information Times Extended Attribute

Information Times Extended Attribute は、そのファイルに関するある特定の日時を記述します。

Information Times Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=6
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longData Length (=D_L)Information Times の長さ [bytes]
16〜194unsigned longInformation Time Existence日時の内容
20〜A_L-1D_Lunsigned char[D_L]Information Times日時データ (timestamp の配列)


Information Time Existence は次のとおりです。

Information Time Existence
bit意味
0情報作成日時
1情報の最終変更日時
2この日時以降に無効
3この日時以降に有効


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

2008年02月01日

UDF1.02 4-12 File Times Extended Attribute

File Times Extended Attribute は、そのファイルのある特定の日時を記述します。

File Times Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=5
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longData Length (=D_L)File Times の長さ [bytes]
16〜194unsigned longFile Time Existence日時の内容
20〜A_L-1D_Lunsigned char[D_L]File Times日時データ (timestamp の配列)


File Time Existence は次のとおりです。

File Time Existence
bit意味
0作成日時
2この日時以降に削除
3この日時以降に有効 (無ければ始めから有効)
5最終バックアップ日時


UDF1.02 では、File Times Extended Attribute を Macintosh だけで使用し、作成日時のみ記入します。

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

2008年01月29日

UDF1.02 4-11 Alternate Permissions Extended Attribute

Alternate Permissions Extended Attribute は、そのファイルのアクセス権を示します。
UDF1.02 では、記録しません。

Alternate Permissions Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=3
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜132unsigned shortOwner Identification所有者 ID
14〜152unsigned shortGroup Identificationグループ ID
16〜172unsigned shortPermissionアクセス許可範囲 (省略)


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

2008年01月25日

UDF1.02 4-10 Character Set Information Extended Attribute

今日からしばらくの間、DVD-ROM では普通は使用されないファイル拡張属性を述べていきます。


Character Set Information Extended Attribute は、そのファイル用の文字セットを示します。

Character Set Information Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=1
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longEscape Sequences Length (=ES_L)Escape Sequencesの長さ [bytes]
161unsigned charCharacter Set Typecharspec の Character Set Type と同じ
17〜A_L-1ES_Lunsigned char[ES_L]Escape Sequencesエスケープシーケンス


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

2008年01月23日

UDF1.02 4-9 Implementation Use Extended Attribute

Implementation Use Extended Attribute には、そのファイルの様々な情報を、 その情報用のフォーマットを用意することで記述できます。

一般的な Implementation Use Extended Attribute は、次のようになります。

Implementation Use Extended Attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=2048
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜154unsigned longImplementation Use Length (=IU_L)(=4) 処理方法用の長さ [bytes]
16〜4732struct regidImplementation Identifier*処理方法名
48〜A_L-1IU_Lunsigned char[IU_L]Implementation Use処理方法用



DVD-ROM では、これを使って Free Extended Attribute Space (空き拡張属性空間) と、 Copyright Management Information (著作権管理情報) を記述します。


Free Extended Attribute Space は、それが記録されている処理方法用拡張属性内の未使用領域を記述するために使います。 これは、拡張属性を追加、上書きするときに有用です。

Free Extended Attribute Space format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=2048
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)(=52) 属性長 (4の倍数) [bytes]
12〜154unsigned longImplementation Use Length (=IU_L)(=4) 処理方法用の長さ [bytes]
16〜4732struct regidImplementation Identifier="*UDF FreeEASpace"
48〜492unsigned shortHeader ChecksumヘッダのCRC
50〜A_L-1IU_L-2unsigned char[IU_L-2]Free EA Space(=0) 空き領域長さ

Header Checksum は上48バイトの単純な総和の下 1 バイトです。

空きが無ければ、
A_L = 52
IU_L = 4
と置き、Free EA Space の 2 バイトを 0 にセットすれば十分です。


Copyright Management Information は、そのファイルの著作権情報を記述します。

Copyright Management Information format
RBP大きさ名称内容
0〜34unsigned longAttribute Type=2048
41unsigned charAttribute Subtype=1
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)=56 属性長 (4の倍数) [bytes]
12〜154unsigned longImplementation Use Length (=IU_L)=8 処理方法用の長さ [bytes]
16〜4732struct regidImplementation Identifier="*UDF DVD CGMS Info"
48〜492unsigned shortHeader ChecksumヘッダのCRC
501unsigned charCGMS InformationCGMS
511unsigned charData Structure TypeProtection System Information の形式
52〜554unsigned char[4]Protection System Information保護システム情報

CGMS Information は次のとおりです。

CGMS Information field
bit意味多くの場合
0〜3予約0
4〜5CGMS0:コピー制限なし
1:使用されない
2:1回だけ可
3:コピー不可
6予約0
7Copyrighted Material0:著作物は含まれず
1:著作物を含む


Data Structure Type は、0 のみ用意されており、1〜255 は予約です。 Data Structure Type = 0 のとき、Protection System Information は次のとおりです。

Protection System Information field for Data Structure Type 0
RBP大きさ名称内容
01unsigned charProtection System Type=0:保護システムなし
=1:保護システム1
=2〜255:予約
1〜33unsigned char[3]Reserved=0



UDF1.02 では、これら以外に OS 別のフォーマットも用意されていますが、割愛します。

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

2008年01月21日

UDF1.02 4-8 Extended Attribute

拡張属性の構成要素である 拡張属性記述子は一般的に次のようになります。

Generic extended attribute format
RBP大きさ名称内容
0〜34unsigned longAttribute Type属性種別
41unsigned charAttribute Subtype属性副種別
5〜73unsigned char[3]Reserved=0
8〜114unsigned longAttribute Length (=A_L)属性長 (4の倍数) [bytes]
12〜A_L-1A_L-12unsigned char[A_L-12]Attribute Data属性データ

UDF1.02 では、拡張属性記述子の長さは 4 の倍数です。

ECMA167 では、次のタイプが用意されています。

Attribute Types
Attribute TypeAttribute Subtype名称UDF1.02
11Character Set Information 
31Alternate Permissions記述しない
51File Times Extended AttributeMacintosh のみ記述
61Information Times Extended Attribute 
121Device Specification 
20481Implementation Use Extended Attribute空き拡張属性空間
著作権管理情報
OS別の情報
655361Application Use Extended AttributeUDF FreeAppEASpace

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

2008年01月15日

UDF1.02 4-7 Extended Attribute Header Descriptor

拡張属性 (Extended Attribute) はファイルエントリ内にあり、 ファイルの様々な追加情報を記述します。

拡張属性は先頭の Extended Attribute Header Descriptor (EAHD)(拡張属性ヘッダ記述子) と、 それに続く幾つかの様々な拡張属性記述子からなります。

Extended Attribute Header Descriptor
Extended Attribute 0
Extended Attribute 1


という具合です。

Extended Attribute Header Descriptor は、次のとおりです。

Extended Attribute Header Descriptor format
RBP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=262
16〜194unsigned longImplementation Attributes Location(=24) Implementation Attributes の位置 [bytes]
20〜234unsigned longApplication Attributes Location(=132) Application Attributes の位置 [bytes]

Implementation Attributes Location と Application Attributes Location は、 拡張属性の先頭からの位置です。 Implementation Attribute や Application Attribute が無いときは、その終端を記入します。

多くの DVD-ROM では、2種類の Implementation Attribute (UDF FreeEASpace と UDF DVD CGMS Info) のみを記録し、 空き領域は無いので、 Implementation Attributes Location はヘッダのすぐ後ろである 24、 Application Attributes Location は記録しないので終端の 132 になります。

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

2008年01月13日

UDF1.02 4-6 File Entry

一つのファイルあるいはディレクトリは、一つのファイルエントリを持っています。 ファイルエントリにはそのファイルの更新日時やファイル本体の位置 (ファイルが分割されていれば、 全ての分割ファイルの位置) が記述されます。 このため、ファイルが上書き保存されても、ディレクトリ本体=ディレクトリ内の全ファイルの情報 を変更することなく、そのファイルエントリを上書きするだけで済みます。

File Entry format
BP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=261
16〜3520struct icbtagICB TagICB
36〜394unsigned longUid=-1 ファイル所有者ID
40〜434unsigned longGid=-1 ファイル所有グループID
44〜474unsigned longPermissions許可条件
48〜492unsigned shortFile Link Count自分+サブディレクトリ数
501unsigned charRecord Format=0 記録形式
511unsigned charRecord Display Attributes=0 記録表示属性
52〜554unsigned longRecord Length=0 記録長
56〜638unsigned int64Information Lengthファイルサイズ [bytes]
64〜718unsigned int64Logical Blocks Recorded使用している論理ブロックの数
72〜8312struct timestampAccess Date and Time最新アクセス日
84〜9512struct timestampModification Date and Time更新日時
96〜10712struct timestampAttribute Date and Time属性修正日時
108〜1114unsigned longCheckpoint=1 チェックポイント
112〜12716struct long_adExtended Attribute ICB拡張属性ICBの位置
128〜15932struct regidImplementation Identifier*開発者名
160〜1678unsigned int64Unique Id一意ID
168〜1714unsigned longLength of Extended Attributes (=L_EA)Extended Attributes の長さ [bytes]
172〜1754unsigned longLength of Allocation Descriptors (=L_AD)Allocation descriptors の長さ [bytes]
176〜176+L_EA-1L_EAunsigned char[L_EA]Extended Attributes拡張属性
176+L_EA〜176+L_EA+L_AD-1L_ADunsigned char[L_AD]Allocation descriptors(分割)ファイル本体の場所
もしくはファイル本体

Uid と Gid は、 UDF1.02 では特別な理由が無ければ無効を示す 232-1 (=0xFFFFFFFF, -1) を記入します。

Permissions は、ユーザーが実行できるファイルの動作を示します。
これは、実際の使用者 (ユーザーIDで区別される) で異なります。
ユーザーID と Uid が同じファイル所有者 Owner (ビット10〜14)
ユーザーID と Gid が同じグループ所属者 Group (ビット5〜9)
どちらでもない一般ユーザー Other (ビット0〜4)
の 3 種です。
それぞれに、Execute (実行)、Write(書き込み)、Read(読み取り)、Change Attribute(属性変更)、Delete(削除)、 の 5 種の動作が各ビットに割り振られ、そのビットが 1 ならその動作実行可能、0 なら実行不可です。

Allowed access
bit使用者意味
0OtherExecute
1OtherWrite
2OtherRead
3OtherChange Attribute
4OtherDelete
5GroupExecute
6GroupWrite
7GroupRead
8GroupChange Attribute
9GroupDelete
10OwnerExecute
11OwnerWrite
12OwnerRead
13OwnerChange Attribute
14OwnerDelete
15〜31予約予約

DVD-ROM なら、ファイルは各 Read が 1 (0x00001084)、ディレクトリは 各 Execute と各 Read が 1 (0x000014A5) です。

File Link Count は、ファイルは 1 、ディレクトリは自身+子ディレクトリ数 です。

UDF1.02 では、Record Format、Record Display Attributes、Record Length は 0 (指定せず) です。 (Record Length は Record Format に依存します。)

Information Length はファイルサイズです。ファイルが分割されていればその総和、 ディレクトリでもその長さです。単位はバイトです。
(本当は、確保しただけで使用していない領域を含みます。)

Logical Blocks Recorded は、ファイルが使っている論理ブロックの数です。 ファイルが一続きならば、
(ファイルサイズ[bytes] + 1論理ブロックサイズ[bytes] -1) / 1論理ブロックサイズ[bytes]
となります。

Checkpoint は最初 1 で、ユーザの指示があれば 1 づつ増やします。

拡張属性ICBを使用しない場合、Extended Attribute ICB を 0 に設定します。

UniqueID は、全てのファイルとディレクトリに割り振られた番号です。 ルートディレクトリは 0、1〜15 は Macintosh 用に予約で、 他のファイルとディレクトリは、16 以上のそれぞれ別の番号をもちます。 普通は、記録順に番号を振ってゆきます。 次に記録するときは、LVID に記録された値を記入し、LVID に保存された値を増やします。

Extended Attributes は、次回以降にお話します。

Allocation descriptors は ICB Tag の Flags の 0〜2 ビットで意味が変わります。
0〜2 では、ファイル/ディレクトリの位置と大きさを記した配置記述子の配列になっています。 0 では short_ad、1 では long_ad、2 では ext_ad、を使用します。 DVD-ROM では short_ad を使用します。
配置記述子は、ファイルが分割されていなければ 1 つだけ、分割されていれば 2 つ以上続きます。 数は L_AD から計算します。 それぞれの配置記述子に、(分割された) ファイルの位置と大きさが入っています。 ファイルの分割の順序は並び順と同じです。
配置記述子の Extent Length の下 29 ビットは、実際の (分割された) ファイルのバイト数 です (論理ブロックの整数倍ではありません)。上 2 ビットは 0 です。

ICB Tag の Flags の 0〜2 ビットが 3 のとき、Allocation descriptors にはファイル/ディレクトリの本体が、 直接記述されています。その長さは L_AD バイトです。この場合、ファイルは分割できません。

UDF1.02 では、一つの分割されたファイルの大きさは最大 230 - 論理ブロックサイズ バイトです。 ISO9660 と共存させるときのように、実際にはファイルがつながっている場合でも、 見かけは分割しているように記述します。

UDF1.02 では、ファイルエントリの大きさを 1 論理ブロックに収まるようにします。

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