OE dbx file format : 'indexed info'
C++

The indexed info structure stores information of various kinds. I found int4 (direct stored int3), windows FILETIME structures, 0x00 terminated c-strings and data arrays (the first int4 value of every data array I found is the data array length - 0x04).

The indexed info data structure is used for the message info and the folder info objects.

indexed info
The header is 0x0c bytes long
positiontypedescription
(1)int4 object marker
(2)int4 length of the following indexed info body
(3)int2 length of this indexed info object. (not always set)
(4)int1 entries in the following index field
(5)int1 counts the changes on this indexed info object
The body of the indexed info is separated in two sectors.
The index field : Consists of (4) entries.
positiontypedescription
(6)int1 Bits 1-7 index
(7) Bit 8 value is stored direct
(8)int3 value
The data field : Data addressed in the index field.
positiontypedescription
(9)data the length of this data field is (2) - 4*(4) bytes
In the following text I am using data as a pointer to the data field.

If direct stored in(7) is not set, the content of the index (6) is stored in the data field starting at data+(8) and ends before the next entry. To make the object length a multiple of 4, padding fields can be inserted behind the last entry. In the other case the value is directly used. The indexes are sorted.

    A small example
    0x0000ba00 : 00 ba 00 00 1c 00 00 00 00 00 04 01 80 0a 00 00
    0x0000ba10 : 01 00 00 00 02 04 00 00 84 f0 30 00 07 09 00 00
    0x0000ba20 : 80 09 12 56 26 09 81 1b
    => (1) = 0xba00        (object marker OK)
    (2) = 0x1c          (object ends before 0xba00+0xc+0x1c)
    (3) = 0x00          (not set)
    (4) = 0x04
    (5) = 0x01
    (6) = 0x00      0x01      0x02      0x04
    (7) =   1         0         0         1
    (8) = 0x00000a  0x000000  0x000004  0x0030f0
    So the contents of the indexes are
    0x00 -> 0x0a
    0x01 -> "07 09 00 00"
    0x02 -> "80 09 12 56 26 09 81 1b"    (ends with the object)
    0x04 -> 0x30f0
    

Home of OE dbx file format