NdisMWanIndicateReceiveComplete function
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
NdisMWanIndicateReceiveComplete notifies NDISWAN that one or more receives have been completed for an established link so that NDISWAN can notify the appropriate bound protocol(s).
Syntax
VOID NdisMWanIndicateReceiveComplete(
_In_ NDIS_HANDLE MiniportAdapterHandle,
_In_ NDIS_HANDLE NdisLinkContext
);
Parameters
MiniportAdapterHandle [in]
Specifies the handle originally input to MiniportInitialize.NdisLinkContext [in]
Specifies the handle supplied by NDISWAN in the NDIS_MAC_LINE_UP structure at the miniport's initial call to NdisMIndicateStatus for this link.
Return value
None
Remarks
After any WAN receive indication, a miniport driver must eventually call NdisMWanIndicateReceiveComplete.
NdisMWanIndicateReceiveComplete both indicates the completion of a transfer operation for a receive and notifies any bound protocol that has already consumed the initial indication that it can begin postprocessing the received data.
When a miniport driver calls NdisMWanIndicateReceiveComplete, NDISWAN calls the ProtocolReceiveComplete function(s) of bound protocol driver(s). ProtocolReceiveComplete functions need not operate under the severe time constraints of the corresponding ProtocolReceive functions.
A WAN miniport driver need not call NdisMWanIndicateReceiveComplete in one-to-one correspondence with its calls to NdisMWanIndicateReceive. That is, a NIC driver can issue a single receive-complete indication for some number of receive indications, particularly when a sequence of receives is coming in to its NIC. Such a driver can call NdisMWanIndicateReceiveComplete after several calls to NdisMWanIndicateReceive have occurred, thereby giving bound protocols the opportunity to notify clients of received packets without incurring the overhead of processing one-to-one completion notifications. As a general rule, a miniport driver should call NdisMWanIndicateReceiveComplete once for every ten receive indications when network traffic is high.
On the other hand, a miniport driver might call NdisMWanIndicateReceiveComplete once for each indication when network traffic is low so that the driver can regain ownership of the memory it allocated for receives promptly.
A ProtocolReceive function is reentrant, and ProtocolReceiveComplete can run concurrently with ProtocolReceive, particularly in SMP machines.
A miniport driver must release any spin lock that it is holding before calling NdisMWanIndicateReceiveComplete.
Serialized callers of NdisMWanIndicateReceiveComplete must run at IRQL = DISPATCH_LEVEL. Deserialized callers of NdisMWanIndicateReceiveComplete must run at IRQL <= DISPATCH_LEVEL.
Requirements
Target platform |
Universal |
Version |
Not supported for NDIS 6.0 drivers in Windows Vista. Supported for NDIS 5.1 drivers in Windows Vista and Windows XP. |
Header |
Ndis.h (include Ndis.h) |
Library |
Ndis.lib |
IRQL |
See Remarks section |
See also