虚拟连接的差异
呼叫管理器使用 信号 VC 向网络实体(例如交换机)发送和接收信号消息。 NDIS 可以看到呼叫管理器的信号 VC。 调用管理器必须创建、激活、停用和删除调用 NDIS 的所有 VC。 但是,MCM 驱动程序的信号 VC 对 NDIS 是不透明的。 MCM 驱动程序不会通过调用 NDIS 创建、激活、停用和删除发出信号的 VC。 相反,MCM 驱动程序在内部执行此类操作。 MCM 驱动程序必须调用 NDIS 才能对用于发送或接收客户端数据的 VC 执行操作。 这是因为 NDIS 必须跟踪客户端 VC。
由于 MCM 驱动程序既是调用管理器又是微型端口驱动程序,因此某些面向连接的函数是冗余的。 具体而言, MiniportCoCreateVc 和 MiniportCoDeleteVc 是冗余的,因此不由 MCM 驱动程序提供。 VC 操作由以下操作处理:
当客户端请求创建或删除 VC 时,MCM 驱动程序的 ProtocolCoCreateVc 和 ProtocolCoDeleteVc 函数。
当 MCM 驱动程序激活或停用 VC 时,NdisMCmActivateVc 和 NdisCmDeactivateVc。
MCM 驱动程序必须提供 MiniportCoOidRequest 函数供客户端用于查询或设置微型端口驱动程序信息,并提供 MiniportCoSendNetBufferLists 函数来处理来自客户端的发送操作。