Share via


Client-Initiated 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.

If a client is closing a multipoint call to which more than one party is still connected, it must first call NdisClDropPartyas many times as necessary to drop all but the last party from the call (see Dropping a Party from a Multipoint Call).

A client initiates the closing of a call with NdisClCloseCall. The following figure shows a client initiating the closing of a call through a call manager.

The next figure shows a client initiating the closing of a call through an MCM driver.

A connection-oriented client usually calls NdisClCloseCall in any one of the following circumstances:

A client's call to NdisClCloseCall causes NDIS to call the call manager's or MCM driver's ProtocolCmCloseCallfunction. ProtocolCmCloseCall must communicate with network control devices to terminate a connection between the local node and a remote node.

If ProtocolCmCloseCall is passed an explicit CallMgrPartyContext, then the call being terminated is a multipoint call. The call manager or MCM driver must perform any necessary network communication with its networking hardware, as appropriate to its media type, to terminate the call as a multipoint call.

NDIS can pass ProtocolCmCloseCall a pointer to a buffer containing data supplied by the client in the call to NdisClClose. This data can be diagnostic data indicating why the call was closed or any other data required by the signaling protocol. ProtocolCmCloseCall must send any such data across the network before completing the call termination. If sending data concurrent with a connection being terminated is not supported, a call manager or MCM driver should return NDIS_STATUS_INVALID_DATA.

ProtocolCmCloseCall can complete synchronously or, more probably, asynchronously with NdisCmCloseCallComplete (in the case of a call manager) or NdisMCmCloseCallComplete (in the case of an MCM driver). A call to Ndis(M)CmCloseCallComplete causes NDIS to call the client's ProtocolClCloseCallComplete function.

The call manager or MCM driver must then initiate deactivation of the VC used for the call by respectively calling NdisCmDeactivateVc or NdisMCmDeactivateVc (see Deactivating a VC). The creator of the VC (client, call manager, or MCM driver) can then optionally initiate deletion of the VC (see Deleting a VC).

 

 

Send comments about this topic to Microsoft