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: