6 Appendix A: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

  • Windows NT 4.0 operating system Option Pack for Windows NT Server

  • Windows 2000 operating system

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 operating system

  • Windows Server 2025 operating system

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2.1.2.3: While performing push propagation, the Name object (as specified in [MS-CMPO] section 3.2.1.4) of the transaction manager is represented as follows. Windows NT 4.0 Option Pack uses the NAMEOBJECTBLOB (section 2.2.5.3) structure. Otherwise, applicable Windows releases use the SWhereabouts (section 2.2.5.11) structure.

<2> Section 2.2.1.1: MSDTC Connection Manager: OleTx Transaction Protocol versions are as follows:

  • Version 1 is supported by all applicable Windows releases.

  • Version 2 is supported by all applicable Windows releases, except not on Windows NT 4.0 operating system.

  • Version 4 is supported by all applicable Windows releases, except not on Windows NT 4.0, Windows 2000, and Windows XP.

  • Version 5 is supported by all applicable Windows releases, except not on Windows NT 4.0, Windows 2000, Windows XP, and Windows Server 2003 without service packs. 

  • Version 6 is supported by all applicable Windows releases, except not on Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

<3> Section 2.2.1.1.1: The CONNTYPE_TXUSER_EXTENDEDWHEREABOUTS connection type is not supported by Windows NT operating system, Windows 2000, Windows XP operating system Service Pack 1 (SP1), and Windows Server 2003.

<4> Section 2.2.1.1.1: The CONNTYPE_TXUSER_PROMOTE connection type is not supported by Windows NT, Windows 2000, and Windows Server 2003.

<5> Section 2.2.1.1.1: The CONNTYPE_TXUSER_SETTXTIMEOUT connection type is not supported by Windows NT, and Windows 2000 operating system Service Pack 3 (SP3).

<6> Section 2.2.1.1.1: The CONNTYPE_TXUSER_SETTXTIMEOUT2 connection type is not supported by Windows NT, Windows 2000, and Windows XP.

<7> Section 2.2.1.1.1: The TXUSER_RESOLVE_MTAG_ACCESSDENIED message that is associated with CONNTYPE_TXUSER_RESOLVE connection type is not supported by Windows NT, Windows 2000, and Windows XP SP1.

<8> Section 2.2.1.1.3: The CONNTYPE_TXUSER_RESOURCEMANAGERINTERNAL connection type is not supported by Windows NT, Windows 2000, Windows XP, and Windows Server 2003.

<9> Section 2.2.4.1: The value that Windows places in the dwReserved1 field is undefined.

<10> Section 2.2.5.2: The Associate_Msg_Version3 structure is not supported on Windows NT and Windows 2000.

<11> Section 2.2.5.3: The dwReserved1 field is set to a nondeterministic 4-byte value on Windows NT 4.0 Option Pack and Windows 2000.

<12> Section 2.2.5.4: The dwVersionMax field value is as follows. On Windows NT 4.0 Option Pack the field value is 1. On Windows 2000, the field value is 2. Otherwise, on applicable Windows releases the dwVersionMax field value is 3.

<13> Section 2.2.5.9: The fields that are included in the SWhereabouts structure is implementation-specific as follows:

The TmProtocolTip field is included on applicable Windows releases if the transaction manager is so configured, except not on Windows NT 4.0 Option Pack.

The TmProtocolMsdtcV1 field is included on applicable Windows releases.

The TmProtocolMsdtcV2 field is included on applicable Windows releases, except not on Windows NT 4.0 Option Pack.

The TmProtocolExtended field is included if the transaction manager is so configured, on applicable Windows releases, except not on Windows NT 4.0 Option Pack, Windows 2000, Windows XP operating system Service Pack 2 (SP2), and Windows Server 2003 operating system with Service Pack 1 (SP1).

<14> Section 2.2.8.2.1.1.10: Windows does not have a maximum limit on the number of times an application can perform associate request on an already existing transaction by sending the TXUSER_ASSOCIATE_MTAG_ASSOCIATE message. Therefore, the TXUSER_ASSOCIATE_MTAG_TOO_MANY_LOCAL message is never sent by any applicable Windows release.

<15> Section 2.2.8.3.2.1: Windows NT, Windows 2000, and Windows XP SP1 do not require authentication and it is not configurable. Otherwise applicable Windows releases by default require authentication with an account that is in the administrator group and this behavior is configurable.

<16> Section 2.2.8.3.2.8: The TXUSER_RESOLVE_MTAG_NOT_CHILD message that is associated with the CONNTYPE_TXUSER_RESOLVE connection type is never sent by any applicable Windows releases.

<17> Section 2.2.10.2.2.8: Windows limits transactions to 32 direct enlistments.

<18> Section 3.1.4.3: Regarding the MSDTC Connection Manager: OleTx Transaction Protocol connection establishment in Windows, an MSDTC Connection Manager: OleTx Transaction Protocol session partner does send connection requests for connection types that it supports (when required by the protocol rules, see section 3). The CONNTYPE_TXUSER_EXPORT2 (section 2.2.8.2.2.3) and CONNTYPE_TXUSER_PROMOTE (section 2.2.8.1.3) connection types could be sent to the other partner, which might not support these connection types. As a result, the requests for the unsupported connection types are rejected with an MTAG_CONNECTION_REQ_DENIED ([MS-CMP] section 2.2.5). When the CONNTYPE_TXUSER_PROMOTE connection type is rejected, applicable Windows releases return the failure result to the higher business layer. When the CONNTYPE_TXUSER_EXPORT2 connection type is rejected, Windows falls back to the CONNTYPE_TXUSER_EXPORT (section 2.2.8.2.2.2) connection type.

<19> Section 3.1.4.3: Regarding the sending of messages over an established MSDTC Connection Manager: OleTx Transaction Protocol connection in Windows, an MSDTC Connection Manager: OleTx Transaction Protocol session partner never sends messages that it supports (when required by the protocol rules, see section 3), but that are not supported by the negotiated protocol version (in the context of the connection's connection type) with one exception: TXUSER_RESOLVE_MTAG_ACCESSDENIED (section 2.2.8.3.2.1). For the TXUSER_RESOLVE_MTAG_ACCESSDENIED message, a partner that supports this message sends it (when required by protocol rules) even if it is not supported by the negotiated protocol version.

<20> Section 3.1.6: When receiving an invalid message on a connection, the participant terminates the associated session on Windows NT 4.0 Option Pack, Windows 2000 and Windows XP SP1.

<21> Section 3.2.1: Mutual Authentication is used by default for applicable Windows releases, except that No Authentication is used on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP SP1.

<22> Section 3.2.3: The Security Level No Authentication is supported by all applicable Windows releases. In applicable Windows releases except in Windows NT 4.0 Option Pack, Windows 2000, Windows XP SP1, and Windows Server 2003 without service packs, security levels Incoming Authentication and Mutual Authentication are supported, and the security level is configurable to any of the three values. 

<23> Section 3.2.3.1: The Timeout field value defaults to zero in applicable Windows releases.

<24> Section 3.2.3.2: In applicable Windows releases, the log size is configurable and stored in the registry. The default log size value is 4 MB, and the default maximum size is 512 MB.

<25> Section 3.2.3.3: The Core Transaction Manager Facet (section 1.3.3.3.1) ensures that transactions with duplicate identifiers are not created; however, for Windows Vista the application of Windows Vista operating system with Service Pack 1 (SP1) is required to restore the correct protocol behavior and ensure that transactions with duplicate identifiers are not created.

<26> Section 3.2.7.11: The limit of Subordinate Enlistments depends on the type of Enlistment. In applicable Windows releases the default limit on Subordinate Transaction Manager Enlistments is 64, except on Windows NT 4.0 Option Pack, where the limit is 16. The limit on Subordinate Resource Manager Enlistments in Windows is 32.

<27> Section 3.2.7.13: The Core Transaction Manager Facet (section 1.3.3.3.1) ensures that transactions with duplicate identifiers are not created; however, Windows Vista does not ensure that transactions with duplicate identifiers are not created and requires the application of Windows Vista SP1 to restore the correct protocol behavior.

<28> Section 3.2.7.21: The limit of Subordinate Enlistments depends on the type of Enlistment. In applicable Windows releases, the default limit on Subordinate Transaction Manager Enlistments is 64, except on Windows NT 4.0 Option Pack, where the limit is 16. The limit on Subordinate Resource Manager Enlistments in Windows is 32.

<29> Section 3.3.4.1: In Windows Vista, the Core Transaction Manager Facet (section 1.3.3.3.1) does not ensure that transactions with duplicate identifiers are not created. If an identifier that already exists in the transaction table is sent as the guidTX field with TXUSER_BEGINNER_MTAG_PROMOTE Message (section 3.4.5.1.3.1), a duplicate entry having the same transaction identifier will be created in the transaction table. Consequently, the transaction identifier having duplicate entries in the transaction table is not uniquely mapped to a single transaction object and any subsequent lookup for a transaction object with this identifier can return any one of the duplicate transaction objects. Any subsequent processing rule that involves finding a transaction object by this transaction identifier can have an undefined outcome as a result of this Windows Vista-specific behavior. This undefined behavior was identified post release and has since been addressed in subsequent releases. An implementation avoids duplicate transaction identifiers when beginning a transaction that uses the CONNTYPE_TXUSER_PROMOTE connection type (section 3.3.4.1.3) by always using a new GUID as specified in [RFC4122] for the predetermined transaction identifier.

<30> Section 3.4.5.3.2.1: By default, authentication is required with an account that is in the administrator group, exception on Windows NT, Windows 2000, and Windows XP SP1 on which this behavior is not configurable.

<31> Section 3.4.5.3.2.2: By default, authentication is required with an account that is in the administrator group, exception on Windows NT, Windows 2000, and Windows XP SP1 on which this behavior is not configurable.

<32> Section 3.4.5.3.2.3:  By default, authentication is required with an account that is in the administrator group, exception on Windows NT, Windows 2000, and Windows XP SP1 on which this behavior is not configurable.

<33> Section 3.7.2.1: The value is 1000 milliseconds if the transport is down. Otherwise the default value is 500 milliseconds on applicable Windows releases. This value is not configurable.

<34> Section 3.8.2.1:  The value is 1000 milliseconds for applicable Windows releases. This value is not configurable.