Share via


Creating 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.

Before making an outgoing call, a connection-oriented client initiates the creation a virtual connection (VC). Before indicating an incoming call to a connection-oriented client, a call manager or an MCM driver initiates the creation of a VC . After the VC has been set up and activated, client data can be transmitted and/or received on the VC.

A call manager or an MCM driver can also initiate the creation of a VC on which signaling messages are exchanged with network components, such as a network switch.

Client-Initiated Creation of a VC (NDIS 5.1)

Before making a call with NdisClMakeCall(see Making a Call), a connection-oriented client calls NdisCoCreateVcto initiate the creation of a VC.

The following figure shows a client of a call manager initiating the creation of a VC.

The following figure shows a client of an MCM driver initiating the creation of a VC.

When a connection-oriented client of a call manager calls NdisCoCreateVc, NDIS calls, as a synchronous operation, the ProtocolCoCreateVCfunction of the call manager and the MiniportCoCreateVc function of the underlying miniport driver (see Client-Initiated Creation of a VC (Call Manager Present)). NDIS passes to both ProtocolCoCreateVC and MiniportCoCreateVc an NdisVcHandlethat represents the VC. If the call to NdisCoCreateVcis successful, NDIS returns the NdisVcHandleto NdisCoCreateVc.

ProtocolCoCreateVC allocates and initializes any dynamic resources and structures that the call manager requires to perform subsequent operations on a VC that will be activated. MiniportCoCreateVc allocates and initializes any resources that the miniport driver requires to maintain state information about the VC. Both ProtocolCoCreateVC and MiniportCoCreateVc store the NdisVcHandle.

When a connection-oriented client of an MCM driver, the call to NdisCoCreateVc causes NDIS to call the MCM driver's ProtocolCoCreateVC function (see Client-Initiated Creation of a VC (MCM Driver Present)). In this case, ProtocolCoCreateVC performs the necessary allocation and initialization of resources for the VC. There is no call (internal or otherwise) to MiniportCoCreateVc, since an MCM driver does not supply such a function.

Call -Manager--Initiated Creation of a VC (NDIS 5.1)

Before indicating an incoming call to a connection-oriented client with NdisCmDispatchIncomingCall(see Indicating an Incoming Call), a call manager calls NdisCoCreateVcto initiate the creation of a VC (see the following figure).

When a call manager calls NdisCoCreateVc, NDIS calls, as a synchronous operation, the ProtocolCoCreateVC function of the connection-oriented client that registered the SAP on which the call is being received, as well as the MiniportCoCreateVc function of the underlying miniport. NDIS passes to both ProtocolCoCreateVC and MiniportCoCreateVc an NdisVcHandlethat represents the VC. If the call to NdisCoCreateVcis successful, NDIS returns the NdisVcHandleto NdisCoCreateVc.

MCM Driver-Initiated Creation of a VC (NDIS 5.1)

Before indicating an incoming call to a connection-oriented client with NdisMCmDispatchIncomingCall(see Indicating an Incoming Call), an MCM driver calls NdisMCmCreateVcto initiate the creation of a VC (see the following figure).

When an MCM driver calls NdisMCmCreateVc, NDIS calls, as a synchronous operation before NdisMCmCreateVcreturns, the ProtocolCoCreateVCfunction of the connection-oriented client that registered the SAP on which the call is being received. NDIS passes to ProtocolCoCreateVC an NdisVcHandlethat represents the VC. If the call to NdisMCmCreateVcis successful, NDIS returns the NdisVcHandleto NdisMCmCreateVc.

ProtocolCoCreateVC allocates and initializes any dynamic resources and structures that the client requires to perform subsequent operations on the VC. ProtocolCoCreateVC also stores the NdisVcHandle.

Note that when an MCM driver creates a VC for exchanging signaling messages with a network component, it does not use NdisXxx calls to create a VC. In fact, an MCM driver does not use NdisXxx calls to create, activate, deactivate, or delete such VCs. Instead, an MCM driver performs these operations internally. Such VCs are therefore opaque to NDIS.

 

 

Send comments about this topic to Microsoft