Freigeben über


Schreiben einer Resource Manager

Wenn Sie einen Dienst oder eine Komponente schreiben und Transaktionsdienste verwenden müssen oder wenn Sie den Status einer Kerneltransaktion überwachen müssen, müssen Sie einen Ressourcen-Manager (RM) erstellen.

Zum Schreiben eines Ressourcen-Managers müssen Sie mehrere Kernelobjekte erstellen. Die Objekte, die von einem RM verwendet werden, sind:

  • Transaktions-Manager-Objekte (TM)
  • Resource Manager Objekte
  • Enlistment-Objekte

Erstellen Sie zunächst ein TM-Objekt. Es gibt zwei Arten von TMs:

  • Flüchtig: Diese TMs verfügen über kein Protokoll und können ihren Zustand nicht wiederherstellen.
  • Dauerhaft – diese TMs verfügen über ein Protokoll

Um ein dauerhaftes TM zu erstellen, müssen Sie entweder ein CLFS-Protokoll erstellen und CreateTransactionManager aufrufen oder VON KTM erstellen lassen. Nachdem eine dauerhafte TM erstellt wurde, müssen Sie zuerst die TM wiederherstellen, indem Sie RecoverTransactionManager aufrufen. Nachdem das TM wiederhergestellt wurde, steht es zur Verwendung zur Verfügung.

Wenn Sie ein vorhandenes TM wiederhergestellt haben, empfangen alle diesem TM zugeordneten RMs Wiederherstellungsnachrichten. Weitere Informationen finden Sie unter Wiederherstellungsverarbeitung.

Als Nächstes erstellen Sie einen Ressourcen-Manager, indem Sie CreateResourceManager mit dem TM-Handle aufrufen. Der RM kann flüchtig oder dauerhaft sein. Nur dauerhafte TMs können mit dauerhaften RMs verwendet werden.

Wenn Sie transaktional arbeiten, melden Sie sich für die Transaktion an, indem Sie CreateEnlistmentaufrufen und angeben, welche Benachrichtigungen empfangen werden sollen.

Hinweis Sie können mit dem Empfangen von Benachrichtigungen beginnen, bevor der Aufruf von CreateEnlistment abgeschlossen ist.

Wenn Sie eine Benachrichtigung erhalten, rufen Sie die entsprechende Funktion "Complete*" auf, wenn alle mit der Verarbeitung der Benachrichtigung verbundenen Arbeiten abgeschlossen sind. Die vollständigen Funktionen sind:

Wenn ein Ressourcen-Manager zu irgendeinem Zeitpunkt nicht in der Lage ist, die Arbeit der Transaktion abzuschließen, oder wenn ihre Anwendung die innerhalb der Transaktion ausgeführte Arbeit nicht rückgängig machen kann, müssen Sie das RollbackEnlistment aufrufen.