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 驱动程序将维护每方状态信息;如果 NdisPartyHandleNULL,则此参数 NULL。 对于多点 VC,NDIS 将此 MCM 驱动程序提供的 CallManagerPartyContext 句柄传递给与此方相关的 ProtocolCmXxx 函数的所有后续调用。 如果 状态 不是NDIS_STATUS_SUCCESS,NDIS 将忽略此参数。
_CP_
指向类型 CO_CALL_PARAMETERS 结构的指针,该结构指定 状态 NDIS_STATUS_SUCCESS时为此连接设置的调用参数。
返回值
没有
言论
仅当 MCM 驱动程序准备好在 VC 上传输数据传输时,才应使用 NDIS_STATUS_SUCCESS 调用 NdisMCmMakeCallComplete。 也就是说,MCM 驱动程序已与网络协商,以建立 VC 的调用参数,为这些调用参数设置 NIC,并调用 NdisMCmActivateVc 以通知 NDIS VC 激活。
MCM 驱动程序必须调用 NdisMCmMakeCallComplete(如果其 ProtocolCmMakeCall 函数之前为给定 的 NdisVcHandle 返回NDIS_STATUS_PENDING)。发起挂起传出调用的客户端无法使用 VC 进行传输,直到微型端口驱动程序调用 NdisMCmMakeCallComplete NDIS_STATUS_SUCCESS。
即使尝试的连接失败,NDIS 和客户端都无法释放分配给维护状态的资源,直到 MCM 驱动程序调用 NdisMCmMakeCallComplete 导致对该客户端的调用 ProtocolClMakeCallComplete 函数。 事实上,忽略调用 NdisMCmMakeCallComplete 尝试设置此类连接失败会导致 MCM 驱动程序中的内存泄漏;它阻止客户端将其为失败的传出调用创建的 VC 拆毁,因此不会调用 MCM 驱动程序的 ProtocolCoDeleteVc 函数来释放为该 VC 分配的微型端口驱动程序的资源。
如果 MCM 驱动程序为 状态传递错误(如 NDIS_STATUS_FAILURE),则当 NdisMCmMakeCallComplete 返回控件时,它必须考虑 NdisPartyHandle无效。 CM 可以在 NdisMCmMakeCallComplete 返回控制权后释放(或重新初始化以重复使用)分配给给定方的任何资源。 MCM 驱动程序的 ProtocolCoDeleteVc 函数随后将调用,以释放微型端口驱动程序分配的任何资源,以便在 MCM 驱动程序将错误状态传递给 NdisMCmMakeCallComplete时跟踪客户端创建的 VC 的状态。
在设置客户端发起的传出调用的过程中,MCM 驱动程序可以修改最初传入其 ProtocolCmMakeCall 函数的客户端提供的调用参数。 如果这样做,MCM 驱动程序必须在调用 NdisMCmMakeCallComplete时,在 CallParameters 的缓冲区中传递其修改。 如果客户端发现这些修改后的调用参数不能接受,它将拆毁调用,这也会导致调用 MCM 驱动程序的 ProtocolCoDeleteVc 函数。
只有提供集成呼叫管理支持的面向连接的微型端口驱动程序才能调用 NdisMCmMakeCallComplete。 独立呼叫管理器,将其注册为协议驱动程序的 NDIS,请改为调用 NdisCmMakeCallComplete。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 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) |