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


Удаление участника из многоточечных вызовов

Клиент, ориентированный на подключение, который выступает в качестве корня многоточечных вызовов, должен в конечном итоге удалить каждую сторону из этого вызова с помощью NdisClDropParty или NdisClCloseCall.

Клиент удаляет сторону из звонка в следующих ситуациях:

Вызов клиента к NdisClDropParty приводит к тому, что NDIS вызывает функцию ProtocolCmDropParty диспетчера вызовов или драйвера MCM, который совместно использует один и тот же NdisVcHandle для многоточечных VC.

На следующем рисунке показан клиент диспетчера вызовов, запрашивающий удалить сторону из многоточечных вызовов.

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

На следующем рисунке показан клиент драйвера MCM, запрашивающего удалить сторону из многоточежного вызова.

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

ProtocolCmDropParty взаимодействует с устройствами управления сетью, чтобы удалить сторону из существующего многоточечных вызовов. NDIS может передать ProtocolCmDropParty указатель на буфер, содержащий данные (предоставленные клиенту в вызове NdisClDropParty). ProtocolCmDropParty должен отправлять такие данные по сети перед разрывом подключения.

ProtocolCmDropParty может выполняться синхронно или, что более вероятно, асинхронно с NdisCmDropPartyComplete в случае диспетчера вызовов или NdisMCmDropPartyComplete в случае драйвера MCM.

Вызов Ndis(M)CmDropPartyComplete вызывает функцию ProtocolClDropPartyComplete клиента. Если клиент находится в процессе удаления созданной им многоточеевой виртуальной машины, ProtocolClDropPartyComplete может вызвать NdisClDropPartyParty с любым допустимым NdisPartyHandle одной из оставшихся сторон в активном многоточеном VC клиента. Если в VC с несколькими точками остается только одна сторона, клиент должен удалить ее, передав NdisPartyHandleв NdisCloseCall (см. запрос на закрытие вызова, инициированный клиентом).