3.1.4.2 Negotiating a Common Protocol Version

Before exchanging any protocol messages, two participants of the protocol MUST agree on what protocol version to use for their communication. To negotiate a common protocol version, the two protocol participants MUST use the version negotiation mechanism provided by the MSDTC Connection Manager: OleTx Transports Protocol transport (see BuildContext, Primary [MS-CMPO] section 3.3.4.2.1) as follows:

  • When a protocol participant (application, resource manager, transaction manager) initializes its underlying MSDTC Connection Manager: OleTx Transports Protocol transport, it MUST do the following:

    • Set the Minimum Level 3 Version Number data field of the underlying MSDTC Connection Manager: OleTx Transports Protocol implementation to 0x00000001 (see also [MS-CMPO] section 3.2.1.1).
      Note that the MSDTC Connection Manager: OleTx Transaction Protocol is layered on top of MSDTC Connection Manager: OleTx Multiplexing Protocol (specified in [MS-CMP]), which is layered on top of the MSDTC Connection Manager: OleTx Transports Protocol (specified in [MS-CMPO]). Therefore, it is a level-three protocol for the MSDTC Connection Manager: OleTx Transports Protocol (as defined in [MS-CMPO] section 2.2.2).

    • Set the Maximum Level 3 Version Number data field of the underlying MSDTC Connection Manager: OleTx Transports Protocol implementation to the value of the maximum supported MSDTC Connection Manager: OleTx Transaction Protocol version (defined in section 3.1.4.1).

When an MSDTC Connection Manager: OleTx Transports Protocol session is successfully established between the two protocol participants, the value of the dwLevelThreeAccepted field of the session object's Version field (see [MS-CMPO] section 3.2.1.2, Session State) indicates the negotiated protocol version (for example, if the value of the dwLevelThreeAccepted field is 5, the negotiated protocol version is 5).