NdisClMakeCall 函数 (ndis.h)

NdisClMakeCall 在客户端创建的 VC 上设置传出调用。

语法

NDIS_STATUS NdisClMakeCall(
  [in]            NDIS_HANDLE         NdisVcHandle,
  [in, out]       PCO_CALL_PARAMETERS CallParameters,
  [in, optional]  NDIS_HANDLE         ProtocolPartyContext,
  [out, optional] PNDIS_HANDLE        NdisPartyHandle
);

参数

[in] NdisVcHandle

指定前面对 NdisCoCreateVc 的调用返回的句柄。

[in, out] CallParameters

指向 CO_CALL_PARAMETERS 类型的结构的指针,其中调用方指定了此连接的属性,例如,如果呼叫管理器支持的网络媒体和地址系列允许 QoS 规范,则呼叫目标地址、延迟、带宽和服务质量。

[in, optional] ProtocolPartyContext

(可选)指定调用方提供的对常驻上下文区域的句柄,客户端将在其多点 VC 上维护初始方的每一方状态。 如果给定的 VC 不表示多点连接,则此参数为 NULL 。 对于多点 VC,NDIS 在影响此特定方的所有后续调用中将此句柄传递回客户端的 ProtocolClXxx 函数。

[out, optional] NdisPartyHandle

指向调用方提供的变量的指针,通常位于调用方分配的参与方上下文区域中,如果设置传出调用的请求成功,则 NDIS 将返回一个句柄,该句柄表示与多点连接的初始一方。 如果 ProtocolPartyContextNULL,则此变量(通常在客户端的 VC 上下文区域中)在传出呼叫设置完成后也会设置为 NULL

返回值

NdisClMakeCall 返回除 NDIS_STATUS_PENDING 以外的任何内容时,客户端应对其进行内部调用 ProtocolClMakeCallComplete 函数。 否则,NDIS 会在此操作完成时调用客户端的 ProtocolClMakeCallComplete 函数。

注解

NdisClMakeCall 为客户端发起的传出调用设置客户端创建的 VC 的属性。 客户端在尝试发出传出调用之前,必须使用 NdisCoCreateVc 设置 VC

调用 NdisClMakeCall 会导致 NDIS 将此请求转发到客户端与给定 NdisVcHandle 共享的调用管理器的 ProtocolCmMakeCall 函数。 CM 负责验证 CallParameters 中的给定数据。 它可以在与相关网络组件协商时修改客户端提供的数据,并且可以返回与最初提供给 NdisClMakeCall 的客户端不同的流量参数。 客户端的如果发生这种情况,ProtocolClMakeCallComplete 函数负责接受修改的调用参数;如果 CM 的建议调用参数不可接受,则负责取消调用。

因此, CallParameters 中的数据必须至少在呼叫设置期间对呼叫管理器保持可用。 当 NdisClMakeCall 返回NDIS_STATUS_PENDING时,客户端无法释放此缓冲区。 它必须延迟释放此客户端分配的资源,直到调用其 ProtocolClMakeCallComplete 函数。

如果 NdisClMakeCall 设置了多点连接,则客户端将全局为给定 VC 建立流量参数,除非基础网络媒体支持每方流量参数。

客户端的 ProtocolClMakeCallComplete 函数在 NdisPartyHandle 中使用任何返回的句柄之前,应检查NDIS_STATUS_SUCCESS的输入状态。 如果调用管理器在多点连接上设置调用的请求失败,则此客户端提供的变量的值无效。

要求

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

另请参阅

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClAddParty

NdisClCloseCall

NdisClModifyCallQoS

NdisCmActivateVc

NdisCmMakeCallComplete

NdisCoCreateVc

ProtocolClMakeCallComplete

ProtocolCmMakeCall