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
基础微型端口驱动程序由于微型端口驱动程序确定的原因而未能创建 VC,NDIS 已传播到调用方。

备注

客户端或独立调用管理器使用 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) ) 。
目标平台 桌面
Header ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_Connection_Function (ndis)

另请参阅

MiniportCoCreateVc

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCmDispatchIncomingCall

NdisCoDeleteVc

NdisMCmCreateVc

ProtocolCmRegisterSap

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists