2.3.1.2 HNHDR
The HNHDR record resides at the beginning of the first data block in the HN (an HN can span several blocks), which contains root information about the HN.
Unicode / ANSI:
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ibHnpm |
bSig |
bClientSig |
|||||||||||||||||||||||||||||
hidUserRoot |
|||||||||||||||||||||||||||||||
rgbFillLevel |
ibHnpm (2 bytes): The byte offset to the HN page Map record (section 2.3.1.5), with respect to the beginning of the HNHDR structure.
bSig (1 byte): Block signature; MUST be set to 0xEC to indicate an HN.
bClientSig (1 byte): Client signature. This value describes the higher-level structure that is implemented on top of the HN. This value is intended as a hint for a higher-level structure and has no meaning for structures defined at the HN level. The following values are pre-defined for bClientSig. All other values not described in the following table are reserved and MUST NOT be assigned or used.
-
Value
Friendly name
Meaning
0x6C
bTypeReserved1
Reserved
0x7C
bTypeTC
Table Context (TC/HN)
0x8C
bTypeReserved2
Reserved
0x9C
bTypeReserved3
Reserved
0xA5
bTypeReserved4
Reserved
0xAC
bTypeReserved5
Reserved
0xB5
bTypeBTH
BTree-on-Heap (BTH)
0xBC
bTypePC
Property Context (PC/BTH)
0xCC
bTypeReserved6
Reserved
hidUserRoot (4 bytes): HID that points to the User Root record. The User Root record contains data that is specific to the higher level.
rgbFillLevel (4 bytes): Per-block Fill Level Map. This array consists of eight 4-bit values that indicate the fill level for each of the first 8 data blocks (including this header block). If the HN has fewer than 8 data blocks, then the values corresponding to the non-existent data blocks MUST be set to zero. The following table explains the values indicated by each 4-bit value.
-
Value
Friendly name
Meaning
0x0
FILL_LEVEL_EMPTY
At least 3584 bytes free / data block does not exist
0x1
FILL_LEVEL_1
2560-3584 bytes free
0x2
FILL_LEVEL_2
2048-2560 bytes free
0x3
FILL_LEVEL_3
1792-2048 bytes free
0x4
FILL_LEVEL_4
1536-1792 bytes free
0x5
FILL_LEVEL_5
1280-1536 bytes free
0x6
FILL_LEVEL_6
1024-1280 bytes free
0x7
FILL_LEVEL_7
768-1024 bytes free
0x8
FILL_LEVEL_8
512-768 bytes free
0x9
FILL_LEVEL_9
256-512 bytes free
0xA
FILL_LEVEL_10
128-256 bytes free
0xB
FILL_LEVEL_11
64-128 bytes free
0xC
FILL_LEVEL_12
32-64 bytes free
0xD
FILL_LEVEL_13
16-32 bytes free
0xE
FILL_LEVEL_14
8-16 bytes free
0xF
FILL_LEVEL_FULL
Data block has less than 8 bytes free