Share via


Desanexação do módulo de rede

Um par anexado de módulos de rede é desanexado um do outro quando o módulo cliente ou o módulo do provedor desregistram com o NMR (Registrador de Módulos de Rede). Um módulo cliente desregistre com o NMR chamando a função NmrDeregisterClient e um módulo de provedor desregistros com o NMR chamando a função NmrDeregisterProvider . O diagrama a seguir ilustra os módulos de rede que iniciam o cancelamento do registro.

Diagrama mostrando módulos de rede iniciando o processo de cancelamento do registro.

Quando um dos módulos de rede desregistre com o NMR, a NMR chama a função de retorno de chamada ClientDetachProvider do módulo cliente e a função de retorno de chamada ProviderDetachClient do módulo do provedor para iniciar a desanexação do módulo de rede. O diagrama a seguir ilustra o NMR iniciando o desanexamento.

Diagrama mostrando o NMR iniciando o desanexamento de módulos de rede.

Se o módulo cliente não puder se desanexar do módulo do provedor imediatamente, ele chamará a função NmrClientDetachProviderComplete depois de concluir a desanexação do módulo do provedor. Da mesma forma, se o módulo do provedor não puder se desanexar do módulo cliente imediatamente, ele chamará a função NmrProviderDetachClientComplete depois de concluir a desanexação do módulo cliente. O diagrama a seguir ilustra os módulos de rede que completam o desanexamento.

Diagrama ilustrando módulos de rede concluindo o processo de desanexação.

Depois que o módulo cliente e o módulo do provedor tiverem concluído a desanexação entre si, o NMR chamará a função de retorno de chamada ClientCleanupBindingContext do módulo cliente e a função de retorno de chamada ProviderCleanupBindingContext do módulo de provedor para que os módulos de rede possam limpo seus respectivos contextos de associação para o anexo. O diagrama a seguir ilustra a limpeza de início de NMR.

Diagrama exibindo a limpeza de início de NMR após a desanexação dos módulos de rede.

Se o módulo cliente tiver sido desregistrado com o NMR, o cancelamento do registro do módulo cliente não será concluído até que o módulo cliente tenha desanexado completamente de todos os módulos do provedor aos quais ele foi anexado anteriormente e todos esses módulos de provedor tenham se desanexado completamente do módulo cliente. O módulo cliente aguarda a conclusão do cancelamento do registro chamando a função NmrWaitForClientDeregisterComplete . Da mesma forma, se o módulo do provedor tiver sido desregistrado com a NMR, o cancelamento do registro do módulo do provedor não será concluído até que o módulo do provedor tenha desanexado completamente de todos os módulos cliente aos quais ele foi anexado anteriormente e todos esses módulos de cliente tenham desanexado completamente do módulo do provedor. O módulo do provedor aguarda a conclusão do cancelamento do registro chamando a função NmrWaitForProviderDeregisterComplete . O diagrama a seguir ilustra os módulos de rede aguardando a conclusão do cancelamento do registro.

Diagrama mostrando módulos de rede aguardando a conclusão do cancelamento do registro.