NdisMCmCreateVc 函数 (ndis.h)

NdisMCmCreateVc 设置一个连接终结点,MCM 驱动程序可以在该终结点上将传入呼叫产品/服务调度到客户端。

语法

NDIS_STATUS NdisMCmCreateVc(
  [in]  NDIS_HANDLE  MiniportAdapterHandle,
  [in]  NDIS_HANDLE  NdisAfHandle,
  [in]  NDIS_HANDLE  MiniportVcContext,
  [out] PNDIS_HANDLE NdisVcHandle
);

参数

[in] MiniportAdapterHandle

指定最初输入 到 MiniportInitializeEx 的 NDIS 提供的句柄。

[in] NdisAfHandle

指定标识作为传入调用目标的客户端的句柄。 MCM 驱动程序获取此句柄作为其 ProtocolCmOpenAf 函数的输入参数。

[in] MiniportVcContext

指定调用方提供的常驻上下文区域的句柄,MCM 驱动程序在其中维护此 VC 的状态。 如果对 NdisMCmCreateVc 的调用成功,则 NDIS 将此句柄传回有关此 VC 的所有后续调用中。

[out] NdisVcHandle

指向调用方提供的变量的指针,在调用 NdisMCmCreateVc 之前,该变量必须初始化为 NULL。 成功调用返回后,此变量已设置为新创建的 VC 的 NDIS 提供的句柄。 调用方必须保存此句柄,以便后续调用与此 VC 相关的面向连接的 NdisXxx 函数。

返回值

NdisMCmCreateVc 可以返回下列值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
NDIS 已成功创建 VC。
NDIS_STATUS_RESOURCES
NDIS 无法分配足够的内存来设置 VC。
NDIS_STATUS_FAILURE
给定 的 NdisAfHandle 无效。
NDIS_STATUS_XXX
客户端由于某种原因未能创建 VC,并且 NDIS 已将其 ProtocolCoCreateVc 函数返回的错误状态传播到 MCM 驱动程序。

注解

MCM 驱动程序使用 NdisMCmCreateVc 创建 VC ,表示从远程节点定向到已向 MCM 驱动程序注册的 SAP 的传入连接。

在 VC 创建过程中,NDIS 向客户端和 MCM 驱动程序提供 NdisVcHandle 。 此句柄标识客户端和微型端口驱动程序的虚拟连接,随后有关给定 VC 的请求将定向到该连接。 每个驱动程序必须将此 VC 句柄视为不透明的变量,并在后续调用某些面向连接的 NDIS 库函数时将其未修改和未解释。

通常, NdisMCmCreateVc 的调用方将返回的 NdisVcHandle 存储在 MiniportVcContext 的调用方分配的状态区域中。 每当 MCM 驱动程序创建 VC 时,NDIS 会将 NdisVcHandle 作为输入参数传递给相应客户端的 ProtocolCoCreateVc 函数。

当 MCM 驱动程序处理定向到其已注册的 SAP 之一的传入呼叫时,它必须首先调用 NdisMCmCreateVc 。 作为同步操作,NDIS 在 NdisMCmCreateVc 返回控件之前调用客户端的 ProtocolCoCreateVc 函数。 如果 MCM 对 NdisMCmCreateVc 的调用成功,MCM 驱动程序可以继续通知相应的客户端,并将 NdisVcHandle 处返回的值传递给 NdisMCmDispatchIncomingCall

驱动程序编写器确定 MCM 驱动程序是否具有 (内部) MiniportCoCreateVc 函数,驱动程序在为传出和传入呼叫设置连接时调用该函数。

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

要求

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

另请参阅

MiniportCoCreateVc

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCoCreateVc

NdisMCmDeleteVc

NdisMCmDispatchIncomingCall

ProtocolCmRegisterSap

ProtocolCoCreateVc