Поделиться через


Объекты зачисления

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

KTM предоставляет набор подпрограмм объекта зачисления, которые могут вызывать диспетчеры ресурсов в режиме ядра. KTM также предоставляет аналогичный набор процедур пользовательского режима, которые могут вызывать приложения пользовательского режима. Дополнительные сведения о процедурах пользовательского режима см. в Microsoft Windows SDK.

KTM создает объект зачисления, когда диспетчер ресурсов вызывает ZwCreateEnlistment для зачисления в транзакцию, полученную диспетчером ресурсов (обычно от транзакционного клиента).

Компоненты TPS могут вызывать ZwOpenEnlistment , чтобы открыть дополнительные дескрипторы для объекта зачисления. Но большинство конструкций TPS не требуют дополнительных открытых дескрипторов.

Диспетчеры ресурсов закрывают свои дескрипторы для привлечения объектов, вызывая ZwClose. Если последний дескриптор закрывается до фиксации связанного объекта транзакции, KTM отправляет TRANSACTION_NOTIFY_ROLLBACK уведомления всем диспетчерам ресурсов, у которых есть зачисление для транзакции.

Операционная система удаляет объект после закрытия последнего дескриптора, а KTM освобождает все свои ссылки на объект.