Написание менеджера ресурсов

Если вы пишете службу или компонент и хотите использовать транзакционные службы или если необходимо отслеживать состояние транзакции ядра, необходимо создать диспетчер ресурсов (RM).

Чтобы написать диспетчер ресурсов, необходимо создать несколько объектов ядра. Объекты, которые использует RM, :

  • Объекты Диспетчера транзакций (TM)
  • Объекты управляющего ресурсами
  • Объекты призыва

Сначала создайте объект TM. Существует два типа TM:

  • Нестабильные — эти ТМ не имеют журнала и не могут восстановить свое состояние.
  • Устойчивые — у этих ТМ есть журнал

Чтобы создать устойчивый TM, вы должны либо создать журнал CLFS и вызвать CreateTransactionManager, либо поручить создание журнала CLFS системе KTM. После создания устойчивого TM необходимо сначала восстановить TM, вызвав RecoverTransactionManager. После восстановления TM он доступен для использования.

Если вы восстановили существующую TM, все RM, связанные с этой TM, начнут получать сообщения о восстановлении. Дополнительные сведения см. в обработки восстановления.

Затем создайте диспетчер ресурсов, вызвав CreateResourceManager с дескриптором TM. RM может быть переменным или устойчивым. Только стойкие менеджеры транзакций (ТМ) могут быть использованы с стойкими менеджерами ресурсов (РМ).

При работе с транзакцией необходимо участвовать в транзакции, вызвав CreateEnlistmentи указав, какие уведомления принимать.

Примечание Вы можете начать получать уведомления до завершения вызова CreateEnlistment.

При получении уведомления вызовите соответствующую функцию "Complete*" при завершении любой работы, связанной с обработкой уведомления. Полные функции:

Если в любой момент диспетчер ресурсов не может завершить выполнение транзакции, или если продолжение выполнения приведет к невозможности отменить изменения в приложении, выполненные в рамках транзакции, необходимо откатить транзакцию, вызвав RollbackEnlistment.