Porting NDIS Protocol Driver Send Data Handling

In NDIS 6.0. the NdisSendNetBufferLists function replaces the NdisSendPackets function. NdisSendNetBufferLists sends a pointer to a linked list of NET_BUFFER_LIST structures, each of which contains a linked list of NET_BUFFER structures. NdisSendNetBufferLists does not return a completion status. NDIS always completes a send operation asynchronously by calling the ProtocolSendNetBufferListsComplete function.

NDIS 5.x miniport drivers specify the completion status of a send operation as a parameter to the NdisMSendComplete function. NDIS 6.0 miniport drivers, however, specify the completion status in the NET_BUFFER_LIST structure's Status member: The completion status applies to all the NET_BUFFER structures associated with the NET_BUFFER_LIST structure.

NDIS 6.0 does not provide loopback of send data by default. NDIS 6.0 protocol driver must explicitly request NDIS to check NET_BUFFER structures for required loopback.

NDIS 6.0 protocol drivers can cancel send operations. For more information about canceling send operations, see Canceling a Send Operation. For an overview of send operations, see Sending Network Data. For more information about protocol driver send operations, see Sending Data from a Protocol Driver.