Share via


Escribir un Resource Manager

Si va a escribir un servicio o componente y necesita usar servicios transaccionales o si necesita supervisar el estado de una transacción de kernel, debe crear un administrador de recursos (RM).

Para escribir un administrador de recursos, debe crear varios objetos de kernel. Los objetos que usa un RM son:

  • Objetos del Administrador de transacciones (TM)
  • Resource Manager objetos
  • Objetos de inscripción

En primer lugar, cree un objeto TM. Hay dos tipos de máquinas virtuales:

  • Volátil: estas máquinas virtuales no tienen un registro y no pueden recuperar su estado
  • Durable: estas máquinas virtuales tienen un registro

Para crear un TM duradero, debe crear un registro CLFS y llamar a CreateTransactionManager o hacer que KTM lo cree automáticamente. Después de crear un TM duradero, primero debe recuperar el TM llamando a RecoverTransactionManager. Una vez recuperado el TM, está disponible para su uso.

Si recuperó un TM existente, todos los RMs asociados a este TM comenzarán a recibir mensajes de recuperación. Para obtener más información, consulte Procesamiento de recuperación.

A continuación, cree un administrador de recursos mediante una llamada a CreateResourceManager con el identificador TM. El RM puede ser volátil o duradero. Solo se pueden usar máquinas virtuales duraderas con RMs duraderos.

Al trabajar transaccionalmente, se inscribe en la transacción mediante una llamada a CreateEnlistmenty se especifican las notificaciones que se van a recibir.

Nota Puede empezar a recibir notificaciones antes de que se complete la llamada a CreateEnlistment .

Cuando reciba una notificación, llame a la función "Complete*" adecuada cuando se complete cualquier trabajo asociado al procesamiento de la notificación. Las funciones completas son:

Si en cualquier momento un administrador de recursos no puede completar el trabajo de la transacción, o si continuaría, la aplicación no puede deshacer el trabajo realizado en la transacción, debe revertir la transacción mediante una llamada a RollbackEnlistment.