|This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.|
This function notifies NDIS that an array of received packets is available to be forwarded to the appropriate bound protocol driver(s).
VOID NdisMIndicateReceivePacket( IN NDIS_HANDLE MiniportAdapterHandle , IN PPNDIS_PACKET ReceivePackets , IN UINT NumberOfPackets );
Drivers of busmaster DMA NICs are most likely to show significant gains in performance by making multipacket receive indications with this function. However, drivers that indicate out-of-band data with receive packets, such as packet priority and/or time stamps, can also call this function with a single packet at a time.
When a miniport calls this function, NDIS passes each pointer at ReceivePacketsseparately, in the miniport-determined order, to the ProtocolReceivePacketfunction(s) of bound protocol(s) that export this function. To other bound protocols, NDIS passes each packet pointer to the ProtocolReceivefunction(s).
If the miniport did not designate its NIC's medium as a type for which the system supplies a filter package in response to the OID_GEN_MEDIA_IN_USE query, NDIS forwards that driver's receive indications to all bound protocol drivers that export a ProtocolReceivePacketsfunction. Otherwise, NDIS automatically applies the appropriate filter library to the miniport's receive indications.
Any caller of this function must first set up the packet array, as follows:
The miniport should use NDIS_GET_PACKET_STATUS to determine whether it has regained ownership of indicated packets when this function returns control.
When the miniport regains ownership of an indicated packet descriptor, it prepares the associated out-of-band data block for reuse by passing the pointer returned by NDIS_OOB_DATA_FROM_PACKETto the NdisZeroMemoryfunction. As an alternative, the miniport can simply reset the relevant member(s) at the subsequent receive with the NDIS_SET_PACKET_ XXXmacro(s) or with the pointer returned by NDIS_OOB_DATA_FROM_PACKET.
A miniport must not pass a packet descriptor pointer to NdisZeroMemory. Doing this destroys the packet descriptor, rendering it unusable for subsequent indications. To clear the associated out-of-band data block, the driver must pass the pointer returned by NDIS_OOB_DATA_FROM_PACKET.
Packet arrays passed to this function can be allocated on the stack, which cannot be paged out in the NDIS library's receive-indication code path.
When NDIS calls the ProtocolReceivefunction of a driver that exports a ProtocolReceivePacketfunction, ProtocolReceivecan call NdisQueryReceiveInformationto retrieve the out-of-band information associated with an incoming packet that was indicated as part of a packet array.
Any miniport that calls this function must indicate full packets. Consequently, such a driver has no MiniportTransferDatafunction.
A driver that calls this function can run at IRQL <= DISPATCH_LEVEL, but usually callers are running at DISPATCH_LEVEL.
|Runs on||Versions||Defined in||Include||Link to|
|Windows CE OS||2.0 and later||Ndis.h|
Note This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.
Last updated on Tuesday, July 13, 2004