Utilisation des transactions
Les enregistreurs d’applications peuvent apporter des modifications mineures au code source pour ajouter des opérations de Registre et de fichier transactionnelles à l’aide du gestionnaire de transactions KTM (Kernel Transaction Manager). En général, cela implique la création d’une transaction et le passage du handle à d’autres fonctions fournies par des ressources transactionnelles telles que le NTFS transactionnel et le registre traité.
KTM fournit des mécanismes permettant à votre application de participer à des transactions et d’écrire votre propre gestionnaire de ressources transactionnelles. Il existe des fonctions qui vous permettent de créer, gérer et utiliser quatre classes d’objets noyau : transactions, gestionnaires de transactions, gestionnaires de ressources et inscription. Si vous utilisez simplement des transactions, vous devez uniquement travailler avec des objets de transaction et utiliser ces fonctions :
Ne partez jamais du principe qu’une transaction est active. Les transactions peuvent être restaurées pour de nombreuses raisons et à tout moment.
Windows expose une interface basée sur des handles aux ressources système. Pour utiliser un objet de système d’exploitation, l’application demande tout d’abord un handle à l’objet, puis utilise ce handle dans les appels de fonction suivants pour accéder ou modifier l’objet. Un descripteur peut généralement être ouvert dans différents modes ; le mode spécifié affecte la sémantique des appels de fonction suivants. Par exemple, un descripteur de fichier ouvert par un appel à CreateFile avec l’indicateur dwDesiredAccess défini sur la _ lecture générique ne peut pas être utilisé dans les appels qui modifient le fichier.
vous pouvez coordonner avec Distributed Transaction Coordinator ressources en mode utilisateur, telles que SQL ou MSMQ, et avec les ressources en mode noyau qui utilisent le KTM. Commencez par créer une transaction DTC ou un objet System. transactions , puis appelez l’objet IKernelTransaction , à partir duquel vous pouvez obtenir le handle KTM. L’objet IKernelTransaction crée une transaction KTM qui est subordonnée à la transaction DTC. Avec ce handle, vous pouvez créer vos objets transactionnels, mais signaler le résultat de la transaction à l’aide de DTC ou de System. transactions.