Dropping a Party from a Multipoint Call
A connection-oriented client that serves as the root of a multipoint call must eventually drop each party from that call with NdisClDropParty or NdisClCloseCall.
A client drops a party from a call in the following situations:
Before initiating the tear down of a multipoint call with NdisClCloseCall(see Client-Initiated Request to Close a Call), a client must drop all but the last party with successive calls to NdisClDropParty. The client specifies the last party to drop from the call with NdisClCloseCall.
In response to a remote party's request to be dropped from a multipoint call (see Incoming Request to Drop a Party from a Multipoint Call), a client, from its ProtocolClIncomingDropParty function, calls NdisClDropParty.
A client's call to NdisClDropParty causes NDIS to call the ProtocolCmDropParty function of the call manager or MCM driver that shares the same NdisVcHandle to the multipoint VC.
The following figure shows the client of a call manager requesting to drop a party from a multipoint call.
The next figure shows the client of an MCM driver requesting to drop a party from a multipoint call.
ProtocolCmDropParty communicates with network control devices to drop a party from an existing multipoint call. NDIS can pass to ProtocolCmDropParty a pointer to a buffer that contains data (supplied to the client in the call to NdisClDropParty). ProtocolCmDropParty must send any such data across the network before the connection is dropped.
ProtocolCmDropParty can complete synchronously, or more probably, asynchronously with NdisCmDropPartyComplete, in the case of a call manager, or NdisMCmDropPartyComplete, in the case of an MCM driver.
The call to Ndis(M)CmDropPartyComplete causes NDIS to call the client's ProtocolClDropPartyComplete function. If the client is in the process of tearing down a multipoint VC that it created, ProtocolClDropPartyComplete can call NdisClDropParty with any valid NdisPartyHandle to one of the remaining parties on the client's active multipoint VC. If only one party remains on its multipoint VC, the client should drop that party by passing its NdisPartyHandle to NdisClCloseCall(see Client-Initiated Request to Close a Call).