Enlistment-Objekte

Ein Enlistment-Objekt stellt die Aufnahme eines Ressourcen-Managers zu einer Transaktion dar. Bevor ein Ressourcen-Manager Benachrichtigungen über die Ereignisse einer Transaktion erhalten kann, muss der Ressourcen-Manager ZwCreateEnlistment aufrufen, um eine Enlistment für die Transaktion zu erstellen.

KTM stellt eine Reihe von Listenobjektroutinen bereit, die Von Ressourcenmanagern im Kernelmodus aufgerufen werden können. KTM bietet auch eine ähnliche Reihe von Benutzermodusroutinen, die Benutzermodusanwendungen aufrufen können. Weitere Informationen zu den Benutzermodusroutinen finden Sie im Microsoft Windows SDK.

KTM erstellt ein Enlistment-Objekt, wenn ein Ressourcen-Manager ZwCreateEnlistment aufruft , um sich in eine Transaktion einzulisten, die der Ressourcen-Manager empfangen hat (in der Regel von einem Transaktionsclient).

TPS-Komponenten können ZwOpenEnlistment aufrufen, um zusätzliche Handles für ein Einlistungsobjekt zu öffnen. Die meisten TPS-Designs erfordern jedoch keine zusätzlichen geöffneten Handles.

Ressourcenmanager schließen ihre Handles für die Einlistung von Objekten, indem sie ZwClose aufrufen. Wenn das letzte Handle geschlossen wird, bevor das zugehörige Transaktionsobjekt committet wurde, sendet KTM TRANSACTION_NOTIFY_ROLLBACK Benachrichtigungen an alle Ressourcenmanager, die über eine Registrierung für die Transaktion verfügen.

Das Betriebssystem löscht das Objekt, nachdem das letzte Handle geschlossen wurde und KTM alle Verweise auf das Objekt freigegeben hat.