NdisTransferData (Windows Embedded CE 6.0)
1/6/2010
This function forwards a request to copy data received on the underlying NIC into a protocol-supplied packet.
Syntax
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 Value
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
Header | ndis.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
NDIS Library Functions
NdisOpenAdapter
NdisMIndicateReceivePacket
ProtocolReceive
ProtocolStatus