NdisCmActivateVc 函数 (ndis.h)

NdisCmActivateVc 将特定 VC 的 CM 提供的调用参数(包括媒体参数)传递到基础微型端口驱动程序。

语法

NDIS_STATUS NdisCmActivateVc(
  [in]      NDIS_HANDLE         NdisVcHandle,
  [in, out] PCO_CALL_PARAMETERS CallParameters
);

参数

[in] NdisVcHandle

指定标识要设置调用参数的 VC 的句柄。 调用管理器为传入调用从 NdisCoCreateVc 获取此句柄,或者作为客户端发起的传出调用的 ProtocolCoCreateVc 函数的输入参数。

[in, out] CallParameters

指向 CM 分配的驻留缓冲区的指针,该缓冲区的格式设置为 CO_CALL_PARAMETERS 类型的结构,其中包含基础微型端口驱动程序用于 VC 激活的所有特定于媒体的参数。

返回值

NdisCmActivateVc 返回除 NDIS_STATUS_PENDING 以外的任何内容时,调用管理器应对其进行内部调用 ProtocolCmActivateVcComplete 函数。 否则,完成此操作时,NDIS 会调用 CM 的 ProtocolCmActivateVcComplete 函数。

注解

NdisCmActivateVc 通知基础微型端口驱动程序在新建的 VC 上设置呼叫和媒体参数或更改已建立的 VC 的参数。 NDIS 将给定的调用参数和 VC 句柄转发到基础微型端口驱动程序的 MiniportCoActivateVc 函数,该函数设置所有必要的资源来跟踪 VC 的状态,并使自身和 NIC 准备好在 VC 上传输数据。

独立 CM 始终在 VC 上建立连接之后、在该 VC 上发送或接收任何数据之前调用 NdisCmActivateVc 。 在连接期间,CM 可以使用与网络条件更改和/或客户端调用 NdisClModifyCallQoS 相同的 NdisVcHandle 多次调用 NdisCmActivateVc。 每次调用 NdisCmActivateVc 时,基础微型端口驱动程序的 MiniportCoActivateVc 函数都必须执行以下操作之一:

  • 如果微型端口驱动程序可以继续根据新修改的调用参数在 VC 上进行传输,请将微型端口驱动程序维护的关于调用参数的状态更新为调用管理器提供的新值。
  • 如果微型端口驱动程序在给定调用参数的约束下无法继续进行传输,则调用失败。
当基础微型端口驱动程序未能请求设置或重置调用参数时,调用管理器可能会在 CallParameters 中修改其原始规范,并再次调用 NdisCmActivateVc 。 任何调用管理器重复尝试激活 VC 的次数限制取决于实现。

对于客户端发起的传出呼叫,独立 CM 通常会在数据包交换后立即调用 NdisCmActivateVc ,确认与呼叫远程目标的协商协议或在交换机上成功调用设置,然后通知 NDIS (,客户端) 使用 NdisCmMakeCallComplete 完成传出呼叫。 对于传入呼叫,呼叫管理器通常在成功调用 NdisCoCreateVc 之后和调用之前调用 NdisCmActivateVc NdisCmDispatchIncomingCall

在设置传出呼叫的过程中,当任何 VC 保持激活状态时,客户端可以请求更改该 VC 的调用参数,例如,通过调用 NdisClModifyCallQos。 验证任何此类请求的给定调用参数的有效性后,独立调用管理器必须调用 NdisCmActivateVc ,以将修改后的调用参数向下传递到基础微型端口驱动程序。

只有向 NDIS 注册为协议驱动程序的独立调用管理器才能调用 NdisCmActivateVc。 提供集成呼叫管理支持的面向连接的微型端口驱动程序改为调用 NdisMCmActivateVc

要求

要求
最低受支持的客户端 NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 NdisCmActivateVc (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisCmActivateVc (NDIS 5.1) ) 。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_CallManager_Function (ndis)

另请参阅

CO_CALL_PARAMETERS

MiniportCoActivateVc

NdisClMakeCall

NdisClModifyCallQos

NdisCmDeactivateVc

NdisCmDispatchIncomingCall

NdisCoCreateVc

NdisMCmActivateVc

ProtocolCmActivateVcComplete

ProtocolCoCreateVc