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


Объекты диспетчера транзакций

Цель main объекта диспетчера транзакций заключается в создании и обслуживании потока журналов CLFS, который KTM использует для записи сведений о состоянии транзакций.

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

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

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

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

Диспетчеры ресурсов закрывают свои дескрипторы для объектов диспетчера транзакций, вызывая ZwClose.

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