NdisClDropParty 函数 (ndis.h)
NdisClDropParty 从客户端的多点 VC 中删除参与方。
语法
NDIS_STATUS NdisClDropParty(
[in] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in, optional] UINT Size
);
参数
[in] NdisPartyHandle
指定要在多点连接上删除的参与方的句柄。 客户端从对 NdisClAddParty 或 NdisClMakeCall 的先前调用中获取了此句柄。
[in, optional] Buffer
指向调用方分配的缓冲区的指针,该缓冲区包含要传输的任何数据,以关闭远程节点上参与方的多点连接。 根据基础介质,此指针可以为 NULL。
[in, optional] Size
指定 Buffer 处的大小(以字节为单位),如果 Buffer 为 NULL,则为零。
返回值
当 NdisClDropParty 返回除NDIS_STATUS_PENDING以外的任何内容时,客户端应对其进行内部调用 ProtocolClDropPartyComplete 函数。 否则,完成此操作时,NDIS 会调用客户端的 ProtocolClDropPartyComplete 函数。
注解
客户端通常在以下任一情况下调用 NdisClDropParty :
-
从 ProtocolClIncomingDropParty 函数,用于从多点连接中删除给定的一方。
当远程节点上的一方关闭其与 NdisClCloseCall 的连接时,将发生这种情况。 当 NDIS 调用本地客户端的 ProtocolClDropPartyComplete 函数时,它可以释放或重用 ProtocolPartyContext 中的上下文区域,客户端在其中维护此方的状态。
-
在客户端最初使用 NdisClMakeCall 设置的多点连接上与最后一方调用 NdisClClCloseCall 之前。
对于此类客户端发起的关闭其自己的多点调用,客户端必须调用 NdisClDropParty 一次或多次,以删除多点 VC 上的所有其他剩余方。
作为一般准则,客户端在关闭与 NdisClClClCloseCall 的多点连接之前,必须使用从 NdisClMakeCall 获取的特定 NdisVcHandle 调用 NdisClDropParty 的次数。 因为远程方可以启动其连接的关闭,从而导致调用本地客户端的 ProtocolClIncomingDropParty 函数,本地客户端必须跟踪其多点 VC 上的活动参与方数,以便知道它必须对 NdisClDropParty 进行多少次调用,然后才能调用 NdisClClCloseCall。
但是,当客户端最初设置其多点连接时,客户端不需要传递 NdisClClCloseCall 与 NdisClMakeCall 返回的 NdisPartyHandle 相同的 NdisClCloseCall。 客户端可以按任意顺序在其多点 VC 上释放参与方,只要它在对 NdisClDropParty 的调用中释放 NdisClAddParty 或 NdisClMakeCall 返回的每个 NdisPartyHandle,然后是最后一方句柄对同一多点 VC 的 NdisClClClCloseCall 进行最终调用。 客户端关闭其多点调用后,可以释放最初使用 NdisCoDeleteVc 创建的 VC。
NdisClDropParty 的调用方应在发出此调用后立即将输入 NdisPartyHandle 视为无效。 如果它将此句柄存储在它分配的群上下文区域中,则客户端的 ProtocolClDropPartyComplete 函数应将句柄变量重置为 NULL ,如果它重新初始化其每方上下文区域,以便在删除该参与方时重复使用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持 NDIS 6.0 和 NDIS 5.1 驱动程序 (请参阅 Windows Vista 中的 NdisClDropParty (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisClDropParty (NDIS 5.1) ) 。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_Protocol_Driver_Function (ndis) |