NdisCmMakeCallComplete 函数 (ndis.h)

NdisCmMakeCallComplete 返回客户端请求的最终状态,调用管理器之前NDIS_STATUS_PENDING返回请求进行传出呼叫。

语法

void NdisCmMakeCallComplete(
  [in]           NDIS_STATUS         Status,
  [in]           NDIS_HANDLE         NdisVcHandle,
  [in, optional] NDIS_HANDLE         NdisPartyHandle,
  [in, optional] NDIS_HANDLE         CallMgrPartyContext,
  [in]           PCO_CALL_PARAMETERS CallParameters
);

参数

[in] Status

指定尝试建立连接的最终状态,NDIS_STATUS_SUCCESS或任何 CM 确定NDIS_STATUS_ XXX (NDIS_STATUS_PENDING除外)。

[in] NdisVcHandle

指定客户端创建的 VC 的句柄,调用管理器最初作为 其 ProtocolCoCreateVc 函数的输入参数获取。 最近,CM 从传递给其 ProtocolCmMakeCall 函数的 CallMgrVcContext 指定的每个 VC 状态获取此句柄。

[in, optional] NdisPartyHandle

指定客户端创建的多点 VC 上初始方的句柄,调用管理器作为 其 ProtocolCmMakeCall 函数的输入参数获取该句柄。 如果给定的 NdisVcHandle 表示点到点 VC,则此参数为 NULL

[in, optional] CallMgrPartyContext

指定调用方分配的常驻上下文区域的 CM 提供的句柄,其中 CM 将维护每方状态信息;如果 NdisPartyHandleNULL,则为 NULL。 对于多点 VC,NDIS 会将此 CM 提供的 CallManagerPartyContext 句柄传递到与该方相关的 ProtocolCmXxx 函数的所有后续调用中。 否则,NDIS 将忽略此参数。

[in] CallParameters

指向 CO_CALL_PARAMETERS 类型的结构的指针,该结构指定在 状态 为NDIS_STATUS_SUCCESS时为此连接设置的调用参数。

返回值

备注

仅当基础微型端口驱动程序准备好在 VC 上进行数据传输时,独立调用管理器才应使用 NDIS_STATUS_SUCCESS 调用 NdisMCmMMakeCallComplete 。 也就是说,调用管理器已与网络协商以建立 VC 的调用参数,并成功调用 了 NdisCmActivateVc

如果独立调用管理器的 ProtocolCmMakeCall 函数以前为给定的 NdisVcHandle 返回NDIS_STATUS_PENDING,则其 ProtocolCmMakeCallComplete 必须调用 NdisCmMakeCallComplete 在 CM 使用 NDIS_STATUS_SUCCESS 调用 NdisCmMakeCallComplete 之前,发起挂起的传出调用的客户端无法使用 VC 进行传输。

即使尝试的连接失败,在 CM 对 NdisCmMakeCallComplete 的调用导致调用该客户端之前,NDIS 和客户端都无法释放分配的资源以保持状态 ProtocolClMakeCallComplete 函数。 事实上,如果因尝试设置此类连接失败而忽略调用 NdisCmMakeCallComplete ,也会导致调用管理器中的内存泄漏;它可防止客户端拆解为其失败的传出调用而创建的 VC,因此不会调用 CM 来释放它为该 VC 分配的资源。

如果 CM 通过错误(如 NDIS_STATUS_FAILURE),则 对于状态,它应该认为 NdisPartyHandle(如果有)在调用 NdisCmMakeCallComplete 后立即无效。 当 NdisCmMakeCallComplete 返回控制权时,CM 可以释放 (或重新初始化以供重用) 它分配的任何资源来维护给定参与方的状态。 随后将调用 CM 的 ProtocolCoDeleteVc 函数,以便在 CM 将错误状态传递给 NdisCmMakeCallComplete 时释放 CM 分配的任何资源,以便跟踪客户端创建的 VC 的状态。

在设置客户端发起的传出调用的过程中,CM 可以修改最初传入其 ProtocolCmMakeCall 函数的客户端提供的调用参数。 如果这样做,则 CM 必须在调用 NdisCmMakeCallComplete 时在 CallParameters 的缓冲区中传递其修改。 如果客户端发现这些修改后的调用参数不可接受,则会断开调用,这也会导致调用 CM 的 ProtocolCoDeleteVc 函数。

只有向 NDIS 注册为协议驱动程序的独立调用管理器才能调用 NdisCmMakeCallComplete。 提供集成呼叫管理支持呼叫的微型端口驱动程序 改为 NdisMCmMakeCallComplete

要求

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

另请参阅

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisMCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc