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 operating system

  • 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.2.3.2.5: On Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, the lenDSN field is less than 256.

<2> Section 2.2.4.1:  The CONNTYPE_XAUSER_XACT_MIGRATE and CONNTYPE_XAUSER_XACT_MIGRATE2 are not supported by Windows NT 4.0 operating system Option Pack for Windows NT Server or Windows XP. The CONNTYPE_XAUSER_XACT_MIGRATE2 connection type is not supported by Windows 2000, Windows Server 2003, or Windows Vista. CONNTYPE_XAUSER_XACT_MIGRATE connection type is used instead. The CONNTYPE_XAUSER_XACT_BRANCH_START and CONNTYPE_XAUSER_XACT_BRANCH_OPEN connection types are not supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, or Windows Vista.

<3> Section 2.2.4.2.4: When processing an XAUSER_CONTROL_MTAG_RECOVER message, in Windows NT 4.0 Option Pack, Windows 2000, or Windows XP the value of totalUOWsRequested is not verified to be valid and when processing an Xa_recover event the count is not minimized by an implementation-specific value. On Windows Server 2003 the value for totalUOWsRequested is only verified not to be 0 and the value used is set to the minimum value between the provided value and 10000. When sending the message, Windows limits the value of the totalUOWsRequested field and the Open Count field of the XA Superior Proxy object to a maximum of 5.

<4> Section 2.2.4.2.6: When processing an XAUSER_CONTROL_MTAG_RECOVER_REPLY message (section 2.2.4.2.6) on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003, the ultotalUOWs field is not validated to be less than the number of requested XIDs (totalUOWsRequested).

<5> Section 2.2.4.3.1: Setting the Timeout of a transaction created by an xa_start call is not supported on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003. The default value of 0x00000000 is used.

<6> Section 3.2.5.1.2: When processing an XAUSER_CONTROL_MTAG_RECOVER message, the value of totalUOWsRequested is not verified to be valid on Windows NT 4.0 Option Pack, Windows 2000, or Windows XP. On Windows Server 2003, it is only verified not to be 0.

<7> Section 3.2.5.1.2: When processing an XAUSER_CONTROL_MTAG_RECOVER message, the value that Windows uses as a maximum for totalUOWsRequested is 10000.

<8> Section 3.2.5.1.2: When processing a XAUSER_CONTROL_MTAG_RECOVER message, the value that Windows uses as a maximum for totalUOWsRequested is 10000.

<9> Section 3.2.5.1.2: When iterating over available XA Superior Enlistment Objects during processing of an XAUSER_CONTROL_MTAG_RECOVER message (section 2.2.4.2.4) on Windows NT 4.0 Option Pack, no check is performed, and the actions are taken for all XA Superior Enlistment Objects. Under the same conditions, only XA Superior Enlistment Objects in the Preparing State are returned.

<10> Section 3.2.5.2.2: A Connection Disconnected event (section 3.2.5.2.2) on a CONNTYPE_XAUSER_XACT_START (section 2.2.4.3), CONNTYPE_XAUSER_XACT_OPEN (section 2.2.4.5), CONNTYPE_XAUSER_XACT_BRANCH_START (section 2.2.4.4), or CONNTYPE_XAUSER_XACT_BRANCH_OPEN (section 2.2.4.6) connection type is not processed on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, or Windows Server 2003.

<11> Section 3.2.5.3.5: A Connection Disconnected event (section 3.2.5.3.5) on a CONNTYPE_XAUSER_XACT_START (section 2.2.4.3), CONNTYPE_XAUSER_XACT_OPEN (section 2.2.4.5), CONNTYPE_XAUSER_XACT_BRANCH_START (section 2.2.4.4), or CONNTYPE_XAUSER_XACT_BRANCH_OPEN (section 2.2.4.6) connection type is not processed on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, or Windows Server 2003.

<12> Section 3.2.5.5.2: A Connection Disconnected event (section 3.2.5.5.2) on a CONNTYPE_XAUSER_XACT_START (section 2.2.4.3), CONNTYPE_XAUSER_XACT_OPEN (section 2.2.4.5), CONNTYPE_XAUSER_XACT_BRANCH_START (section 2.2.4.4), or CONNTYPE_XAUSER_XACT_BRANCH_OPEN (section 2.2.4.6) connection type is not processed on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, or Windows Server 2003.

<13> Section 3.2.5.6.5: A Connection Disconnected event (section 3.2.5.6.5) on a CONNTYPE_XAUSER_XACT_START (section 2.2.4.3), CONNTYPE_XAUSER_XACT_OPEN (section 2.2.4.5), CONNTYPE_XAUSER_XACT_BRANCH_START (section 2.2.4.4), or CONNTYPE_XAUSER_XACT_BRANCH_OPEN (section 2.2.4.6) connection type is not processed on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, or Windows Server 2003.

