Differences in Virtual Connections
A call manager uses signaling VCs to send and receive signaling messages to and from network entities, such as switches. A call manager's signaling VCs are visible to NDIS. The call manager must create, activate, deactivate, and delete all VCs with calls to NDIS. An MCM driver's signaling VCs, however, are opaque to NDIS. An MCM driver does not create, activate, deactivate, and delete signaling VCs with calls to NDIS. Instead, an MCM driver performs such operations internally. An MCM driver must call NDIS to perform operations on VCs that are used to send or receive client data. This is because NDIS must keep track of client VCs.
Because MCM driver is both a call manager and a miniport driver, certain connection-oriented functions are redundant. Specifically, MiniportCoCreateVc and MiniportCoDeleteVc are redundant and are therefore not supplied by an MCM driver. VC operations are handled by:
An MCM driver's ProtocolCoCreateVc and ProtocolCoDeleteVc functions when a client requests the creation or deletion of a VC.
NdisMCmCreateVc and NdisMCmDeleteVc when the MCM driver creates or deletes a VC.
NdisMCmActivateVc and NdisCmDeactivateVc when the MCM driver activates or deactivates a VC.
An MCM driver must supply a MiniportCoOidRequest function for a client to use in querying or setting miniport driver information, and a MiniportCoSendNetBufferLists function to handle send operations from a client.