NdisTransferData (Windows CE 5.0)

Send Feedback

This function forwards a request to copy data received on the underlying NIC into a protocol-supplied packet.

VOID NdisTransferData(PNDIS_STATUS Status,NDIS_HANDLE NdisBindingHandle,NDIS_HANDLE MacReceiveContext,UINT ByteOffset,UINT BytesToTransfer,PNDIS_PACKET Packet,PUINT BytesTransferred);

Parameters

  • Status
    [out] Pointer to a caller-supplied variable that indicates the status of the call.
  • NdisBindingHandle
    [in] Handle returned by the NdisOpenAdapter function that identifies the target NIC or the virtual adapter of the next-lower driver to which the caller is bound.
  • MacReceiveContext
    [in] Specifies the underlying driver's handle that was passed as an input parameter to the caller's ProtocolReceive function. The protocol driver must consider this handle to be opaque.
  • ByteOffset
    [in] Specifies the offset from the start of the receive network packet at which to begin the transfer.
  • BytesToTransfer
    [in] Specifies the number of bytes to transfer. This value can be 0.
  • Packet
    [in, out] Pointer to the packet descriptor, provided by the caller, into which the underlying NIC driver is to copy the data.
  • BytesTransferred
    [out] Pointer to a caller-supplied variable in which this function returns the number of bytes actually transferred. The value is invalid if this function returns NDIS_STATUS_PENDING at Status.

Return Values

The following table shows the return values for this function.

Value Description
NDIS_STATUS_SUCCESS The requested data has been transferred into the packet at Packet.
NDIS_STATUS_PENDING The request is being handled asynchronously, and the caller's ProtocolTransferComplete function will be called when it is completed.
NDIS_STATUS_RESET_IN_PROGRESS The underlying driver is currently resetting its NIC or virtual NIC state. The caller's ProtocolStatus function was or will be called with NDIS_STATUS_RESET_START to indicate that a reset is in progress.
NDIS_STATUS_REQUEST_ABORTED The caller's binding is being closed.
NDIS_STATUS_FAILURE The given ByteOffset and/or the given BytesToTransfer is too large.

Remarks

Several protocols can be bound to a single underlying NIC, and each such protocol driver can receive an indication for the same packet. Such a packet is read-only to protocol drivers. Each such driver's ProtocolReceive function determines whether to make itself a copy of the indicated packet with this function.

Before calling this function, the protocol must allocate a packet descriptor and chain some number of buffer descriptors mapping protocol-allocated buffers into which the underlying driver copies the data. The protocol also might set up the ProtocolReserved part of its packet descriptor before calling this function.

A protocol driver should always allocate its packet descriptors from the packet pool that the driver set up during initialization.

The range requested in a call to this function, specified by ByteOffset and BytesToTransfer, should be suitable to the PacketSize passed in to the caller's ProtocolReceive function. Callers of this function usually pass a ByteOffset value calculated from the input parameters to ProtocolReceive as (LookaheadBufferRange + 1). That is, ProtocolReceive already consumed the data in the look-ahead buffer, so it calls this function to get the remaining data in the indicated receive packet.

Requirements

OS Versions: Windows CE .NET 4.0 and later.
Header: Ndis.h.

See Also

NdisOpenAdapter | NdisMIndicateReceivePacket | ProtocolReceive | ProtocolStatus

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.