<14> Section 3.3.3: The XATransactions registry key, defined in [MS-CMOM] section 3.3.1.2.1, is not supported on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP.

<15> Section 3.3.4.3: Disabling Require Thread Affinity is not supported on Windows NT 4.0 Option Pack and Windows XP, and thus Require Thread Affinity is always set to TRUE.

<16> Section 3.3.4.5: CONNTYPE_XAUSER_XACT_MIGRATE2 connection type is not supported by Windows 2000, Windows Server 2003 or, Windows Vista. CONNTYPE_XAUSER_XACT_MIGRATE connection type is used instead. CONNTYPE_XAUSER_XACT_MIGRATE2 and CONNTYPE_XAUSER_XACT_MIGRATE are not supported by Windows NT 4.0 Option Pack or Windows XP.

<17> Section 3.3.4.5: The CONNTYPE_XAUSER_XACT_MIGRATE2 connection type (section 2.2.4.8) is not supported by Windows 2000, Windows Server 2003, or Windows Vista; the CONNTYPE_XAUSER_XACT_MIGRATE connection type (section 2.2.4.7) is used instead. The CONNTYPE_XAUSER_XACT_MIGRATE2 and CONNTYPE_XAUSER_XACT_MIGRATE connection types are not supported by the Windows NT 4.0 Option Pack or Windows XP; a result of XA_RMFAIL is returned when attempting to connect.

<18> Section 3.3.4.7: Setting the Timeout of a transaction created by an xa_open call is not supported on Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003. The default value of INFINITE is used.

<19> Section 3.3.4.7: CONNTYPE_XAUSER_XACT_BRANCH_START and CONNTYPE_XAUSER_XACT_BRANCH_OPEN connection types are not supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, or Windows Vista.

<20> Section 3.3.4.8: Disabling Require Thread Affinity is not supported on Windows NT 4.0 Option Pack and Windows XP, and thus Require Thread Affinity is always set to TRUE.

<21> Section 3.3.4.9: On Windows NT 4.0 Option Pack, Windows 2000, and Windows XP, the Recovery Complete field is not supported.

<22> Section 3.3.4.9: On Windows NT 4.0 Option Pack, Windows 2000, and Windows XP, the Recovery Complete field is not supported.

<23> Section 3.3.4.9: On Windows NT 4.0 Option Pack, Windows 2000, and Windows XP, the Recovery Complete field is not supported.

<24> Section 3.3.4.9: On Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2 operating system, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 operating system, the XARECOVER_END_SCAN flag is not set.

<25> Section 3.3.4.9: The Flags argument provided for the xa_recover event is not validated on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP; therefore, in these releases, XAER_INVAL is not returned if TMSTARTSCAN is not set, AND TMENDSCAN is not set, but the provided Flags argument is not TMNOFLAGS.

<26> Section 3.3.4.9: The value provided to the Recovery Request Number field will not be minimized between the provided Count value and an implementation-specific value when processing an xa_recover event on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP.

<27> Section 3.3.4.9: The value provided to the Recovery Request Number field will not be minimized between the provided Count value and an implementation-specific value when processing an xa_recover event on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP.

<28> Section 3.3.4.10: Disabling Require Thread Affinity is not supported on Windows NT 4.0 Option Pack and Windows XP, and thus Require Thread Affinity is always set to TRUE.

<29> Section 3.3.4.11: The CONNTYPE_XAUSER_XACT_MIGRATE2 connection type is not supported by Windows 2000, Windows Server 2003, or Windows Vista. The CONNTYPE_XAUSER_XACT_MIGRATE connection type is used instead. The CONNTYPE_XAUSER_XACT_MIGRATE2 and CONNTYPE_XAUSER_XACT_MIGRATE connection types are not supported by the Windows NT 4.0 Option Pack or Windows XP.

<30> Section 3.3.4.11: Calling Xa_start with TMJOIN will not resume a Suspended transaction on Windows NT 4.0 Option Pack and Windows XP.

<31> Section 3.3.4.11: Disabling Require Thread Affinity is not supported on Windows NT 4.0 Option Pack or Windows XP, and thus Require Thread Affinity is always set to TRUE.

<32> Section 3.3.4.11: The CONNTYPE_XAUSER_XACT_MIGRATE2 connection type is not supported by Windows 2000, Windows Server 2003, or Windows Vista. The CONNTYPE_XAUSER_XACT_MIGRATE connection type is used instead. The CONNTYPE_XAUSER_XACT_MIGRATE2 and CONNTYPE_XAUSER_XACT_MIGRATE connection types are not supported by the Windows NT 4.0 Option Pack or Windows XP.

<33> Section 3.3.4.11: Disabling Require Thread Affinity is not supported on Windows NT 4.0 Option Pack or Windows XP, and thus Require Thread Affinity is always set to TRUE.

