Dropping a Party from a Multipoint Call (NDIS 5.1)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
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 NdisClDropPartycauses NDIS to call the ProtocolCmDropParty function of the call manager or MCM driver that shares the same NdisVcHandleto 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 containing 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 NdisMCmDropPartyComplete 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 NdisClDropPartywith any valid NdisPartyHandleto 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 NdisPartyHandleto NdisClCloseCall(see Client-Initiated Request to Close a Call).