NdisMCoSendNetBufferListsComplete function

The NdisMCoSendNetBufferListsComplete function returns a linked list of NET_BUFFER_LIST structures to an overlying driver and returns the final status of a CoNDIS send request.


VOID NdisMCoSendNetBufferListsComplete(
  _In_ NDIS_HANDLE      NdisVcHandle,
  _In_ PNET_BUFFER_LIST NetBufferLists,
  _In_ ULONG            SendCompleteFlags


NdisVcHandle [in]

A handle that identifies a virtual connection (VC). The miniport driver obtained this handle as an input parameter to its MiniportCoCreateVc function, either when a client set up an outgoing call or when the call manager created a VC for a client-registered service access point (SAP) to indicate an incoming-call notification on.

NetBufferLists [in]

A pointer to a linked list of NET_BUFFER_LIST structures. The miniport driver received the NET_BUFFER_LIST structures in previous calls to its MiniportCoSendNetBufferLists function.

SendCompleteFlags [in]

NDIS flags that can be combined with a bitwise OR operation. To clear all of the flags, set this parameter to zero. NdisMCoSendNetBufferListsComplete supports the NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL flag, which; if set, indicates that the current IRQL is DISPATCH_LEVEL. For more information about this flag, see Dispatch IRQL Tracking.

Return value



A miniport driver calls NdisMCoSendNetBufferListsComplete to complete send requests that NDIS made to the driver's MiniportCoSendNetBufferLists function. The miniport driver specifies a linked list of NET_BUFFER_LIST structures that are associated with the completed send requests.

While the status of the send requests is pending, the miniport driver retains ownership of the NET_BUFFER_LIST structures and all of the resources that are associated with the NET_BUFFER_LIST structures.

After a miniport driver calls NdisMCoSendNetBufferListsComplete, NDIS returns the NET_BUFFER_LIST structures and associated data to the overlying driver that originated the send request.

The miniport driver can complete send requests in any order. For example, the miniport driver could concatenate the NET_BUFFER_LIST structure lists from multiple MiniportCoSendNetBufferLists calls or split up a list from a MiniportCoSendNetBufferLists call. However, the miniport driver must not modify the list of NET_BUFFER structures that are associated with a NET_BUFFER_LIST structure.

The miniport driver must set one of the following status codes in the Status member of each NET_BUFFER_LIST structure that the NetBufferLists parameter specifies:


All of the network data that is described by NET_BUFFER structures that are associated with this NET_BUFFER_LIST structure was successfully transmitted over the network.


The size of the data in some NET_BUFFER structures that are associated with this NET_BUFFER_LIST structure was too large for the underlying network interface card (NIC).


The send request for this NET_BUFFER_LIST structure failed because of insufficient resources.


NDIS called the MiniportCancelSend function to cancel the send operation for this NET_BUFFER_LIST structure.


The miniport driver aborted the send request because of a reset.


The miniport driver failed the send request because of some reason other than those previously described. For example, the miniport driver can fail the send request due to a hardware failure.

A miniport driver's call to NdisMCoSendNetBufferListsComplete does not necessarily indicate that the data for a send request has been transmitted over the network. For example, the data might be queued in the NIC hardware.


Target platform


Supported in NDIS 6.0 and later.


Ndis.h (include Ndis.h)





DDI compliance rules


See also




Send comments about this topic to Microsoft