RtndTransmitEx
RtndTransmitEx transmits and array of packets on a driver’s transmit queue.
Syntax
ulong RtndTransmitEx(
ULONG interfaceNumber,
ULONG queueNumber,
PRTNAL_FRAME pNalFrameArray[],
ULONG numberOfFrames)
);
Parameters
interfaceNumber
The driver interface index.
queueNumber
The driver queue number.
pNalFrameArray
A pointer to an array of pointers of NAL frames to transmit.
numberOfFrames
The number of NAL frames to transmit.
Return Value
The number of transmitted frames. RtndTransmitEx must set last error if the return value is less than numberOfFrames. The possible error codes are:
Error Code | Meaning |
---|---|
ERROR_BAD_ARGUMENTS | The provided arguments are invalid. |
ERROR_INVALID_ADDRESS | A pointer to a NAL frame is NULL. |
ERROR_IO_DEVICE | The Ethernet link is down. |
ERROR_DEVICE_NO_RESOURCES | There are not enough available buffer descriptors to send all of the requested packets. |
Process Context
RtndTransmitEx is used by RtNalTransmitEx in the context of a NAL client application.
Remarks
Each RTNAL_FRAME frame has a virtual and physical address of the Ethernet frame. A NAL client application uses a virtual address to place Ethernet packet data. The driver should use the physical address as the DMA buffer address.
RtndTransmitEx is a zero-copy API. NAL frames belong to NAL when this call returns and become available to the caller when transmitted packets are serviced in RtndServiceTransmitQueue.
The frames must be allocated by RtNalAllocateFrame in the same process context as RtNalTransmitEx call.
The driver does not have to check the frame length, because RtNalTransmitEx checks the length.
To support RtndTransmitEx the driver must implement RtndAttachToTransmitQueue, RtndDetachTransmitQueue, and RtndServiceTransmitQueue.
Requirements
Minimum Supported Version | RTX64 4.0 |
Header | RtNalApi.h |
Library | RTX64Nal.lib |
See Also: