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:

Transmitting Packets by the NIC Driver

RtNalAllocateFrame

RtNalTransmitEx

RtndAttachToTransmitQueue

RtndDetachTransmitQueue

RtndServiceTransmitQueue.