Incoming Request to Close a 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.
When the remote client closes a call, the local call manager or MCM driver must indicate this incoming request to the local client. To indicate such a request, a call manager calls NdisCmDispatchIncomingCloseCall with the CloseStatusset to NDIS_STATUS_SUCCESS (see the following figure).
An MCM driver calls NdisMCmDispatchIncomingCloseCallto indicate an incoming request to close a call (see the following figure).
A call manager or MCM driver also can call NdisMCmDispatchIncomingCloseCall in the following situations:
From its ProtocolCmIncomingCallComplete function if it determines that the connection-oriented client is requesting an unacceptable change in call parameters in response to an incoming call previously indicated by the call manager or MCM driver (see Incoming Request to Change Call Parameters).
If abnormal network conditions force the call manager to tear down active calls.
The call to NdisMCmDispatchIncomingCloseCall causes NDIS to call the ProtocolClIncomingCloseCall function of the connection-oriented client on that connection. ProtocolClIncomingCloseCall should carry out any protocol-determined operations, such as notifying its own client or clients that the connection is being broken. If the call to be closed is a multipoint VC created by the client, ProtocolClIncomingCloseCall must call NdisClDropParty one or more times until only a single party remains on the VC (see Dropping a Party from a MultipointCall).
ProtocolClIncomingCloseCall must then call NdisClCloseCall (with the handle to the last party on the VC if the VC is a multipoint VC created by the client) to acknowledge that the client will no longer attempt to send or expect to receive data on this particular VC. If the call manager or MCM driver created this VC, ProtocolClIncomingCloseCall should return control after it calls NdisClCloseCall. The call manager or MCM driver must also deactivate the VC (see Deactivating a VC).
If the client originally created this VC for an outgoing call and CloseStatus is NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall can optionally tear down the VC with NdisCoDeleteVc (see Deleting a VC) or reuse the VC for another call. If CloseStatus is not NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall must call NdisCoDeleteVc.
If the call manager or MCM driver originally created this VC for an incoming call, the call manager or MCM driver can optionally delete the VC by respectively calling NdisCoDeleteVc or NdisMCmDeleteVc (see Deleting a VC).