2.2.3.1.3 String Stream

The string stream MUST be named "__substg1.0_00040102". It MUST consist of one entry for each string named property, and all entries MUST be arranged consecutively, like in an array.

As specified in section 2.2.3.1.2, the offset, in bytes, to use for a particular property is stored in the corresponding entry in the entry stream. That is a byte offset into the string stream from where the entry for the property can be read. The strings MUST NOT be null-terminated. Implementers can add a terminating null character to the string after they read it from the stream, if one is required by the implementer's programming language.

Each entry MUST have the following 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

Name Length

Name (variable)

...

Name Length (4 bytes): The length of the following Name field in bytes.

Name (variable): A Unicode string that is the name of the property. A new entry MUST always start on a 4 byte boundary; therefore, if the size of the Name field is not an exact multiple of 4, and another Name field entry occurs after it, null characters MUST be appended to the stream after it until the 4-byte boundary is reached. The Name Length field for the next entry will then start at the beginning of the next 4-byte boundary.