NdisTransferData (Windows CE 5.0)
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