ITransactionOutcomeEvents::Aborted
Raised when the transaction aborts.
MS DTC raises the Aborted event as soon as the transaction manager decides to abort the transaction. When the Aborted event is raised, there is no guarantee that the resource managers will have received the abort request or undone the effects of the aborted transaction.
A transaction can abort for any of the following reasons:
-
The application that initiated the transaction aborted the transaction by calling ITransaction::Abort.
-
The application that initiated the transaction called ITransaction::Commit for the transaction, but the attempt to commit the transaction was unsuccessful.
-
The application that initiated the transaction failed due to a process fault or system failure before it called ITransaction::Commit.
-
The application that initiated the transaction lost communication with the transaction manager before calling ITransaction::Commit.
-
An enlisted resource manager failed due to a process fault or system failure before completion of phase one of the two-phase commit protocol.
-
A communication failure occurred between a transaction manager and an enlisted resource manager before completion of phase one of the two-phase commit protocol.
-
An enlisted resource manager called IUnknown::Release to release the transaction object before completion of phase one of the two-phase commit protocol.
-
An enlisted resource manager replied "abort" when asked to prepare at phase one of the two-phase commit protocol.
-
An enlisted transaction manager failed due to a process fault or system failure before the completion of phase one of the two-phase commit protocol.
-
A communication failure occurred between two enlisted transaction managers before the completion of phase one of the two-phase commit protocol.
-
The transaction failed to commit within the timeout that was specified when the transaction was initiated. The transaction was aborted by the transaction manager.
-
A transaction manager detected that a new transaction manager or resource manager tried to join the transaction while the transaction was being committed. The transaction manager aborted the transaction.
-
The system administrator resolved an in-doubt transaction by manually aborting it.
Syntax
HRESULT Aborted (
BOID* pboidReason,
BOOL fRetaining,
XACTUOW* pNewUOW,
HRESULT hr )
where
-
pboidReason
-
[in] Is always NULL.
-
fRetaining
-
[in] Is always FALSE.
-
pNewUOW
-
[in] Is always NULL.
-
hr
-
[in] Is always S_OK
Returns
-
S_OK
-
Indicates the transaction aborted.