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.