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:


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

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