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 已成功创建 VC。 |
|
NDIS 无法分配足够的内存来设置 VC。 |
|
给定 的 NdisAfHandle 无效。 |
|
基础微型端口驱动程序由于微型端口驱动程序确定的原因(NDIS 已传播到调用方)导致创建 VC 失败。 |
注解
客户端或独立调用管理器使用 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) |