184.108.40.206.1 Commit (Opnum 3)
HRESULT Commit( [in] short fRetaining, [in] DWORD grfTC, [in] DWORD grfRM );
fRetaining: A short that represents a BOOLEAN value that specifies whether to retain the transaction when it is finished.
grfRM: A DWORD that is reserved for future use. For internal transactions, this parameter MUST be 0x00000000 in order to ensure success. For more details about this input parameter for DTC transactions, refer to [MS-DTCO] section 220.127.116.11.
When processing this call, the server MUST follow these guidelines:
If the isInternal instance variable is True:
If the grfRM input parameter is not equal to 0, or if the fRetaining input parameter is equal to True, or if the grfTC input parameter is not equal to XACTTC_SYNC (0x00000002):
Return XACT_E_NOTSUPPORTED (0x8004D00F), and take no further action.
If the isCommitedorAborted instance variable is True:
Return MQ_ERROR_TRANSACTION_SEQUENCE (0xC00E0051), and take no further action.
iTransactionIdentifier = TransactionIdentifier instance variable of this transaction object.
Send a commit request to the distributed transaction manager, which eventually triggers the Transaction Commit event on the QueueManagers that are enlisted in the transaction. The Transaction Commit event carries the TransactionIdentifier instance variable of this transaction object. For more details about the commit request to the distributed transaction manager, refer to [MS-DTCO] sections 18.104.22.168.2.3 and 22.214.171.124.1. For more details about the outcome of the Transaction Commit event, refer to [MS-MQDMPR] section 126.96.36.199.
If any errors are generated by the distributed transaction manager:
Return an error HRESULT, and take no further action.
Set the isCommittedorAborted instance variable to True.