Partager via


Détachement de module réseau

Une paire de modules réseau attachée est détachée l’une de l’autre lorsque le module client ou le module fournisseur se désinscrit auprès du bureau d’enregistrement de modules réseau (NMR). Un module client se désinsère auprès de la RMN en appelant la fonction NmrDeregisterClient et un module fournisseur désinsregistre avec la NMR en appelant la fonction NmrDeregisterProvider . Le diagramme suivant illustre les modules réseau qui lancent la désinscription.

Diagramme montrant les modules réseau qui lancent le processus de désinscription.

Lorsque l’un des modules réseau s’inscrit avec la RMN, la RMN appelle à la fois la fonction de rappel ClientDetachProvider du module client et la fonction de rappel ProviderDetachClient du module fournisseur pour lancer le détachement du module réseau. Le diagramme suivant illustre la RMN à l’origine du détachement.

Diagramme montrant la RMN initiant le détachement des modules réseau.

Si le module client ne parvient pas à se détacher immédiatement du module fournisseur, il appelle la fonction NmrClientDetachProviderComplete une fois qu’il a terminé de se détacher du module fournisseur. De même, si le module fournisseur ne peut pas se détacher immédiatement du module client, il appelle la fonction NmrProviderDetachClientComplete une fois qu’il a terminé de se détacher du module client. Le diagramme suivant illustre les modules réseau qui terminent le détachement.

Diagramme illustrant les modules réseau qui terminent le processus de détachement.

Une fois que le module client et le module fournisseur ont terminé le détachement l’un de l’autre, la RMN appelle la fonction de rappel ClientCleanupBindingContext du module client et la fonction de rappel ProviderCleanupBindingContext du module fournisseur afin que les modules réseau puissent propre leurs contextes de liaison respectifs pour la pièce jointe. Le diagramme suivant illustre le nettoyage initial de la RMN.

Diagramme montrant le nettoyage de la RMN après le détachement des modules réseau.

Si le module client a été désinscrit avec la RMN, la désinscription du module client n’est pas terminée tant que le module client n’a pas complètement détaché de tous les modules du fournisseur auxquels il était précédemment attaché et que tous ces modules de fournisseur n’ont pas été complètement détachés du module client. Le module client attend que la désinscription se termine en appelant la fonction NmrWaitForClientDeregisterComplete . De même, si le module fournisseur a été désinscrit auprès de la RMN, la désinscription du module fournisseur n’est pas terminée tant que le module fournisseur n’est pas complètement détaché de tous les modules clients auxquels il était précédemment attaché et que tous ces modules clients n’ont pas été complètement détachés du module fournisseur. Le module fournisseur attend que la désinscription se termine en appelant la fonction NmrWaitForProviderDeregisterComplete . Le diagramme suivant illustre les modules réseau en attente de la fin de la désinscription.

Diagramme montrant les modules réseau en attente d’achèvement de la désinscription.