NdisMEthIndicateReceiveComplete 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.

NdisMEthIndicateReceiveComplete notifies NDIS that an Ethernet receive packet, identified in a preceding call to NdisMEthIndicateReceive, has been fully transferred by the NIC so that NDIS can notify the appropriate bound protocols.

Syntax

VOID NdisMEthIndicateReceiveComplete(
  _In_ NDIS_HANDLE MiniportAdapterHandle
);

Parameters

Return value

None

Remarks

After any Ethernet receive indication, a miniport driver eventually must call NdisMEthIndicateReceiveComplete to indicate the end of the transfer operation over the net, even if a particular packet is accepted by no bound protocol.

NdisMEthIndicateReceiveComplete 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 NdisMEthIndicateReceiveComplete, NDIS indicates the completion of the receive operation to each such protocol by calling its ProtocolReceiveComplete function.

ProtocolReceiveComplete functions need not operate under the severe time constraints of the corresponding ProtocolReceive functions. However, another receive indication to the ProtocolReceive function can come in while the ProtocolReceiveComplete function is running.

A miniport driver need not call NdisMEthIndicateReceiveComplete in one-to-one correspondence with its calls to NdisMEthIndicateReceive. That is, a NIC driver can issue a single receive-complete indication for some number of receive indications, particularly when network traffic is high. For example, when a miniport driver is continually indicating receives from the same source, it might call NdisMEthIndicateReceiveComplete once for every ten indications. On the other hand, a miniport driver might call NdisMEthIndicateReceiveComplete once for each indication when network traffic is low so that the driver can regain ownership of the memory it allocated for receives promptly. However, a miniport driver must call NdisMEthIndicateReceiveComplete at least once per batch of packets indicated from its MiniportHandleInterrupt function.

A miniport driver must release any spin lock that it is holding before calling NdisMEthIndicateReceiveComplete.

Serialized callers of NdisMEthIndicateReceiveComplete must run at IRQL = DISPATCH_LEVEL. Deserialized callers of NdisMEthIndicateReceiveComplete must run at IRQL <= DISPATCH_LEVEL.

Requirements

Target platform

Desktop

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)

IRQL

See Remarks section

See also

MiniportHandleInterrupt

MiniportInitialize

NdisMEthIndicateReceive

ProtocolReceive

ProtocolReceiveComplete

 

 

Send comments about this topic to Microsoft