OLE Transactions Standard
OLE Transactions is the Microsoft interface standard for transaction management. Applications use OLE Transactions–compliant interfaces to initiate, commit, abort, and inquire about transactions. Resource managers use OLE Transactions–compliant interfaces to enlist in transactions, to propagate transactions to other resource managers, to propagate transactions from process to process or from system to system, and to participate in the two-phase commit protocol.
The Microsoft DTC system implements most OLE Transactions–compliant objects, interfaces, and methods. Resource managers that wish to use OLE Transactions must implement some OLE Transactions–compliant objects, interfaces, and methods.
The OLE Transactions specification is based on COM but it differs in the following respects:
OLE Transactions objects cannot be created using the COM CoCreate APIs.
References to OLE Transactions objects are always direct. Therefore, no proxies or stubs are created for inter-apartment, inter-process, or inter-node calls and OLE Transactions references cannot be marshaled using standard COM marshaling.
All references to OLE Transactions objects and their sinks are completely free threaded and cannot rely upon COM concurrency control models. For example, you cannot pass a reference to an IResourceManagerSink interface on a single-threaded apartment and expect the callback to occur only on the same single-threaded apartment.