3.2.4.1 Determining the Version of the Registry Protocol

If the Management Client role implementation has an existing MSDTC Connection Manager: OleTx Transports Protocol [MS-CMPO] session with the Management Server role implementation, the Management Client role implementation MUST check the State field of the session object, as specified in [MS-CMPO], section 3.3.4.2.1.

If the Management Client role implementation has no existing MSDTC Connection Manager: OleTx Transports Protocol [MS-CMPO] session with the Management Server role implementation, the Management Client role implementation MUST use the protocol versioning negotiation mechanism, as specified in [MS-CMPO] sections 3.3.4.2.1 and 3.3.4.2.2 to determine the version of the registry protocol supported by the Management Server role implementation as follows:

  • Initialize the underlying MSDTC Connection Manager: OleTx Transports Protocol transport, specifying the following:

    • Set the Minimum Level 3 Version Number data field of the underlying MSDTC Connection Manager: OleTx Transports Protocol implementation to 0x00000001 (the lowest protocol version specified in [MS-DTCO] section 2.2.1.1).

    • Set the Maximum Level 3 Version Number data field of the underlying MSDTC Connection Manager: OleTx Transports Protocol implementation to 0x00000006 (the highest protocol version specified in [MS-DTCO] section 2.2.1.1).

    • Establish a new MSDTC Connection Manager: OleTx Transports Protocol session with the Management Server role implementation and record the value of the dwLevelThreeAccepted field of the session object's Version field, as specified in [MS-CMPO] section 3.2.1.2.

    • Tear down the MSDTC Connection Manager: OleTx Transports Protocol session, as specified in [MS-CMPO] sections 3.3.4.5 and 3.3.4.6.

If the value of the dwLevelThreeAccepted field is 0x00000001, 0x00000002 or 0x00000004, then the version of the registry protocol maps to version 1, 2 or 3, respectively, as specified in the following table. If the value of the dwLevelThreeAccepted field is 0x00000005 or 0x00000006, then more steps are required to determine the version of the registry protocol.

dwLevelThreeAccepted

HKCR\CID.Local exists?

HKCR\CID.Local\ <MSDTCUIS_GUID> exists?

ApiOpenCluster()

Version

0x00000001

Not applicable

Not applicable

Not applicable

1

0x00000002

Not applicable

Not applicable

Not applicable

2

0x00000004

Not applicable

Not applicable

Not applicable

3

0x00000005

No

Not applicable

A null value, as specified in [MS-CMRP] section 3.1.4.2.2.

4

0x00000005

No

Not applicable

A valid HCLUSTER_RPC value, as specified in [MS-CMRP] section 2.2.1.1.

5

0x00000005

Yes

Yes

Not applicable

6

0x00000005

Yes

No

Not applicable

7

0x00000006

Yes

Yes

Not applicable

8

0x00000006

Yes

No

Not applicable

9

  • Establish a Windows Remote Registry Protocol [MS-RRP] connection with the Management Server role implementation, and attempt to open the "HKEY_CLASSES_ROOT\CID.Local" registry key.

    • If the registry key exists, then:

      • Attempt to open the "HKEY_CLASSES_ROOT\CID.Local\<MSDTCUIS_GUID>" registry key, using the <MSDTCUIS_GUID> obtained during initialization, as specified in section 3.2.3.

        • If the registry key exists, then:

          •  If the value of the dwLevelThreeAccepted field is 0x00000005, then the version of the registry protocol is 6.

          • Otherwise, the version of the registry protocol is 8.

        • Otherwise:

          • If the value of the dwLevelThreeAccepted field is 0x00000005, then the version of the registry protocol is 7.

          • Otherwise, the version of the registry protocol is 9.

    • Otherwise,

      • Attempt to establish a Failover Cluster: Management API (ClusAPI) Protocol RPC interface connection (as specified in [MS-CMRP] section 3.2.3) with the Management Server role implementation.

        • If the Failover Cluster: Management API (ClusAPI) Protocol [MS-CMRP] RPC interface connection can be established, then the version of the registry protocol is 5.

        • Otherwise, the version of the registry protocol is 4.