NdisTransferData

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

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

Parameters

  • Status
    Pointer to a caller-supplied variable that can be one of the following values on return from 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 network adapter or virtual network adapter 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.
  • NdisBindingHandle
    Handle returned by the NdisOpenAdapter function that identifies the target network adapter or the virtual adapter of the next-lower driver to which the caller is bound.

  • MacReceiveContext
    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
    Specifies the offset from the start of the receive network packet at which to begin the transfer.

  • BytesToTransfer
    Specifies the number of bytes to transfer. This value can be 0.

  • Packet
    Pointer to the packet descriptor, provided by the caller, into which the underlying network adapter driver is to copy the data.

  • BytesTransferred
    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.

Remarks

Several protocols can be bound to a single underlying network adapter, 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

Runs on Versions Defined in Include Link to
Windows CE OS 2.0 and later Ndis.h   Ndislib.lib

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

NdisMIndicateReceivePacket, NdisOpenAdapter, ProtocolReceive, ProtocolStatus

 Last updated on Tuesday, July 13, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.