2.2.4.1 Header File Format


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

File version

Padding

Current primary copy number

Operation in progress

Number of records in first data file

Number of valid bytes in first data file

Number of unused bytes in first data file

...

Number of records in second data file

Number of valid bytes in second data file

Number of unused bytes in second data file

...

Signature 1

First data file user header (92 bytes)

...

...

Second data file user header (92 bytes)

...

...

Signature 2

File version (4 bytes): A 32-bit unsigned integer whose two higher bytes specify the file format version number. This MUST be either 0x00520000 or 0x00530000 or 0x00540000.<1>

Padding (4 bytes): The value of these 4 bytes is arbitrary, and MUST be ignored.

Current primary copy number (4 bytes): A 32-bit unsigned integer that specifies the data file which is the primary data file. If the first data file is the primary data file, the value of this field MUST be 0x00000000. If the second data file is the primary data file, the value of this field MUST be 0x00000001.

Operation in progress (4 bytes): A 32-bit unsigned integer that specifies whether the secondary data file contains valid data. This value MUST be less than or equal to 5. If the value of this field is 0x00000000, the data in secondary data file MUST be valid. If the value of this field is not 0x00000000, the data in the secondary data file MUST be ignored.

Number of records in first data file (4 bytes): A 32-bit unsigned integer that specifies the number of records stored in the first data file.

Number of valid bytes in first data file (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in all the records stored in the first data file.

Number of unused bytes in first data file (8 bytes): A 64-bit unsigned integer that specifies the number of unused bytes present at the beginning of the first data file.

Number of records in second data file (4 bytes): A 32-bit unsigned integer that specifies the number of records stored in the second data file.

Number of valid bytes in second data file (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in all the records stored in the second data file.

Number of unused bytes in second data file (8 bytes): A 64-bit unsigned integer that specifies the number of unused bytes present at the beginning of the second data file.

Signature 1 (4 bytes): A 32-bit unsigned integer that stores a signature for the file. This MUST be 0x46524853.

First data file user header (92 bytes): A block of 92 bytes in which the content and structure are defined by the file that is using the recoverable storage format to store extra data for the first data file.

Second data file user header (92 bytes): A block of 92 bytes in which the content and structure are defined by the file that is using the recoverable storage format to store extra data for the second data file.

Signature 2 (4 bytes): A 32-bit unsigned integer that stores a signature for the file. This MUST be 0x49524853.