NdisCoCreateVc 函数 (ndis.h)

NdisCoCreateVc 设置一个连接终结点,客户端可以从该终结点发出传出呼叫,独立呼叫管理器可以在该终结点上调度传入呼叫。

语法

NDIS_STATUS NdisCoCreateVc(
  [in]           NDIS_HANDLE  NdisBindingHandle,
  [in, optional] NDIS_HANDLE  NdisAfHandle,
  [in]           NDIS_HANDLE  ProtocolVcContext,
  [in, out]      PNDIS_HANDLE NdisVcHandle
);

参数

[in] NdisBindingHandle

指定 NdisOpenAdapterEx 返回的句柄,该句柄标识调用方绑定到的下一低级驱动程序的目标 NIC 或虚拟适配器。

[in, optional] NdisAfHandle

如果调用方是客户端,则指定 NdisClOpenAddressFamilyEx 返回的句柄。 如果调用管理器正在为自己创建 VC(例如网络交换机的 VC),则将此参数设置为 NULL 。 当它为传入呼叫通知创建 VC 时,呼叫管理器会将保存在其按 AF 状态保存的 AF 句柄传递给其作为输入参数的 CallMgrAfContext 指定 ProtocolCmRegisterSap 函数。

[in] ProtocolVcContext

指定调用方提供的常驻上下文区域的句柄,调用方在其中维护此 VC 的状态。 如果对 NdisCoCreateVc 的调用成功,则 NDIS 会在有关此终结点的所有后续调用中将此句柄传递回 VC 创建者。

[in, out] NdisVcHandle

指向调用方提供的变量的指针,在调用 NdisCoCreateVc 时,该变量必须初始化为 NULL。 从成功调用返回时,这指向 NDIS 已设置为新创建的 VC 句柄的变量。 调用方必须保存此句柄,以便后续调用面向连接的 Ndis Xxx 函数。

返回值

NdisCoCreateVc 可以返回下列值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
NDIS 已成功创建 VC。
NDIS_STATUS_RESOURCES
NDIS 无法分配足够的内存来设置 VC。
NDIS_STATUS_FAILURE
给定 的 NdisAfHandle 无效。
NDIS_STATUS_ XXX
基础微型端口驱动程序由于微型端口驱动程序确定的原因(NDIS 已传播到调用方)导致创建 VC 失败。

注解

客户端或独立调用管理器使用 NdisCoCreateVc 创建 VC,具体取决于 VC 是分别表示传出呼叫还是传入呼叫。

在 VC 创建过程中,NDIS 向客户端、调用管理器和两个协议驱动程序都绑定到的微型端口驱动程序提供 NdisVcHandle 。 此句柄标识客户端、调用管理器和微型端口驱动程序的虚拟线路,随后将针对给定 VC 发出请求。 每个驱动程序必须将此 VC 句柄视为不透明的变量,并在后续调用某些面向连接的 NDIS 库函数时将其未修改和未解释。

通常, NdisCoCreateVc 的调用方将返回的 NdisVcHandle 存储在 ProtocolVcContext 的调用方分配的状态区域中。 NDIS 将此句柄作为输入参数传递给每次创建 VC 时涉及的其他两个驱动程序的 ProtocolCoCreateVcMiniportCoCreateVc 函数。

若要进行传出调用,客户端必须先调用 NdisCoCreateVc 。 作为同步操作,NDIS 在 NdisCoCreateVc 返回控件之前,调用基础微型端口驱动程序的 MiniportCoCreateVc 函数和调用管理器的 ProtocolCoCreateVc 函数。 如果对 NdisCoCreateVc 的调用成功,则客户端可以继续发出传出调用,将返回的 NdisVcHandle 传递给 NdisClMakeCall

当它 ProtocolCoReceiveNetBufferLists 函数处理定向到其注册的某个 SAP 的传入呼叫,调用管理器必须先调用 NdisCoCreateVc 。 作为同步操作,NDIS 在 NdisCoCreateVc 返回控件之前,调用基础微型端口驱动程序的 MiniportCoCreateVc 函数和客户端的 ProtocolCoCreateVc 函数。 如果调用 NdisCoCreateVc 成功,则调用管理器可以继续通知相应的客户端,并将 NdisVcHandle 处返回的值传递给 NdisCmDispatchIncomingCall

向 NDIS 注册为协议驱动程序的独立调用管理器可以调用 NdisCoCreateVc。 提供集成呼叫管理支持的面向连接的微型端口驱动程序改为调用 NdisMCmCreateVc

要求

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

另请参阅

MiniportCoCreateVc

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCmDispatchIncomingCall

NdisCoDeleteVc

NdisMCmCreateVc

ProtocolCmRegisterSap

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists