Поделиться через


Отсоединение сетевого модуля

Присоединенная пара сетевых модулей отсоединяется друг от друга, когда клиентский модуль или модуль поставщика отменяет регистрацию в регистраторе сетевых модулей (NMR). Клиентский модуль отменяет регистрацию в NMR путем вызова функции NmrDeregisterClient , а модуль поставщика отменяет регистрацию в NMR путем вызова функции NmrDeregisterProvider . На следующей схеме показаны сетевые модули, инициирующие отмену регистрации.

Схема, показывающая сетевые модули, инициирующие процесс отмены регистрации.

Когда любой сетевой модуль отменяет регистрацию в NMR, nmR вызывает функцию обратного вызова ClientDetachProvider клиентского модуля и функцию обратного вызова ProviderDetachClient модуля поставщика, чтобы инициировать отсоединение сетевого модуля. На следующей схеме показан nmr, инициирующий отсоединение.

Схема, показывающая, как ЯМР инициирует отсоединение сетевых модулей.

Если клиентскому модулю не удается отсоединиться от модуля поставщика немедленно, он вызывает функцию NmrClientDetachProviderComplete после завершения отсоединения от модуля поставщика. Аналогичным образом, если модуль поставщика не может отсоединить себя от клиентского модуля немедленно, он вызывает функцию NmrProviderDetachClientComplete после завершения отсоединения от клиентского модуля. На следующей схеме показаны сетевые модули, завершающие отсоединение.

Схема: сетевые модули, завершающие процесс отсоединения.

После завершения отсоединения модуля клиента и модуля поставщика nmR вызывает функцию обратного вызова ClientCleanupBindingContext клиентского модуля и функцию обратного вызова ProviderCleanupBindingContext модуля поставщика, чтобы сетевые модули могли очистить соответствующие контексты привязки для вложения. На следующей схеме показан процесс, инициирующий очистку nmr.

Схема, показывающая, как nmr инициирует очистку после отсоединения сетевых модулей.

Если клиентский модуль не зарегистрирован в NMR, отмена регистрации клиентского модуля не будет завершена до тех пор, пока клиентский модуль полностью не отсоединится от всех модулей поставщика, к которым он был ранее подключен, и все эти модули поставщика полностью отсоединились от клиентского модуля. Клиентский модуль ожидает завершения отмены регистрации путем вызова функции NmrWaitForClientDeregisterComplete . Аналогичным образом, если модуль поставщика не зарегистрирован в NMR, отмена регистрации модуля поставщика не будет завершена до тех пор, пока модуль поставщика полностью не отсоединится от всех клиентских модулей, к которым он был ранее подключен, и все эти клиентские модули полностью отсоединились от модуля поставщика. Модуль поставщика ожидает завершения отмены регистрации путем вызова функции NmrWaitForProviderDeregisterComplete . На следующей схеме показаны сетевые модули, ожидающие завершения отмены регистрации.

Схема, показывающая сетевые модули, ожидающие завершения отмены регистрации.