Export (0) Print
Expand All

NdisAllocateNetBufferListPool function

Call the NdisAllocateNetBufferListPool function to allocate a pool of NET_BUFFER_LIST structures.

Syntax


NDIS_HANDLE NdisAllocateNetBufferListPool(
  _In_opt_  NDIS_HANDLE NdisHandle,
  _In_      PNET_BUFFER_LIST_POOL_PARAMETERS Parameters
);

Parameters

NdisHandle [in, optional]

An NDIS handle that was obtained during caller initialization.

Parameters [in]

A pointer to a NET_BUFFER_LIST_POOL_PARAMETERS structure that defines the parameters for the pool.

Return value

NdisAllocateNetBufferListPool returns a handle to the NET_BUFFER_LIST structure pool that NDIS allocates. If the allocation was unsuccessful, this handle is NULL. This handle is a required parameter in subsequent calls to NDIS functions that allocate and free NET_BUFFER_LIST structures from this pool.

Remarks

In most cases, a caller that allocates a NET_BUFFER_LIST structure will allocate and queue at least one NET_BUFFER structure on that NET_BUFFER_LIST structure. It is more efficient to preallocate NET_BUFFER structures when you allocate a pool of NET_BUFFER_LIST structures than allocating NET_BUFFER_LIST structures and NET_BUFFER structures separately.

You can call the NdisAllocateNetBufferListPool function with the fAllocateNetBuffer value set to TRUE when creating a NET_BUFFER_LIST structure pool. In this case, a NET_BUFFER structure is preallocated with each NET_BUFFER_LIST structure that the caller allocates from the pool. You can call the NdisAllocateNetBufferAndNetBufferList function or the NdisAllocateNetBufferList function to allocate NET_BUFFER_LIST structures from such a pool. Call NdisAllocateNetBufferAndNetBufferList only if fAllocateNetBuffer is TRUE and DataSize is zero.

You can also call NdisAllocateNetBufferListPool and set the DataSize member to a nonzero value when creating a NET_BUFFER_LIST structure pool. In this case, a NET_BUFFER structure, MDL, and data are preallocated with each NET_BUFFER_LIST structure that the caller allocates from the pool.

NET_BUFFER structures, MDLs, and data buffers that are allocated with NdisAllocateNetBufferAndNetBufferList or NdisAllocateNetBufferList should not be freed separate from the NET_BUFFER_LIST structure. Such structures are freed with the NET_BUFFER_LIST structure when you call the NdisFreeNetBufferList function.

Call the NdisFreeNetBufferListPool function to free a NET_BUFFER_LIST structure pool.

Requirements

Version

Supported in NDIS 6.0 and later.

Header

Ndis.h (include Ndis.h)

IRQL

<= DISPATCH_LEVEL

DDI compliance rules

Irql_NetBuffer_Function

See also

NdisAllocateNetBufferList
NdisAllocateNetBufferAndNetBufferList
NdisFreeNetBufferList
NdisFreeNetBufferListPool
NET_BUFFER
NET_BUFFER_LIST
NET_BUFFER_LIST_CONTEXT
NET_BUFFER_LIST_POOL_PARAMETERS

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft