Allocating Buffer Pools
During initialization (that is, in the context of its MiniportInitializeEx function), an offload target typically creates two buffers pools, each of which contains NET_BUFFER_LIST and NET_BUFFER structures. The offload target uses one buffer pool for making receive indications through the TCP chimney when calling the NdisTcpOffloadReceiveHandler function. The offload target uses the other buffer pool for making receive indications through the nonoffload NDIS interface when calling the NdisMIndicateReceiveNetBufferLists function. Using two buffer pools in this way improves performance and makes debugging easier.
Note that each allocated NET_BUFFER_LIST structure must have only one NET_BUFFER structure associated with it. The number of NET_BUFFER_LIST structures that the offload target allocates in each pool depends on the implementation.
For more information about creating buffer pools, see Miniport Driver Buffer Management.