ITransactionOutcomeEvents Interface
This interface is used by application programs that require asynchronous notification about transaction outcomes. The application program implements the methods in this interface and registers the interface with the connection point mechanism. MS DTC calls the appropriate method on this interface to inform the application about the outcome of a transaction.
Implemented by: | Application program |
Object | This object is implemented by the application program. The object must support the ITransactionOutcomeEvents interface |
Interface Source | The application program implements the methods in this interface |
Called by: | MS DTC proxy |
Typically, ITransaction::Commit or Abort calls are performed synchronously. This means that the calling thread is blocked until MS DTC makes a commit or abort decision (usually at the end of phase one of the two-phase commit protocol).
It is possible to avoid blocking the calling thread by using asynchronous Commit or Abort calls. Asynchronous Commit or Abort require the following:
For more information on | Refer to |
---|---|
Asynchronous Commit and Abort requests | ITransaction::Commit or ITransaction::Abort |
OLE events architecture | IConnectionPoint |
The ITransactionOutcomeEvents events are raised when the transaction's outcome is known. On the root transaction manager's system, the transaction outcome event is raised at the end of phase one. On the subordinate transaction managers' systems, the transaction outcome events are raised at the beginning of phase two.
interface ITransactionOutcomeEvents : IUnknown
{
HRESULT Committed (
[in] BOOL fRetaining,
[in] XACTUOW * pNewUOW,
[in] HRESULT hr);
HRESULT Aborted (
[in] BOID * pboidReason,
[in] BOOL fRetaining,
[in] XACTUOW * pNewUOW,
[in] HRESULT hr);
HRESULT HeuristicDecision (
[in] DWORD dwDecision,
[in] BOID * pboidReason,
[in] HRESULT hr);
HRESULT Indoubt ();
}