2008年01月09日

UDF1.02 4-4 File Identifier Descriptor

File Identifier Descriptor (ファイル識別記述子) (FID) はディレクトリにあって、 ひとつのファイル/ディレクトリの、名前などの情報と、 そのファイルエントリの位置を記述します。

File Identifier Descriptor format
RBP大きさ名称内容
0〜1516struct tagDescriptor TagTagID=257
16〜172unsigned shortFile Version Number=1 ファイルバージョン
181unsigned charFile Characteristicsファイル特性
191unsigned charLength of File Identifier (=L_FI)ファイル識別子の長さ [bytes]
20〜3516struct long_adICBそのファイル/ディレクトリの ICB (ファイルエントリ) の場所
36〜372unsigned shortLength of Implementation Use (=L_IU)(=0) Implementation Use の長さ [bytes]
38〜38+L_IU-1L_IUunsigned char[L_IU]Implementation Use下記参照
38+L_IU〜38+L_IU+L_FI-1L_FIchar[L_FI]File Identifierファイル名 (d-characters)
38+L_IU+L_FI〜0〜3unsigned char[0〜3]Padding=0 FIDの大きさを4の倍数にするため


File Version Number は 1〜32767 です。32768 〜 65535 は予約です。 UDF 1.02 では 1 です。

File Characteristics は次のとおりです。

File characteristics
bit内容詳細
0存在0=公開ファイル
1=隠しファイル
1ディレクトリ0=ファイル
1=ディレクトリ
2削除0=ファイルは存在する
1=ファイルは削除された
30=このディレクトリが持つファイルかディレクトリ
1=このディレクトリの親ディレクトリ
4Metadata0=ストリームにないか、ストリームにあってユーザーデータを持つ
1=ストリームは implementation use データを持つ
5〜7予約予約

削除ビットが 1 なら、ICB は全て 0 です。

Length of Implementation Use が 0 で、Implementation Use を記録しない場合が多いです。
UDF1.02 で 0 以外の場合は、32 と置いて、Implementation Use に reg_id を入れ、 ファイルを最後に変更した "*開発者名" を書きます。

親ディレクトリの場合、Length of File Identifier (=L_FI) は 0、 File Identifier は記録せず、Padding の長さは 2 です。

UDF1.02 では、ファイル名は最大 255 バイトです。

ファイル名には、OS 毎に異なる制限がありますが、 UDF の仕様書にあるサンプルソースコードを使って変換するのが楽です。

posted by 七癖 at 10:44| Comment(1) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんは
いつも大変に参考にさせていただいております
ありがとうございますm(__)m

えと、親ディレクトリのPadding長は2ではないかと思います
TagのCRClenも24になっているようですし

まぁ、どうせ0x00なんだし、実質的には全く問題ありませんので
どうでもいいっちゃ、どうでもいいんですが(^^ヾ
Posted by ながえ at 2009年12月13日 00:58
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

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