Share via


Deactivating a VC (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 call manager calls NdisCmDeactivateVcas an essential step in closing either an outgoing or incoming call, usually after the packet exchange with network components that tears down the call (see Client-Initiated Request to Close a Calland Incoming Request to Close a Call). An MCM driver does the same thing by calling NdisMCmDeactivateVc.

The call to NdisCmDeactivateVccauses NDIS to call the underlying NIC driver's MiniportCoDeactivateVc function (see the following figure). MiniportCoDeactivateVc communicates with its network adapter to terminate all communication across this VC (for example, clearing receive or send buffers on the adapter).

Before it deactivates a VC, the miniport driver must complete any pending transfers on the VC. That is, the miniport driver must wait until it has completed all sends in progress and until all receive packets that it has indicated are returned to it. After deactivating the VC, the miniport driver cannot indicate receives or transmit sends on the VC.

Note that MiniportCoDeactivateVcdoes not delete the VC. The creator (client, call manager, or MCM driver) of a particular VC that will not be reused calls NdisCoDeleteVcto destroy that VC (see Deleting a VC). A deactivated VC can be reactivated by a connection-oriented client, a call manager, or an MCM driver (see Activating a VC).

MiniportCoDeactivateVccan complete synchronously or asynchronously. A call to NdisMCoDeactivateVcComplete. causes NDIS to call the ProtocolCmDeactivateVcCompletefunction of the call manager that originally requested the VC deactivation. Completion of the deactivation means that all call parameters for the VC used on activation are no longer valid. Any further use of the VC is prohibited except to reactivate it with a new set of call parameters.

An MCM driver's call to NdisMCmDeactivateVcinforms NDIS that it has deactivated a VC or changed the call parameters on an established VC (see the following figure). NDIS completes the deactivation sequence by calling the MCM driver's ProtocolCmDeactivateVcComplete function.

An MCM driver does not call NdisMCmDeactivateVcto deactivate VCs used for exchanging signaling messages between the MCM driver and network components such as a switch. An MCM driver deactivates a signaling VC internally without calling any NdisXxx function.

 

 

Send comments about this topic to Microsoft