Share via


Porting CoNDIS Protocol Driver Send Data Handling

In CoNDIS 6.0, the NdisCoSendNetBufferLists function replaces the CoNDIS 5.x NdisCoSendPackets function. NdisCoSendNetBufferLists sends a pointer to a linked list of NET_BUFFER_LIST structures, each of which contains a linked list of NET_BUFFER structures. NdisCoSendNetBufferLists does not return a completion status. In CoNDIS 6.0, NDIS always completes a send operation asynchronously by calling the ProtocolCoSendNetBufferListsComplete function.

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

NDIS 6.0 does not provide loopback of send data by default. NDIS 6.0 protocol drivers must explicitly request for NDIS to check NET_BUFFER structures for required loopback. To request loopback, set the NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK flag in the SendFlags parameter of the NdisCoSendNetBufferLists function.

CoNDIS 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 CoNDIS protocol driver send operations, see Sending NET_BUFFER Structures from CoNDIS Drivers.