Microsoft Windows CE 3.0  

NdisMEthIndicateReceive

Important:
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 Ethernet packet, or some initial look-ahead portion of the packet, has arrived so that NDIS can forward the packet to bound protocols.

VOID NdisMEthIndicateReceive(
IN
NDIS_HANDLE
MiniportAdapterHandle
,
IN
NDIS_HANDLE
MiniportReceiveContext
,
IN
PVOID
HeaderBuffer
,
IN
UINT
HeaderBufferSize
,
IN PVOID
LookaheadBuffer
,
IN UINT
LookaheadBufferSize
,
IN
UINT
PacketSize
);

Parameters

MiniportAdapterHandle
Handle originally input to the MiniportInitializefunction.
MiniportReceiveContext
Context handle supplied by the caller. NDIS returns this handle as an input parameter to the MiniportTransferDatafunction if it is called. The miniport can use the context area designated by this handle to determine which packet, on which NIC, is being received.
HeaderBuffer
Specifies the base virtual address of the buffered packet header.
HeaderBufferSize
Specifies the size, in bytes, of the packet header.
LookaheadBuffer
Specifies the base virtual address of a buffer containing the initial LookaheadBufferSizebytes of the data in the packet.
LookaheadBufferSize
Specifies the size, in bytes, of the look-ahead buffer. This value must be at least as large as the look-ahead size set when the MiniportSetInformationfunction was called with OID_GEN_CURRENT_LOOKAHEAD or as large as the packet, whichever is smaller. When the packet is smaller than the look-ahead size, the look-ahead buffer contains the entire frame.

A miniport should set this parameter to something larger than the minimum required, if sufficient received data is available on its NIC.

PacketSize
Specifies the size, in bytes, of the received packet data. This value does not include the HeaderBufferSize.

When this parameter is larger than the specified LookaheadBufferSize, a protocol driver call to the NdisTransferDatafunction causes a subsequent call to the MiniportTransferDatafunction, which transfers the remaining data in the packet.

Remarks

A miniport calls this function if it designates its NIC as of type NdisMedium802_3 or NdisMediumDix in response to the OID_GEN_MEDIA_IN_USE query, unless the miniport indicates receives with the NdisMIndicateReceivePacketfunction.

When a miniport calls this function, NDIS passes a pointer to the header of the packet and a pointer to some or all of the data in the packet to the ProtocolReceivefunction(s) of bound protocol driver(s). Each protocol that receives the indication can do the following:

  • Inspect the header and data in the packet to decide whether the indication is of interest to the protocol's client(s).
  • If it is, copy as much of the header or data as is visible into protocol-allocated memory with the NdisMoveMemoryfunction.
  • Get the remaining data, if any, for the indication by allocating a packet descriptor with sufficient chained buffer descriptors and calling the NdisTransferDatafunction. The call to NdisTransferDatacauses the NIC driver's MiniportTransferDatafunction to copy the data into the protocol-supplied packet.

    For any protocol driver that receives an indication through this function, the HeaderBufferand LookaheadBufferparameters are valid only during the current call to its ProtocolReceivefunction, and these buffers are read-only. A protocol driver cannot retain a pointer to the indicated packet with these associated buffers, nor can it retain any pointers to these buffers for later use. Any data that a protocol driver needs from such a packet must be copied and saved during the receive indication.

    The data in the header is the same as that received on the NIC. A miniport need not remove any headers or trailers from the data that its NIC receives.

    The transmitting driver adds padding to any packet that is too short for the requirements of the medium. The receiving miniport can include such padding in the data and length that it subsequently indicates. Each bound protocol is responsible for detecting any such padding and ignoring it.

    A driver that calls this function runs at IRQL DISPATCH_LEVEL.

    Requirements

    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.

    See Also

    NdisMEthIndicateReceiveComplete, NdisMIndicateReceivePacket, NdisMoveMemory, NdisTransferData



     Last updated on Tuesday, July 13, 2004

    © 2004 Microsoft Corporation. All rights reserved.