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 时,呼叫管理器会将它保存在由 CallMgrAfContext 指定的每个 AF 状态的 AF 句柄,该句柄作为输入参数传递给其 ProtocolCmRegisterSap 函数。
[in] ProtocolVcContext
指定调用方提供的常驻上下文区域的句柄,调用方在其中维护此 VC 的状态。 如果对 NdisCoCreateVc 的调用成功,则 NDIS 会在有关此终结点的所有后续调用中将此句柄传递回 VC 创建者。
[in, out] NdisVcHandle
指向调用 NdisCoCreateVc 时必须初始化为 NULL 的调用方提供的变量的指针。 从成功调用返回时,这指向一个变量,NDIS 已将其设置为新创建的 VC 的句柄。 调用方必须保存此句柄,以便后续调用面向连接的 Ndis Xxx 函数。
返回值
NdisCoCreateVc 可以返回下列值之一:
返回代码 | 说明 |
---|---|
|
NDIS 已成功创建 VC。 |
|
NDIS 无法分配足够的内存来设置 VC。 |
|
给定 的 NdisAfHandle 无效。 |
|
基础微型端口驱动程序未能创建 VC,原因是 NDIS 已将微型端口驱动程序传播到调用方。 |
注解
客户端或独立调用管理器使用 NdisCoCreateVc 创建 VC,具体取决于 VC 分别表示传出呼叫还是传入呼叫。
在 VC 创建过程中,NDIS 向客户端、调用管理器和两个协议驱动程序都绑定到的微型端口驱动程序提供 NdisVcHandle 。 此句柄标识客户端、调用管理器和微型端口驱动程序的虚拟线路,有关给定 VC 的后续请求将定向到该虚拟线路。 每个驱动程序都必须将此 VC 句柄视为不透明的变量,并在后续调用某些面向连接的 NDIS 库函数时将其传递未经修改和解释。
通常, NdisCoCreateVc 的调用方将返回的 NdisVcHandle 存储在调用方分配的状态区域中 ProtocolVcContext 。 NDIS 将此句柄作为输入参数传递给每次创建 VC 时涉及的其他两个驱动程序的 ProtocolCoCreateVc 和 MiniportCoCreateVc 函数。
若要发出传出呼叫,客户端必须首先调用 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) |