Derived NET_BUFFER_LIST Structures

NDIS provides functions that drivers can use to manage NET_BUFFER_LIST structures that are derived from other NET_BUFFER_LIST structures. These functions are typically used by intermediate drivers.

The following NDIS functions can create derived NET_BUFFER_LIST structures from an existing NET_BUFFER_LIST structure:

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisAllocateReassembledNetBufferList

These functions improve system performance because NDIS creates the derived structures without copying the network data. There are three types of NET_BUFFER_LIST structures that can be derived from an existing NET_BUFFER_LIST structure:

Clone
A cloned NET_BUFFER_LIST structure is a duplicate that references the original data. Drivers can use this type of structure to efficiently transfer the same data to multiple paths.

Fragment
A fragment NET_BUFFER_LIST structure includes a set of NET_BUFFER structures that reference the original data; however, the data is divided into units that do not exceed a maximum size. Drivers can use this type of structure to efficiently break up large buffers into smaller buffers.

Reassembled
A reassembled NET_BUFFER_LIST structure contains a NET_BUFFER structure that references the original data from multiple source NET_BUFFER structures. Drivers can use this type of structure to efficiently combine many smaller buffers into a single large buffer.

This following topics provide more information about derived NET_BUFFER_LIST structures: