2.2.7.1 Common Type Header

One common type header is created per serialization octet stream. The common header applies to all of the typed data in the octet stream. The common type header MUST be aligned on a 16-byte boundary.


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

Version

Endianness

CommonHeaderLength

endianInfo

Reserved (16 bytes)

...

...

TransferSyntax (20 bytes)

...

...

InterfaceID (20 bytes)

...

...

Version (1 byte): MUST be set to 2 to indicate type serialization version 2.

Endianness (1 byte): MUST be set to little-endian (0x10).

CommonHeaderLength (2 bytes): Indicates the length in bytes of the common header. MUST be 0x40.

endianInfo (4 bytes): Reserved field. MUST be set to 0XCCCCCCCC during marshaling, and SHOULD be ignored during unmarshaling.

Reserved (16 bytes): Reserved fields. MUST be set to 0XCCCCCCCC during marshaling and SHOULD be ignored during unmarshaling.

TransferSyntax (20 bytes): RPC transfer syntax identifier used to encode data in the octet stream. It MUST use RPC_SYNTAX_IDENTIFIER format, as specified in section 2.2.2.7. It MUST be either the NDR transfer syntax identifier or the NDR64 transfer syntax identifier.

InterfaceID (20 bytes): Interface identifier, as specified in the IDL file. It MUST use the interface identifier format, as specified in [C706] section 3.1.9. Implementations MAY ignore the value of this field.<58>

Similar to Type Serialization Version 1 (section 2.2.6), multiple top-level data types can be serialized into the same type serialization stream, in the same way that multiple parameters in a procedure are marshaled into an octet stream. All top-level data types in the same octet stream MUST be serialized by using the same transfer syntax as specified in the Common Type Header.