Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
KTM fournit une file d’attente de notification pour chaque gestionnaire de ressources. KTM remet des notifications à un gestionnaire de ressources en les plaçant dans la file d’attente du gestionnaire de ressources.
Un gestionnaire de ressources peut récupérer des notifications à partir de sa file d’attente de manière synchrone ou asynchrone.
Pour récupérer des notifications de façon synchrone, le gestionnaire de ressources peut appeler à plusieurs reprises ZwGetNotificationResourceManager.
Pour recevoir des notifications de façon asynchrone, le gestionnaire de ressources peut appeler TmEnableCallbacks pour configurer une routine de rappel. KTM appelle la routine de rappel chaque fois qu’elle place une notification dans la file d’attente du gestionnaire de ressources.
Lorsqu’un gestionnaire de ressources appelle ZwCreateEnlistment pour créer une inscription pour une transaction, le gestionnaire de ressources spécifie les types de notifications qu’il doit recevoir. Les gestionnaires de ressources reçoivent uniquement les notifications qu’ils s’inscrivent pour recevoir.
Les constantes de notification sont définies dans Ktmtypes.h. Les noms de constantes de notification ont un format de TRANSACTION_NOTIFY_Xxx.
Le reste de cette rubrique répertorie toutes les constantes de notification que Ktmtypes.h définit et les divise en trois groupes :
Notifications que les gestionnaires de ressources peuvent recevoir
Notifications que les gestionnaires de transactions supérieurs peuvent recevoir
Constantes de notification définies mais actuellement non utilisées
Notifications pour les gestionnaires de ressources
Tous les gestionnaires de ressources doivent s’inscrire pour recevoir des notifications TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE et TRANSACTION_NOTIFY_COMMIT, même si elles appellent par la suite ZwReadOnlyEnlistment pour marquer une inscription en lecture seule.
Les gestionnaires de ressources peuvent prendre en charge TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT, mais ils doivent également prendre en charge les notifications de pré-préparation, de préparation et de validation multiphasées.
La liste suivante contient toutes les notifications que les gestionnaires de ressources peuvent recevoir :
TRANSACTION_NOTIFY_PREPREPARE (notification avant préparation de la transaction)
Lorsqu’il est envoyé : un client appelle ZwCommitTransaction et aucun gestionnaire de ressources ne prend en charge la validation à phase unique, ou si un gestionnaire de transactions supérieur appelle ZwPrePrepareEnlistment.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : effectuez des opérations de pré-préparation, puis appelez ZwPrePrepareComplete. (Pour plus d’informations sur les opérations de pré-préparation, consultez Gestion des opérations de validation.)
Restrictions: Le gestionnaire de ressources doit également prendre en charge TRANSACTION_NOTIFY_PREPARE et TRANSACTION_NOTIFY_COMMIT.
TRANSACTION_NOTIFIER_PRÉPARER
Lorsqu’il est envoyé : après TRANSACTION_NOTIFY_PREPREPARE si un client appelle ZwCommitTransaction et qu’aucun gestionnaire de ressources ne prend en charge la validation à phase unique, ou si un gestionnaire de transactions supérieur appelle ZwPrepareEnlistment.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : Effectuez des opérations de préparation, puis appelez ZwPrepareComplete. (Pour plus d’informations sur la préparation des opérations, consultez Gestion des opérations de validation.)
Restrictions: Le gestionnaire de ressources doit également prendre en charge TRANSACTION_NOTIFY_PREPREPARE et TRANSACTION_NOTIFY_COMMIT.
TRANSACTION_NOTIFY_COMMIT
Lorsqu’il est envoyé : après TRANSACTION_NOTIFY_PREPARE si un client appelle ZwCommitTransaction et qu’aucun gestionnaire de ressources ne prend en charge la validation à phase unique, ou si un gestionnaire de transactions supérieur appelle ZwCommitEnlistment.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : effectuez des opérations de validation, puis appelez ZwCommitComplete. (Pour plus d’informations sur les opérations de validation, consultez Gestion des opérations de validation.)
Restrictions: Le gestionnaire de ressources doit également prendre en charge TRANSACTION_NOTIFY_PREPREPARE et TRANSACTION_NOTIFY_PREPARE.
NOTIFICATION_DE_TRANSACTION_COMMIT_EN_PHASE_UNIQUE
Lorsqu’il est envoyé : un client appelle ZwCommitTransaction et un gestionnaire de ressources prend en charge les opérations de validation en phase unique.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : validez la transaction ou appelez ZwSinglePhaseReject. (Pour plus d’informations sur les opérations de validation en phase unique, consultez Gestion des opérations de validation.)
Restrictions: Le gestionnaire de ressources doit également prendre en charge TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE et TRANSACTION_NOTIFY_COMMIT.
TRANSACTION_NOTIFY_ROLLBACK
Lorsqu’il est envoyé : un client appelle ZwRollbackTransaction, un gestionnaire de transactions supérieur appelle ZwRollbackEnlistment ou KTM détecte une erreur (par exemple, un échec d’écriture dans le flux de journal).
Reçu par : gestionnaires de ressources et gestionnaires de transactions supérieurs.
Action requise du destinataire : effectuez toutes les opérations nécessaires pour restaurer les données de la transaction, puis appelez ZwRollbackComplete. (Pour obtenir plus d’informations sur les opérations d'annulation, consultez Gestion des opérations d'annulation.)
Restrictions: Tous les gestionnaires de ressources et les gestionnaires de transactions supérieurs doivent prendre en charge TRANSACTION_NOTIFY_ROLLBACK.
TRANSACTION_NOTIFIER_RECUPERATION
Lorsqu’il est envoyé : un gestionnaire de ressources appelle ZwRecoverResourceManager.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : le gestionnaire de ressources doit appeler ZwRecoverEnlistment. (Pour plus d’informations sur les opérations de récupération, consultez Gestion des opérations de récupération.)
Restrictions: Aucun.
TRANSACTION_NOTIFY_LAST_RECOVER
Lorsqu’il est envoyé : une fois que KTM a envoyé la dernière TRANSACTION_NOTIFY_RECOVER pour les inscriptions d’un gestionnaire de ressources.
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : mettre fin à l’opération de récupération. (Pour plus d’informations sur les opérations de récupération, consultez Gestion des opérations de récupération.)
Restrictions: Aucun.
TRANSACTION_NOTIFY_INDOUBT
Lorsqu’il est envoyé : après qu’un gestionnaire de ressources appelle ZwRecoverEnlistment, si KTM ne peut pas déterminer si la transaction doit être validée ou annulée (généralement parce que le TPS a un gestionnaire de transactions supérieur qui est indisponible).
Reçu par : Gestionnaires de ressources.
Action requise du destinataire : Ne rien faire jusqu’à ce que KTM envoie TRANSACTION_NOTIFY_COMMIT ou TRANSACTION_NOTIFY_ROLLBACK.
Restrictions: Aucun.
TRANSACTION_NOTIFICATION_GESTIONNAIRE_NON_CONNECTÉ
Lorsqu’il est envoyé : le gestionnaire de ressources qui gère une opération de validation en phase unique ferme le handle d’inscription sans indiquer qu’il a validé ou restauré la transaction.
Reçu par : gestionnaires de ressources et gestionnaires de transactions supérieurs qui ont des inscriptions pour la transaction.
Action requise du destinataire : opérations de nettoyage spécifiques aux transactions. En règle générale, cette notification est utile pour les gestionnaires de ressources en lecture seule.
Restrictions: Aucun.
Notifications pour les gestionnaires de transactions supérieurs
Les gestionnaires de transactions supérieurs peuvent recevoir les notifications suivantes :
TRANSACTION_NOTIFY_ROLLBACK
Consultez la description précédente.
TRANSACTION_NOTIFY_RM_DÉCONNECTÉ
Consultez la description précédente.
TRANSACTION_NOTIFY_PREPREPARE_COMPLETE
Lorsqu’ils sont envoyés : une fois que tous les gestionnaires de ressources ont reçu TRANSACTION_NOTIFY_PREPREPARE et répondu en appelant ZwPrePrepareComplete.
Reçu par : Gestionnaires supérieurs de transactions.
Action requise du destinataire : le gestionnaire de transactions supérieur doit appeler ZwPrepareEnlistment.
TRANSACTION_NOTIFY_PREPARE_COMPLETE
Lorsqu’ils sont envoyés : une fois que tous les gestionnaires de ressources ont reçu TRANSACTION_NOTIFY_PREPARE et répondu en appelant ZwPrepareComplete.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : le gestionnaire de transactions supérieur doit appeler ZwCommitEnlistment.
TRANSACTION_NOTIFY_COMMIT_COMPLETE
Lorsqu’ils sont envoyés : une fois que tous les gestionnaires de ressources ont reçu TRANSACTION_NOTIFY_COMMIT et répondu en appelant ZwCommitComplete.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : opérations de nettoyage des transactions.
TRANSACTION_NOTIFICATION_RETOUR_EN_ARRIÈRE_COMPLET
Lorsqu’ils sont envoyés : une fois que tous les gestionnaires de ressources ont reçu TRANSACTION_NOTIFY_ROLLBACK et répondu en appelant ZwRollbackComplete.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : opérations de nettoyage des transactions.
TRANSACTION_NOTIFY_RECOVER_QUERY
Lorsqu’il est envoyé : un gestionnaire de transactions supérieur appelle ZwRecoverResourceManager.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : le gestionnaire de transactions supérieur doit appeler ZwCommitEnlistment ou ZwRollbackEnlistment pour l’inscription.
REQUÊTE_DE_NOTIFICATION_DE_VALIDATION_TRANSACTION
Lorsqu’il est envoyé : un client appelle ZwCommitTransaction. Si un gestionnaire de transactions supérieur s’est inscrit à cette notification pour une inscription, KTM envoie TRANSACTION_NOTIFY_COMMIT_REQUEST au gestionnaire de transactions supérieur au lieu d’envoyer des TRANSACTION_NOTIFY_COMMIT aux gestionnaires de ressources.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : le gestionnaire de transactions supérieur appelle ZwCommitEnlistment.
RÉSULTAT_DE_LA_DEMANDE_DE_NOTIFICATION_DE_TRANSACTION
Lorsqu’il est envoyé : un gestionnaire de ressources appelle TmRequestOutcomeEnlistment pendant que la transaction est dans son état préparé.
Reçu par : Gestionnaires de transactions supérieurs.
Action requise du destinataire : le gestionnaire de transactions supérieur doit appeler ZwCommitEnlistment ou ZwRollbackEnlistment.
Notifications inutilisées
Les notifications suivantes sont définies dans Ktmtypes.h, mais KTM ne les prend actuellement pas en charge :
TRANSACTION_NOTIFY_DELEGATE_COMMIT
TRANSACTION_NOTIFY_ENLIST_MASK
TRANSACTION_NOTIFY_ENLIST_PREPREPARE
TRANSACTION_NOTIFY_MARSHAL
NOTIFICATION_DE_PROMOTION_DE_TRANSACTION
NOTIFICATION_DE_TRANSACTION_PROMOUVOIR_NOUVEAU
TRANSACTION_NOTIFY_PROPAGATE_PULL
TRANSACTION_NOTIFY_PROPAGATE_PUSH
TRANSACTION_NOTIFY_TM_EN_LIGNE
FINALISER_NOTIFICATION_COMMIT_TRANSACTION