2.2.4 STTB

The STTB is a string table that is made up of a header that is followed by an array of elements. The cData value specifies the number of elements that are contained in the array.


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

fExtend (variable)

cData (variable)

cbExtra

cchData0 (variable)

Data0 (variable)

ExtraData0 (variable)

cchData1 (variable)

Data1 (variable)

ExtraData1 (variable)

cchDatacData-1 (variable)

DatacData-1 (variable)

ExtraDatacData-1 (variable)

The header consists of the following.

fExtend (variable): If the first two bytes of the STTB are equal to 0xFFFF, this is a 2-byte fExtend field that specifies, by its existence, that the Data fields in this STTB contain extended (2-byte) characters and that the cchData fields are 2 bytes in size. If the first two bytes of the STTB are not equal to 0xFFFF, this fExtend field does not exist, which specifies, by its nonexistence, that the Data fields in this STTB contain nonextended (1-byte) characters and that the cchData fields are 1 byte in size.

cData (variable): A 2-byte unsigned integer or a 4-byte signed integer that specifies the count of elements in this STTB. If this is a 2-byte unsigned integer, it MUST be less than 0xFFFF. If this is a 4-byte signed integer, it MUST be greater than zero. Unless otherwise specified, this is a 2-byte unsigned integer.

cbExtra (2 bytes): An unsigned integer that specifies the size, in bytes, of the ExtraData fields in this STTB.

The array of elements consists of the following.

cchData (variable): An unsigned integer that specifies the count of characters in the Data field following this field. If this STTB is using extended characters as defined by fExtend, the size of cchData is 2 bytes. If this STTB is not using extended characters, the size of cchData is 1 byte.

Data (variable): The definition of each STTB specifies the meaning of this field. If this STTB uses extended characters, the size of this field is 2×cchData bytes and it is a Unicode string unless otherwise specified by the STTB definition. If this STTB does not use extended characters, then the size of this field is cchData bytes and it is an ANSI string, unless otherwise specified by the STTB definition.

ExtraData (variable): The definition of each STTB specifies the structure and meaning of this field. The size of this field is cbExtra bytes.