Platform SDK: Transaction Server

Life of a Transaction: Exporting a Transaction (Phases)

h1 The RM proxy invokes the ITransactionExport::Export method on the export object, passing the pointer to the transaction object that the client specified when it asked the resource manager to enlist in the transaction at step "f1".
h2 The MS DTC proxy sends the transaction identifier GUID of the exported transaction to the client’s transaction manager.
h3.1 The client’s transaction manager checks its internal export object to see whether a Connection Manager connection has been established with the resource manager's transaction manager. If not, the client’s transaction manager obtains the whereabouts from the internal export object and passes the whereabouts to the Connection Manager. The Connection Manager establishes a connection to the resource manager’s transaction manager.
h3.2 The client's transaction manager sends the transaction identifier GUID of the exported transaction to the resource manager’s transaction manager.
h4 The resource manager’s transaction manager creates a internal transaction object for the exported transaction. It then stores the transaction identifier GUID in the transaction object. It marks the transaction object to indicate that it was received from the client’s transaction manager. The resource manager’s transaction manager then replies to the client’s transaction manager.
h5 The client’s transaction manager returns the transaction identifier GUID to the MS DTC proxy,
h6 The MS DTC proxy constructs a transaction cookie that represents the transaction. The transaction cookie is an opaque marshaled form of the transaction object. The MS DTC proxy responds to the ITransactionExport::Export method invocation by returning the byte length of the transaction cookie to the RM proxy.
h7 The RM proxy invokes the ITransactionExport::GetTransactionCookie method on the export object, passing three input parameters. The first is the pointer to the transaction object to be exported. The second is the length of the buffer into which the transaction cookie is to be placed. The third is a pointer to the buffer where the transaction cookie will be returned.
h8 The MS DTC proxy returns the transaction cookie and its actual length to the RM proxy.