NdisMCmMakeCallComplete 宏 (ndis.h)
NdisMCmMakeCallComplete 返回客户端请求的最终状态,MCM 驱动程序之前NDIS_STATUS_PENDING返回该请求进行传出调用。
语法
void NdisMCmMakeCallComplete(
_S_,
_VH_,
_PH_,
_CC_,
_CP_
);
参数
_S_
指定尝试建立连接的最终状态,NDIS_STATUS_SUCCESS或任何调用方确定NDIS_STATUS_ XXX (NDIS_STATUS_PENDING除外)。
_VH_
指定客户端创建的 VC 的句柄,MCM 驱动程序将其作为其 ProtocolCoCreateVc 函数的输入参数获取,最近从传递给其 ProtocolCmMakeCall 函数的 CallMgrVcContext 获取。
_PH_
指定客户端创建的多点 VC 上初始方句柄,MCM 驱动程序作为其 ProtocolCmMakeCall 函数的输入参数获取该句柄。 如果给定的 NdisVcHandle 表示点到点 VC,则此参数为 NULL。
_CC_
指定调用方分配的常驻上下文区域的句柄,其中 MCM 驱动程序将维护每方状态信息;如果 NdisPartyHandle 为 NULL,则此参数为 NULL。 对于多点 VC,NDIS 会在所有后续调用中将此 MCM 驱动程序提供的 CallManagerPartyContext 句柄传递给涉及此方的 ProtocolCmXxx 函数。 如果 Status 不是NDIS_STATUS_SUCCESS,则 NDIS 将忽略此参数。
_CP_
指向 CO_CALL_PARAMETERS 类型的结构的指针,该结构指定在 状态 为NDIS_STATUS_SUCCESS时为此连接设置的调用参数。
返回值
无
备注
仅当 MCM 驱动程序准备好在 VC 上进行数据传输时,才应使用 NDIS_STATUS_SUCCESS 调用 NdisMCmMakeCallComplete 。 也就是说,MCM 驱动程序已与网络协商以建立 VC 的调用参数,为这些调用参数设置 NIC,并调用 NdisMCmActivateVc 以通知 NDIS VC 激活。
如果 MCM 驱动程序的 ProtocolCmMakeCall 函数以前为给定的 NdisVcHandle 返回NDIS_STATUS_PENDING,则必须调用 NdisMCmMakeCallComplete。发起挂起的传出调用的客户端无法使用 VC 进行传输,直到微型端口驱动程序使用 NDIS_STATUS_SUCCESS 调用 NdisMCmMakeCallComplete。
即使尝试的连接失败,在 MCM 驱动程序对 NdisMCmMakeCallComplete 的调用导致调用该客户端之前,NDIS 和客户端都无法释放它们分配的资源以保持状态 ProtocolClMakeCallComplete 函数。 事实上,对于尝试设置此类连接的失败,忽略调用 NdisMCmMMakeCallComplete 也会导致 MCM 驱动程序中的内存泄漏;它会阻止客户端拆解为其失败的传出调用而创建的 VC,因此不会调用 MCM 驱动程序的 ProtocolCoDeleteVc 函数来释放为该 VC 分配的微型端口驱动程序的资源。
如果 MCM 驱动程序为 Status 传递错误(如NDIS_STATUS_FAILURE),则当 NdisMCmMakeCallComplete 返回控件时,它必须认为 NdisPartyHandle(如果有)无效。 在 NdisMCmMakeCallComplete 返回控制权后,CM 可以释放 (或重新初始化以供重用) 它分配的任何资源来维护给定参与方的状态。 随后将调用 MCM 驱动程序的 ProtocolCoDeleteVc 函数,以释放微型端口驱动程序分配的任何资源,以便每当 MCM 驱动程序将错误状态传递给 NdisMCmMakeCallComplete 时,都会释放微型端口驱动程序为跟踪客户端创建的 VC 的状态而分配的任何资源。
在设置客户端发起的传出调用的过程中,MCM 驱动程序可以修改最初传入其 ProtocolCmMakeCall 函数的客户端提供的调用参数。 如果存在,MCM 驱动程序必须在调用 NdisMCmMakeCallComplete 时在 CallParameters 的缓冲区中传递其修改。 如果客户端发现这些修改后的调用参数不可接受,则会取消调用,这也会导致调用 MCM 驱动程序的 ProtocolCoDeleteVc 函数。
只有提供集成呼叫管理支持的面向连接的微型端口驱动程序才能调用 NdisMCmMakeCallComplete。 独立调用管理器(将自己注册到 NDIS 作为协议驱动程序)改为调用 NdisCmMakeCallComplete 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持 NDIS 6.0 和 NDIS 5.1 驱动程序 (请参阅 Windows Vista 中的 NdisMCmMakeCallComplete (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisMCmMakeCallComplete (NDIS 5.1) ) 。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_MCM_Function (ndis) |