Creating, Activating, Deactivating, and Deleting Virtual Connections (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 miniport driver always sends and receives data, whether packets for a connection-oriented client or signaling messages for a call manager, on a virtual connection (VC). Before it can send or receive data on a VC, a connection-oriented miniport driver must set up the per-VC context, which involves allocating and initializing memory. The Ndis...NPagedLookasideList functions are recommended for this task. The miniport driver must then activate the VC, which involves doing any processing required by the NIC to satisfy the request. When the VC is no longer needed for a call, the miniport driver deactivates and perhaps deletes the VC.
A connection-oriented miniport driver creates a VC in the following situations:
After the call manager and miniport driver finish their initialization, the call manager calls NdisCoCreateVc to request that the miniport driver set up a VC on which the call manager can send signaling messages. In response to this call, NDIS calls the miniport driver's MiniportCoCreateVc function, which sets up the per-VC context.
When a network administrator manually adds a permanent VC (PVC), the call manager calls NdisCoCreateVc to request that the miniport driver set up the VC.
Before requesting a call manager to set up an outgoing call, a connection-oriented client calls NdisCoCreateVc to request that the miniport driver set up a VC on which to send the call data.
Before indicating an incoming call to a connection-oriented client, a call manager calls NdisCoCreateVc to request that the miniport driver set up a VC on which to receive the call data.
After a call is finished or a VC is otherwise not needed, the call manager or integrated miniport call manager (MCM) can deactivate the VC by calling NdisCmDeactivateVc, which causes NDIS to call the miniport driver's MiniportCoDeactivateVcfunction. Either the connection-oriented client or the call manager can initiate deletion of the VC by calling NdisCoDeleteVc, which causes NDIS to call the miniport driver's MiniportCoDeleteVc function. MiniportCoDeleteVc tears down the per-VC state allocated by the miniport driver.
For more information about miniport driver operations on VCs, and for an overview of the connection-oriented architecture provided by NDIS, see Connection-Oriented NDIS.