NdisClAddParty 函数 (ndis.h)

NdisClAddParty 在客户端的多点 VC 上添加一个参与方。

语法

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

参数

[in] NdisVcHandle

指向 NdisCoCreateVc 返回的 VC 句柄的指针

[in] ProtocolPartyContext

指定调用方分配的常驻上下文区域的句柄,如果客户端调用成功,客户端将在该区域中保持每方状态。

[in, out] CallParameters

指向 CO_CALL_PARAMETERS 类型的结构的指针,调用方在其中指定了要在其多点 VC 上添加的参与方的寻址信息。

[out] NdisPartyHandle

指向要由 NDIS 设置的变量(如果添加方操作成功)的指针。

返回值

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

注解

在调用 NdisClAddParty 之前,客户端必须使用 NdisClMakeCall 在其 VC 上设置多点连接,并为要添加的参与方分配和初始化其上下文区域。 客户端通常在调用 NdisClAddParty 时将指向此类上下文区域的指针和指向该上下文区域中变量的指针作为 NdisPartyHandle 参数传递。

调用 NdisClAddParty 会导致 NDIS 将此请求转发到客户端与其共享给定 NdisVcHandle 的调用管理器的 ProtocolCmAddParty 函数。 调用管理器会立即返回错误状态,更常见的情况是,如果调用管理器尝试满足此请求,则NDIS_STATUS_PENDING。 如果在远程终结点或基础微型端口驱动程序上拒绝其尝试,则调用管理器在调用 NdisCmAddPartyComplete 或 NdisMCmAddPartyComplete 时返回最终错误状态,例如NDIS_STATUS_FAILURE。 客户端的 ProtocolClAddPartyComplete 函数应检查NDIS_STATUS_SUCCESS的输入 Status 参数,然后再继续。

基础网络介质确定客户端是否可以在多点 VC 上指定每方流量参数。

如果基础网络媒体不支持多点 VC 上的每方流量参数,则每当客户端尝试在 CallParameters 中添加规范与该 VC 已建立的流量参数不匹配的参与方时,调用管理器都可以执行以下操作之一:

  • 拒绝添加新参与方的请求。
  • 在多点 VC 上成功添加参与方后,将流量参数重置为已为多点 VC 建立的流量参数。
  • 在成功添加新参与方后,更改 VC 上已有的每个参与方的流量参数。
如果添加方操作成功, 则 NDIS 已将 NdisPartyHandle 处的变量设置为 NDIS、客户端和调用管理器之间共享的有效句柄。 客户端必须将此 NDIS 提供的句柄视为一个不透明变量,以在后续调用与新添加的参与方相关的 NdisCl/CoXxx 函数时传递、未修改和未解释。

反过来,NDIS 在后续调用中传递客户端提供的 ProtocolPartyContext 句柄,这些函数涉及 此新添加的参与方,包括对 的调用 ProtocolClAddPartyComplete

多点调用是否允许使用每方流量参数双向传输和/或每方传输取决于客户端绑定到的基础微型端口驱动程序的介质。 NdisPartyHandle 仅表示通过成功调用 NdisClAddParty 添加的特定方,而不是多点 VC。 因此,客户端只能将其 ProtocolPartyContext 区域用于后续特定于参与方的调用管理请求。 对于不支持每方传输或流量参数的网络媒体上的数据传输,客户端必须改用 NdisVcHandle

要求

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

另请参阅

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmAddPartyComplete

NdisCoCreateVc

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmAddPartyComplete

ProtocolClAddPartyComplete

ProtocolCmAddParty