Revision Summary Date Revision History Revision Comments 8/10/2007 0.1 Initial Availability 9/28/2007 0.2 Clarified the meaning of the technical content. 10/23/2007 0.2.1 Editorial Changed language and formatting in the technical content. 11/30/2007 0.2.2 Editorial Changed language and formatting in the technical content. 1/25/2008 0.2.3 Editorial Changed language and formatting in the technical content. 3/14/2008 0.2.4 Editorial Changed language and formatting in the technical content. 5/16/2008 0.2.5 Editorial Changed language and formatting in the technical content. 6/20/2008 1.0 Major Updated and revised the technical content. 7/25/2008 1.1 Minor Clarified the meaning of the
technical content. 8/29/2008 2.0 Updated and revised the technical content. 10/24/2008 2.1 Minor Clarified the meaning of the technical content. 12/5/2008 2.1.1 Editorial Changed language and formatting in the technical content. 1/16/2009 2.2 Minor Clarified the meaning of the technical content. 2/27/2009 2.3 Clarified the meaning of the technical content. 4/10/2009 3.0 Updated and revised the technical content. 5/22/2009 4.0 Major Updated and revised the technical content. 7/2/2009 5.0 Major Updated and revised the technical content. 8/14/2009 6.0 Major Updated and revised the technical content. 9/25/2009 7.0 Major Updated and revised the
technical content. 1/7/2011 14.1 Minor Clarified the meaning of the technical content. 2/11/2011 15.0 Major Updated and revised the technical content. 3/25/2011 16.0 Major Updated and revised the technical content. 5/6/2011 16.0 None No changes to the meaning, language, or formatting of the technical content. 6/17/2011 16.1 Minor Clarified the meaning of the technical content. 9/23/2011 16.1 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 17.0 Major Updated and revised the technical content. 3/30/2012 17.0 None No changes to the meaning, language, or formatting of the technical content.
This message indicates that the request to register an failed for an unspecified reason. 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 MsgHeader (24 bytes) ... ... MsgHeader (24 bytes): This field MUST contain a structure: The dwUserMsgType field MUST be 0xA0000003. The dwcbVarLenData field MUST be 0. XATMUSER_MTAG_E_RMPROTOCOL This message indicates that the request to register an failed because either the registration or a previous attempt to recover returned XAER_PROTO, as specified by the technical standard, "Distributed Transaction Processing: The XA Specification", as specified in . 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 MsgHeader (24 bytes) ... ... MsgHeader (24 bytes): This field MUST contain a structure: The dwUserMsgType field MUST be 0xA0000007. The dwcbVarLenData MUST be 0. XATMUSER_MTAG_RMOPEN This message requests the registration of an . 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 MsgHeader (24 bytes) ... ... lenDSN lenXaDll
Version-specific aspect Version 1 Version 2 Version 4 Version 5 Version 6 Version supports connection type <2> X X X X Version supports connection type <3> X X Version supports connection type <4> X X Version supports connection type <5> X X CONNTYPE_XAUSER_CONTROL This connection type is used to create an XA Superior Transaction Manager representation in a and to read from the Transaction Manager the list of XA to be recovered. For more information CONNTYPE_XAUSER_CONTROL as an initiator and as an acceptor, see section . This connection type uses the following message types. XAUSER_CONTROL_MTAG_CREATE This message creates an XA Superior Transaction Manager representation in a . 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 MsgHeader (24 ... ... guidXaRm (16 bytes) ... ... MsgHeader (24 bytes): This field MUST contain a structure: The dwUserMsgType field MUST be 0x00004001. The dwcbVarLenData field MUST be 16. guidXaRm (16 This field MUST contain the for the XA Superior Transaction Manager.
Processing Events and Sequencing Rules CONNTYPE_XAUSER_CONTROL as Acceptor This is an XA Superior CMP Connection. For all messages received in this , the MUST process the message as specified in section . The XA Subordinate Transaction Manager Facet MUST also follow the processing rules specified in the following sections. Receiving an XAUSER_CONTROL_MTAG_CREATE Message When the receives an message, it MUST perform the following actions: If the connection state is Idle: Set the connection state to . Attempt to find the XA Superior Object in the XA Superior Table keyed by the guidXaRm field of the message. If an Object is Increment the Open Count field of the found XA Superior Object. Send an message using the connection. Set the connection state to Active. Set the XA Superior Object referenced by the XA Superior CMP Connection to the XA Superior Object. Otherwise: Attempt to create a new XA Superior Object with the following values: Set the Open Count field to 1. If the creation of the new XA Superior Object fails: Send a message using the connection. Set the state to Ended. Otherwise: Add the new XA Superior Object to the XA Superior Table referenced by the XA Subordinate Transaction Manager Facet with the guidXaRm field of the message as its key. Send an XAUSER_CONTROL_MTAG_CREATED message using the receiving connection. Set the connection state to Active. Set the XA Superior Object referenced by the XA Superior CMP Connection to the newly created XA Superior Object. Otherwise, the message MUST be processed as an invalid message as specified in section . Receiving an XAUSER_CONTROL_MTAG_RECOVER Message
Receiving an XAUSER_XACT_MTAG_START Message When the receives an message, it MUST perform the following actions: If the connection state is Idle: Set the connection state to Processing Start Request. Attempt to find the XA Superior Object in the XA Superior Table keyed by the guidXaRm field of the message. If an Object is found: Use this as the XA Superior Object in the remainder of the processing of this event. Otherwise: Attempt to create a new XA Superior Object with the following values: Set the Open Count field to 1. If the creation of the new XA Superior Object fails: Send an message using the connection. Set the connection state to Ended. Processing for this event is complete. Otherwise: Add the new XA Superior Object to the XA Superior Table referenced by the XA Subordinate Transaction Manager Facet with the guidXaRm field of the message as its key. Use the created XA Superior Object as the XA Superior Object in the remainder of the processing of this event. Attempt to find the XA Superior Enlistment Object in the XA Superior Enlistment Table referenced by the XA Superior Object that meets both of the following conditions: The XID is set to the value of the XAIdentifier field of the structure (section 2.2.1.4) contained within the XAUow field of the message. The Coupling field is set to . If an Object is found: Send an message using the connection. Set the connection state to Ended. Otherwise: Attempt to find the XA Superior Enlistment Object in the XA Superior Enlistment Table referenced by the XA Superior Object that meets all of the following conditions: The field of the field of the XA Superior Enlistment Object is set to the XA Global Transaction Identifier field of the value of the XAIdentifier field of the XA_UOW structure contained within the XAUow field of the message. The Coupling field is set to Tight.
If the State field of the found XA Transaction object is set to Suspended: If the Migrate field of the found XA Transaction object is set to TRUE: Attempt to create a new XA Transaction CMP Connection object with the following values: The Connection Type field SHOULD be set to .<34> The XA Transaction Object is set to the located XA Transaction object. The State field is set to Awaiting Resumption Response. The State field of the XA Transaction object is set to Suspended. The Action is set to Resume. If failed: Return XAER_RMERR. Send an message with the following values: The guidXaRm field is set to the field of the found XA Superior Proxy object. The lenXAIdentifier field is set to the size of an structure (section 2.2.1.3). The XAIdentifier field is set to the provided XID. The dwProcessId field is set to the Current Process ID. The dwThreadId field is set to the Current Thread ID. Wait for a response and continue with the processing rules defined in . Otherwise: Set the State of the found XA Transaction object to Active. Otherwise: Return XAER_RMERR. Otherwise: If the provided Flags argument does not have TMJOIN set: Return XAER_DUPID. Otherwise: If the Require Thread Affinity field of the found XA Transaction object is set to TRUE, check if the Current Thread ID is set to the Thread Identifier of the found XA Transaction object. If failed: Return XAER_RMERR. Otherwise:
If the State field of the found XA Transaction object is set to Suspended: SHOULD set the field of the XA Transaction object to Active.<35> Return XA_OK. Otherwise: Return XAER_RMERR. Otherwise: If the provided Flags argument has TMRESUME set: MAY return XAER_NOTA. Attempt to create a new XA Transaction object with the following values: The XID field is set to the provided XID. The Thread Identifier is set to the Current Thread ID. The Migrate field is set to FALSE. The State field is set to Suspended. The Require Thread Affinity field SHOULD be set to whether the Flags argument does not have TM_NOTHREADAFFINITY set.<36> The Parent XA Superior Proxy object is set to the found XA Superior Proxy object. If failed: Return XAER_RMERR. Otherwise: Attempt to create XA Transaction CMP Connection object with the following values: The Connection type SHOULD be set to CONNTYPE_XAUSER_XACT_MIGRATE2.<37> The XA Transaction object is set to the created XA Transaction object. The State field is set to Awaiting Resumption Response. The field of the created XA Transaction object is set to Suspended. The Action is set to Resume. If failed: Return XAER_RMERR. Send an XAUSER_XACT_MTAG_RESUME message with the following values: The guidXaRm field is set to the Resource Manager Recovery GUID field of the found XA Superior Proxy object. The lenXAIdentifier field is set to the size of an XA_XID structure. The XAIdentifier field is set to the provided XID.
0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 (lenImportCookie) 0x00000028 40 (ImportCookie) 0x2ADB4463 2adb4463-bd41-11d0-b12e-00c04fc2f3ef 0x11D0BD41 0xC0002EB1 0xEFF3C24F 0xCE5163B5 Global Tx Identifier: 0x409161C6 0xB5E6D1A1 0x6FC255EF 0x00000003 3 0x00000000 0 When the XA Resource Manager Bridge Facet receives the XATMUSER_MTAG_ENLIST message from the XA Resource Manager Bridge, the XA Resource Manager Bridge Facet attempts to find an XA Resource Manager object in the XA Resource Manager Table that has its Resource Manager Global Identifier field set to the guidRM field of the message. In this example, assume such an object was found.
Change Tracking This section identifies changes that were made to this document since the last release. Changes are classified as Major, Minor, or None. The revision class Major means that the technical content in the document was significantly revised. Major changes affect protocol interoperability or implementation. Examples of major changes are: A document revision that incorporates changes to interoperability requirements. A document revision that captures changes to protocol functionality. The revision class Minor means that the meaning of the technical content was clarified. Minor changes do not affect protocol interoperability or implementation. Examples of minor changes are updates to clarify ambiguity at the sentence, paragraph, or table level. The revision class None means that no new technical changes were introduced. Minor editorial and formatting changes may have been made, but the relevant technical content is identical to the last released version. The changes made to this document are listed in the following table. For more information, please contact . Section Description Revision XATMUSER_MTAG_RMOPEN Updated the information for the lenDSN field. Major Receiving an XATMUSER_MTAG_RMOPEN Message Updated the upper-limit information for the lenDSN and lenXaDll fields and updated the message name from "XATMUSER_ MTAG_RMOPEN" to "XATMUSER_MTAG_RMOPEN" (removed a space). Major Receiving an XATMUSER_MTAG_RMOPEN Message Updated the upper-limit information for the lenDSN and lenXaDll fields. Major
Index A Abstract data model XA Resource Manager Bridge ( 68, 196) XA Resource Manager Bridge Facet ( 68, 168) XA Subordinate Transaction Manager Facet ( 68, 69) XA Superior Transaction Manager ( 68, 113) 35 B 33 C 35 248 69 39 CONNTYPE_XATM_ENLIST 174 46 201 CONNTYPE_XATM_OPEN 170 40 197 CONNTYPE_XATM_OPENONEPIPE 172 43 199 CONNTYPE_XAUSER_CONTROL 72 51 115 CONNTYPE_XAUSER_XACT_BRANCH_OPEN 81 62 125 CONNTYPE_XAUSER_XACT_BRANCH_START 79 58 123 CONNTYPE_XAUSER_XACT_MIGRATE 78 63 122 CONNTYPE_XAUSER_XACT_MIGRATE2 83 66 128 CONNTYPE_XAUSER_XACT_OPEN 76 58 119 CONNTYPE_XAUSER_XACT_START 74 55 117 D Data - abstract XA Resource Manager Bridge ( 68, 196) XA Resource Manager Bridge Facet ( 68, 168) XA Subordinate Transaction Manager Facet ( 68, 69) XA Superior Transaction Manager ( 68, 113) 69 E 215 F 35 G 12 H triggered events XA Resource Manager Bridge 209 208 206 204 206 204 208 205 XA Resource Manager Bridge Facet 177 177 XA Subordinate Transaction Manager Facet ( 69, 86) XA Superior Transaction Manager 131 131 132 135 135 137 137 139 141 143 145 I 241 241 16 Initialization XA Resource Manager Bridge ( 69, 204) XA Resource Manager Bridge ( 69, 176, 177)
XA Subordinate Transaction Manager Facet ( 69, 85) XA Superior Transaction Manager ( 69, 130) 12 L Local events XA Resource Manager Bridge ( 69, 214) XA Resource Manager Bridge Facet 187 188 190 191 192 192 XA Subordinate Transaction Manager Facet 108 110 109 111 110 112 112 112 XA Superior Transaction Manager ( 69, 168) M Message processing XA Resource Manager Bridge 213 210 211 XA Resource Manager Bridge Facet 185 178 182 69 XA Subordinate Transaction Manager 86 101 97 95 106 92 89 XA Superior Transaction Manager 151 153 69 36 Messages 36 36 N 15 O 16 16 roles 33 33 33 33 scenarios 17 22 P 241 34 34 242 Protocol Details 68 R 15 16 15 34 Resource Manager OleTx - enlisting with XA Transaction Managers 17 18 20 XA 34 33 XA - enlisting with Transaction Managers 29 22 24 25 XA - registration and unregistration 29 26 Roles 33 Transaction Manager 33 34 34 33 33 S Scenarios OleTx Resource Managers enlisting with XA Transaction Managers 17 18 20 XA Resource Managers enlisting with Transaction Managers 29 22 24 25 XA Superior 223 226
215 215 220 226 216 219 Security 241 241 Sequencing rules XA Resource Manager Bridge 213 210 211 XA Resource Manager Bridge Facet 185 178 182 69 XA Subordinate Transaction Manager Facet 86 101 97 95 106 92 89 XA Superior Transaction Manager 151 153 69 35 33 T events XA Resource Manager Bridge ( 69, 214) XA Resource Manager Bridge Facet 69 187 XA Subordinate Transaction Manager Facet ( 69, 108) XA Superior Transaction Manager ( 69, 168) Timers XA Resource Manager Bridge ( 68, 203) XA Resource Manager Bridge Facet overview ( 68, 176) 176 XA Subordinate Transaction Manager Facet ( 68, 85) XA Superior Transaction Manager ( 68, 130) 248 Transaction enlistment and completion 18 31 27 recovery ( 20, 24) Transaction Manager - XA OleTx Resource Managers enlisting with 17 18 20 33 Transaction Manager - XA Resource Managers enlisting with 29 22 24 25 Transaction Manager role 33 34 34 36 Triggered events - higher-layer XA Resource Manager Bridge 209 208 206 204 206 204 208 205 XA Resource Manager Bridge Facet 177 177 XA Subordinate Transaction Manager Facet ( 69, 86) XA Superior Transaction Manager 131 131 132 135 135 137 137 139 141 143 145 V 35 35 XA Resource Manager Bridge ( 39, 69) XA Resource Manager Bridge Facet ( 39, 69) XA Subordinate Transaction Manager Facet ( 51, 69, 72) XA Superior Transaction Manager ( 51, 69, 115) X XA Resource Manager Bridge abstract data model ( 68, 196) 201 197 199 triggered events 209 208 206 204 206 204 208 205
initialization ( 69, 204) events ( 69, 214) message processing 213 210 211 68 sequencing rules 213 210 211 timer events ( 69, 214) timers ( 68, 203) versioning ( 39, 69) XA Resource Manager Bridge Facet abstract data model ( 68, 168) 174 170 172 higher-layer triggered events 177 177 initialization ( 69, 176, 177) events 187 188 190 191 192 192 message processing 185 178 182 69 68 sequencing rules 185 178 182 69 timer events 69 187 timers overview ( 68, 176) 176 versioning ( 39, 69) XA Subordinate Transaction Manager Facet abstract data ( 68, 69) 72 81 79 78 83 76 74 higher-layer triggered events ( 69, 86) initialization ( 69, 85) events 108 110 109 111 110 112 112 112 message processing 86 101 97 95 106 92 89 68 sequencing rules 86 101 97 95 106 92 89 timer events ( 69, 108) timers ( 68, 85) versioning ( 51, 69, 72) 84 84 XA Superior Transaction Manager abstract data model ( 68, 113) 115 125 123 122 128 119 117 triggered events 131 131 132 135 135 137 137 139 141 143 145 initialization ( 69, 130) local events ( 69, 168) message processing 151 153 69 68 sequencing rules 151 153 69 timer events ( 69, 168) timers ( 68, 130) versioning ( 51, 69, 115) 37 39 37 43 46