NdisClDropParty function (ndis.h)
NdisClDropParty drops a party from the client's multipoint VC.
Syntax
NDIS_STATUS NdisClDropParty(
[in] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in, optional] UINT Size
);
Parameters
[in] NdisPartyHandle
Specifies the handle identifying the party to be dropped on the multipoint connection. The client obtained this handle from a preceding call to NdisClAddParty or NdisClMakeCall.
[in, optional] Buffer
Pointer to a caller-allocated buffer containing any data to be transmitted to close the multipoint connection of the party on the remote node. Depending on the underlying medium, this pointer can be NULL.
[in, optional] Size
Specifies the size in bytes at Buffer, zero if Buffer is NULL.
Return value
When NdisClDropParty returns anything other than NDIS_STATUS_PENDING, the client should make an internal call to its ProtocolClDropPartyComplete function. Otherwise, NDIS calls the client's ProtocolClDropPartyComplete function when this operation is completed.
Remarks
Clients usually call NdisClDropParty in either of the following circumstances:
-
From the
ProtocolClIncomingDropParty function to remove the given party from a multipoint connection.
This occurs when a party on a remote node closes its connection with NdisClCloseCall. When NDIS calls the local client's ProtocolClDropPartyComplete function, it can release or reuse the context area at ProtocolPartyContext in which the client was maintaining state about this party.
-
Before the client calls
NdisClCloseCall with the last party on a multipoint connection that the client originally set up
with
NdisClMakeCall.
For such a client-initiated close of its own multipoint call, the client must call NdisClDropParty one or more times to drop every other remaining party on the multipoint VC.
As a general guideline, a client must call NdisClDropParty as many times as it called NdisClAddParty with a particular NdisVcHandle obtained from NdisClMakeCall before it closes its multipoint connection with NdisClCloseCall. Since remote parties can initiate closes of their connections, thereby causing calls to the local client's ProtocolClIncomingDropParty function, the local client must keep track of the number of active parties on its multipoint VCs in order to know how many calls it must make to NdisClDropParty before it can call NdisClCloseCall.
However, the client is not required to pass NdisClCloseCall the same NdisPartyHandle returned by NdisClMakeCall when the client originally set up its multipoint connection. The client can release parties on its multipoint VC in any order, as long as it releases every NdisPartyHandle returned by NdisClAddParty or NdisClMakeCall in its calls to NdisClDropParty, followed by a final call with the last party handle to NdisClCloseCall for the same multipoint VC. After the client has closed its multipoint call, it can release the VC that it originally created with NdisCoDeleteVc.
The caller of NdisClDropParty should consider the input NdisPartyHandle invalid as soon as it makes this call. If it stored this handle in the party context area it allocated, the client's ProtocolClDropPartyComplete function should reset the handle variable to NULL if it reinitializes its per-party context area for reuse when the party has been dropped.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Supported for NDIS 6.0 and NDIS 5.1 drivers (see NdisClDropParty (NDIS 5.1)) in Windows Vista. Supported for NDIS 5.1 drivers (see NdisClDropParty (NDIS 5.1)) in Windows XP. |
Target Platform | Desktop |
Header | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI compliance rules | Irql_Protocol_Driver_Function(ndis) |