A NET_BUFFER_LIST structure packages a linked list of NET_BUFFER structures.
The following figure shows the fields in a NET_BUFFER_LIST structure.
The NET_BUFFER_LIST structure includes a NET_BUFFER_LIST_HEADER structure in the NetBufferListHeader member. The NET_BUFFER_LIST_HEADER structure includes a NET_BUFFER_LIST_DATA structure in the NetBufferListData member. You should use NDIS macros to access NET_BUFFER_LIST structure members. For more information about these macros, see the NET_BUFFER_LIST structure reference page.
Some of the members are only used by NDIS. The members that drivers are most likely to use are defined in the following list:
If a NET_BUFFER_LIST structure is a child that was derived from a parent(cloned, fragmented, or reassembled), ParentNetBufferList specifies a pointer to the parent NET_BUFFER_LIST structure. Otherwise, this parameter is NULL.
NDIS uses SourceHandle to return the NET_BUFFER_LIST structure to the driver that sent the NET_BUFFER_LIST structure. NDIS drivers should not read this handle.
If a NET_BUFFER_LIST structure is a parent (has children derived by clone, fragment, or reassemble operations), ChildRefCount specifies the number of existing children. Otherwise, this parameter is zero.
NoteContext is a pointer to a NET_BUFFER_LIST_CONTEXT structure. NDIS provides macros and functions to manipulate the data at Context . For more information about the NET_BUFFER_LIST_CONTEXT structure, see NET_BUFFER_LIST_CONTEXT Structure.