データ・ファイル Foobar.d01 Foobar.d02 Foobar.d03 Foobar.d04 Foobar.d05 Foobar.d06 Foobar.d07 Foobar.d08 Foobar.d09 Foobar.d10 |
パリティ・ボリューム Foobar.p01 Foobar.p02 Foobar.p03 |
開始位置: | 型 (サイズ) | データ |
0x0000 | 8バイト |
識別文字 "PAR"\0 コメント: ・文字 "PAR" の後に null バイトが 5個続く |
0x0008 | 8バイト整数 1個 |
バージョン番号 ・バージョン番号は二つの部分で構成される: 下位 4バイト整数 ( ビット 0〜31 ) はバージョンです、$00010000 は v01.00 上位 4バイト整数 ( ビット 32〜63 ) は作成プログラムへの識別子です。 どのプログラムがパリティ・ボリューム・セットを作成したのかを見るために クライアントはそれを使うことができます。 もし、あなたのプログラムが作成元それ自体かどうかを知る必要があるなら、 これは便利かもしれません。 ( それがステータス記録内の所有者ビットを使うことができるかどうかを見るためにとか、 新しいバージョンが出たかどうかを知らしめるためとか・・・) その値は "プログラム"-"バージョン"-"サブ・バージョン"-"サブ・サブ・バージョン" です。 "プログラム" の値は: 00 - 未定義 01 = Mirror 02 = PAR 例: Mirror 0.2.1 ならプログラム識別子は $01000201 になります。 |
0x0010 | 16バイト |
コントロール・ハッシュ ・0x0020 から始まって最後までのファイルの残りの MD5 ハッシュです。 ・破損したファイルを探知する為に使います。 |
0x0020 | 16バイト |
セット・ハッシュ ・パリティ・ボリューム・セットのための識別子として使われます。 作り方: バイト配列 ( 一次元で、サイズ = 使ったファイル数 * 16 ) を作ります。 そして、最初のファイルから始めて、 MD5 ハッシュを (MD5 16k ハッシュではなく) そこに配置します。 パリティ・データに含まれるファイル ( ステータス・ビット 0 = 1 ) だけを使います。 そして、この配列の MD5 ハッシュを計算します。 |
0x0030 | 8バイト整数 1個 |
ボリューム番号 ・パリティ・ボリュームの番号 ・PAR ファイルは 0 ・.p01 は 1、.p02 は 2、.p03 は 3 などなど |
0x0038 | 8バイト整数 1個 |
ファイル数 ・パリティ・ボリューム・セットに格納されているファイルの数 ( 入力されたデータ・ファイルのみ、パリティ・ボリュームは数えません。) パリティ・データに格納されないけれど、 MD5 (訳注 2) チェックのためにファイル・リストには含まれるファイルも数えます。 なので、これはファイル・リストに入ってるファイルの数です。 |
0x0040 | 8バイト整数 1個 |
ファイル・リストの開始位置 ・格納されたファイルのリストの開始位置 |
0x0048 | 8バイト整数 1個 |
ファイル・リストのサイズ ・ファイル・リストのバイト単位のサイズ |
0x0050 | 8バイト整数 1個 |
データの開始位置 ・データ領域の開始位置 |
0x0058 | 8バイト整数 1個 |
データのサイズ ・データ領域のバイト単位のサイズ |
0x0060 | ・・・ |
ファイル・リスト ・保存されているファイルのリストがここから始まります。 ・それはファイル・エントリーで構成されます。 |
開始位置: | 型 (サイズ) | データ |
0x0000 | 8バイト整数 1個 |
エントリー・サイズ ・ファイル・リストのエントリーのバイト単位のサイズです。 ・1番目から数えて、この記録も数えます。 |
0x0008 | 8バイト整数 1個 |
ステータス領域 ・ステータス・フラグや番号のための 64ビット ・今の所、ビット 0 と 1 だけが使われています: ビット 0 = 0、ファイルはパリティ・ボリューム・セットに保存されていません。 ビット 0 = 1、ファイルはパリティ・ボリューム・セットに保存されています。 ビット 1 = 0、ファイルはまだ検証されていません。 ビット 1 = 1、ファイルは検証されてました。 |
0x0010 | 8バイト整数 1個 |
サイズ ・格納されてるファイルのバイト単位のサイズ |
0x0018 | 16バイト |
MD5 ハッシュ ・ファイル全域の MD5 ハッシュ |
0x0028 | 16バイト |
16k MD5 ハッシュ ・ファイルの先頭 16384バイトの MD5 ハッシュ ・ファイルが 16k よりも小さければ、存在するバイトの分だけが使われます。 |
0x0038 | 2バイト整数 X個 |
ファイル名 ・ユニコードでの拡張子を含む完全なファイル名 ( "Foobar.d01" ) ・パスは許されません。 ・終端の印はありません、 エントリー・サイズからサイズを逆算しなければいけません。 ( 文字数 = ( エントリー・サイズ - 0x38 ) / 2 ) |