What is the relation between NetBufferLists in the NDIS receive and send callbacks?

In the ReceiveNetBufferListsHandler and SendNetBufferListsHandler callbacks in NDIS, we get a list of NetBufferLists as input

My questions are :

  1. What is the relation between all the NetBufferLists that we receive as input inside a receive or Send Callback? how are they related to each other?

  2. What about the relation between all the NetBuffers in a NetBufferList? how are they related to each other?

  3. Is the content of the first packet present in the first NetBuffer? for example, in case of a HTTP receive or send packet, other than the headers, will the data always be present in the first NetBuffer?

Found a good blogpost that says :

“A Net Buffer List, represented by the NET_BUFFER_LIST structure, describes a group of packets that have common out of band (OOB) data.”

I tried to read the wikipedia page of “out of band (OOB) data”, but that didn’t help, can someone explain this in terms of UDP and TCP?

Also, what about the list of NBLs in the receive and send callbacks of NDIS? what connections do they have?

Read https://codemachine.com/articles/ndis6_net_buffer_lists.html and use !ndiskd.nbl in WinDBG

1 Like