Scrittura di un Resource Manager

Se si scrive un servizio o un componente e è necessario usare i servizi transazionali o se è necessario monitorare lo stato di una transazione kernel, è necessario creare un resource manager (RM).

Per scrivere un gestore risorse, è necessario creare più oggetti kernel. Gli oggetti usati da un RM sono:

  • Oggetti Transaction Manager (TM)
  • oggetti Resource Manager
  • Inserimento di oggetti

Creare prima di tutto un oggetto TM. Esistono due tipi di macchine virtuali:

  • Volatile: queste macchine virtuali non dispongono di un log e non possono ripristinare lo stato
  • Durevole: queste macchine virtuali dispongono di un log

Per creare una TM durevole, è necessario creare un log CLFS e chiamare CreateTransactionManager o crearlo per L'utente. Dopo aver creato una TM durevole, è prima necessario ripristinare il tm chiamando RecoverTransactionManager. Dopo il ripristino del tm, è disponibile per l'uso.

Se è stato recuperato un tm esistente, tutte le macchine virtuali associate a questa TM inizieranno a ricevere messaggi di ripristino. Per altre informazioni, vedere Elaborazione del ripristino.

Successivamente, si crea un gestore risorse chiamando CreateResourceManager con l'handle TM. Rm può essere volatile o durevole. È possibile usare solo macchine virtuali durevoli con macchine virtuali durevoli.

Quando si lavora in modo transazionale, si esegue l'inserimento nella transazione chiamando CreateEnlistmente specificando quali notifiche ricevere.

Nota È possibile avviare la ricezione di notifiche prima del completamento della chiamata a CreateEnlistment .

Quando si riceve una notifica, chiamare la funzione "Complete*" appropriata quando viene completato qualsiasi lavoro associato all'elaborazione della notifica. Le funzioni complete sono:

Se in qualsiasi momento un gestore risorse non è in grado di completare il lavoro della transazione oppure se il rendering dell'applicazione non riesce a annullare il lavoro eseguito all'interno della transazione, è necessario eseguire il rollback della transazione chiamando RollbackEnlistment.