PNET_BUFFER_LIST NdisAllocateNetBufferAndNetBufferList( NDIS_HANDLE PoolHandle, USHORT ContextSize, USHORT ContextBackFill, __drv_aliasesMem PMDL MdlChain, ULONG DataOffset, SIZE_T DataLength );
A NET_BUFFER_LIST structure pool handle that was previously returned from the NdisAllocateNetBufferListPool function. The fAllocateNetBuffer member of the NET_BUFFER_LIST_POOL_PARAMETERS structure that the caller passed to NdisAllocateNetBufferListPool must have been set to TRUE and the DataSize member set to zero.
The amount of used data space in the NET_BUFFER_LIST_CONTEXT structure to reserve for the caller. The ContextSize must be a multiple of the value defined by MEMORY_ALLOCATION_ALIGNMENT.
The amount of unused data space (backfill space) that the caller requires. NDIS adds this value to the ContextSize and allocates additional space. The ContextBackFill must be a multiple of the value defined by MEMORY_ALLOCATION_ALIGNMENT.
A pointer to an MDL chain that NDIS uses to initialize the preallocated NET_BUFFER structure. MdlChain can be NULL.
The initial offset, in bytes, from the start of the buffer to the start of the used data space in the MDL chain. Data space ahead of this offset is unused data space. Therefore, this value also represents the initial amount of available backfill space in the MDL chain. If MdlChain is NULL, DataOffset must be 0.
The length, in bytes, of the used data space in the MDL chain. If MdlChain is NULL, DataLength must be 0.
NdisAllocateNetBufferAndNetBufferList returns a pointer to the allocated NET_BUFFER_LIST structure. The NET_BUFFER_LIST structure includes a NET_BUFFER structure. If the allocation was unsuccessful, this pointer is NULL.
The structures that the NdisAllocateNetBufferAndNetBufferList function allocates must come from a pool that includes NET_BUFFER_LIST structures that are paired with preallocated NET_BUFFER structures. To create such a pool, you must call the NdisAllocateNetBufferListPool function with the fAllocateNetBuffer member of the NET_BUFFER_LIST_POOL_PARAMETERS structure set to TRUE, and the DataSize member set to zero.
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain; NET_BUFFER_DATA_LENGTH(_NB) = X'; NET_BUFFER_DATA_OFFSET(_NB) = Y'; NET_BUFFER_CURRENT_MDL(_NB) = M'; NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
|Windows version||Supported in NDIS 6.0 and later.|
|Header||ndis.h (include Ndis.h)|
|DDI compliance rules||Irql_NetBuffer_Function|