NDIS LWF Driver NET_BUFFER_LIST management doubts

Hello forum,

We have a NDIS LWF driver that manages both received and sent NetBufferLists. We want to manage NetBufferLists in the following ways:

  • Filtering NetBufferLists for either allowing or denying them.
  • Generating and injecting our own NetBufferLists.

Our doubts are:

  1. In several tests we have seen that in FilterSendNetBufferLists only one NetBufferList with a bunch of NetBuffers is received. This seems to be supported by the fact that FilterSendNetBufferLists has no “NumberOfNetBufferLists” parameter, in contrast to the FilterReceiveNetBufferLists function. The question is: ?Can we assume that ONLY ONE NetBufferList with a bunch of NetBuffers is ALWAYS received in FilterSendNetBufferLists?

  2. ?IP fragmentation is only present in FilterReceiveNetBufferLists received NetBuffers? That is, ?NO IP FRAGMENTATION is present in FilterSendNetBufferLists?

  3. Cloning a NetBufferList copies neither all NET_BUFFER_LIST structure fields (NblFlags, etc.) nor NetBufferListInfo values (for example, TcpIpChecksumNetBufferListInfo) from the origin to the clone, and does not update fields like the ChildRefCount of the parent. ?Which of the fields and values do we have to copy explicitely or update after a cloning operation?

  4. If we create a NetBufferList with specific information that we want to inject, ?which NET_BUFFER_LIST structure fields (NblFlags, etc.) and NetBufferListInfo values (TcpIpChecksumNetBufferListInfo, etc.) do we have to explicitely initialize? ?Do we have to copy some of them from a previously received NetBufferList in the same adapter?

Thanks very much in advance!