<34> Section 3.3.5.1.4: On Windows NT 4.0 Option Pack and Windows 2000 if the connection is disconnected while waiting for an Abort or a Commit response, a result of XA_RBCOMMFAIL is returned.

<35> Section 3.3.5.1.4: When sending an XAUSER_CONTROL_MTAG_RECOVER message (section 2.2.4.2.4), Windows limits the values of the totalUOWsRequested field and the Open Count field of the XA Superior Proxy object to a maximum of 5.

<36> Section 3.3.5.3.7: Losing connection when waiting for an Abort or Commit response will result in a result of XA_RBCOMMFAIL being returned on Windows NT 4.0 Option Pack and Windows 2000.

<37> Section 3.3.5.3.7: Losing connection when waiting for an Abort or Commit response will result in a result of XA_RBCOMMFAIL being returned on Windows NT 4.0 Option Pack and Windows 2000.

<38> Section 3.3.5.6.8: Losing connection when waiting for an Abort or Commit response will cause a result of XA_RBCOMMFAIL being returned on Windows NT 4.0 Option Pack and Windows 2000.

<39> Section 3.3.5.6.8: Losing connection when waiting for an Abort or Commit response will cause a result of XA_RBCOMMFAIL being returned on Windows NT 4.0 Option Pack and Windows 2000.

<40> Section 3.3.5.7.6: The CONNTYPE_XAUSER_XACT_MIGRATE2 connection type is not supported by Windows 2000, Windows Server 2003, or Windows Vista. If the Transaction Manager does not support this connection type and a MTAG_CONNECTION_REQ_DENIED is returned, the connection type will be converted to CONNTYPE_XAUSER_XACT_MIGRATE and processing continues.

<41> Section 3.4.3.1: In applicable Windows releases, except Windows NT, the XaTmMinWarmRecoveryInterval is initialized to 15 seconds and is configurable to a positive number of seconds.

<42> Section 3.4.3.1: In applicable Windows releases, except Windows NT, the XaTmMaxWarmRecoveryInterval is initialized to 600 seconds and is configurable to a positive number of seconds.

<43> Section 3.4.4.1: The Recovery Interval of all XA resource managers is set to 60 seconds on Windows NT 4.0 Option Pack.

<44> Section 3.4.5.1.1: On Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, the lenDSN field in an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5) is less than 256. On Windows 10 and Windows Server 2016, the lenDSN field in an XATMUSER_MTAG_RMOPEN message is less than 3072.

<45> Section 3.4.5.1.1: On Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10, and Windows Server 2016, the lenXaDll field in an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5) is less than 256.

<46> Section 3.4.5.1.1: The Recovery Interval of all XA resource managers is set to 60 seconds on Windows NT 4.0 Option Pack.

<47> Section 3.4.5.1.1: When an error condition other than those specified occurs during the processing of an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5), a message with an invalid MTAG is sent back on Windows NT 4.0 Option Pack.

<48> Section 3.4.5.1.1: On Windows NT, Windows 2000, and Windows XP, the message is ignored, and the connection state remains at Processing Open Request.

On Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, if the value of the lenDSN field or the lenXaDll field in an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5) is greater than or equal to 256, an XATMUSER_MTAG_E_RMOPENFAILED response message (section 2.2.3.2.3) is sent, and the connection state is set to Ended.

On Windows 10 and Windows Server 2016, if the value of the lenDSN field in an XATMUSER_MTAG_RMOPEN message is greater than or equal to 3072 or the lenXaDll field in an XATMUSER_MTAG_RMOPEN message is greater than or equal to 256, an XATMUSER_MTAG_E_RMOPENFAILED response message is sent, and the connection state is set to Ended.

<49> Section 3.4.5.2.1: In Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, the lenDSN field in an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5) is less than 256. In Windows 10, and Windows Server 2016, the lenDSN field in an XATMUSER_MTAG_RMOPEN message is less than 3072.

<50> Section 3.4.5.2.1: In applicable Windows releases, except Windows NT and Windows 2000, the lenXaDll field in an XATMUSER_MTAG_RMOPEN message (section 2.2.3.2.5) is less than 256.

<51> Section 3.4.5.2.1: The Recovery Interval of all XA resource managers is set to 60 seconds on Windows NT 4.0 Option Pack.

<52> Section 3.4.7.6: The Recovery Interval of an XA resource manager is not increased after signaling the Recovery Interval Timer (section 3.4.2.1) on Windows NT 4.0 Option Pack.

<53> Section 3.4.7.6: The Recovery Interval of an XA resource manager is not increased after signaling the Recovery Interval Timer (section 3.4.2.1) on Windows NT 4.0 Option Pack.

<54> Section 3.5.4.3: On Windows NT 4.0 Option Pack, the value of tmprotUsed field of an STxInfo is set to 2.