// wdm.h
NTSTATUS TmPrepareEnlistment(
[in] PKENLISTMENT Enlistment,
[in] PLARGE_INTEGER TmVirtualClock
);
View the official Windows Driver Kit DDI referenceNo description available.
The TmPrepareEnlistment routine initiates the prepare operation for a specified enlistment's transaction.
Enlistment [in]A pointer to an enlistment object. Your component can receive this pointer as input to a ResourceManagerNotification callback routine. Alternatively, your component can call ObReferenceObjectByHandle and supply the object handle that a previous call to ZwCreateEnlistment, TmCreateEnlistment, or ZwOpenEnlistment provided.
TmVirtualClock [in]A pointer to a virtual clock value. This parameter is optional and can be NULL.
TmPrepareEnlistment returns STATUS_SUCCESS if the operation succeeds. Otherwise, this routine might return one of the following values:
| Return code | Description |
|---|---|
| STATUS_ENLISTMENT_NOT_SUPERIOR | The caller is not a superior transaction manager for the enlistment. |
| STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED | The caller did not register to receive TRANSACTION_NOTIFY_PREPARE_COMPLETE notifications. |
| STATUS_TRANSACTION_REQUEST_NOT_VALID | The enlistment's transaction is not in a state that allows it to enter the prepare phase. |
| STATUS_ACCESS_DENIED | The caller does not have appropriate access to the enlistment object. |
The routine might return other NTSTATUS values.
The TmPrepareEnlistment routine is a pointer-based version of the ZwPrepareEnlistment routine.
Only superior transaction managers can call TmPrepareEnlistment.
For information about when to use KTM's Tm*Xxx* routines instead of Zw*Xxx* routines, see Using TmXxx Routines.