NdisAllocateNetBufferListPool 函数 (ndis/nblapi.h)

调用 NdisAllocateNetBufferListPool 函数以分配 包含NET_BUFFER_LIST 结构的池。

语法

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferListPool(
  [in, optional] NDIS_HANDLE                           NdisHandle,
  [in]           NET_BUFFER_LIST_POOL_PARAMETERS const *Parameters
);

参数

[in, optional] NdisHandle

在调用方初始化期间获取的 NDIS 句柄。

[in] Parameters

指向定义池参数 的NET_BUFFER_LIST_POOL_PARAMETERS 结构的指针。

返回值

NdisAllocateNetBufferListPool 返回 NDIS 分配的NET_BUFFER_LIST结构池的句柄。 如果分配失败,则此句柄为 NULL。 此句柄是后续调用 NDIS 函数时所需的参数,用于从此池中分配和释放NET_BUFFER_LIST结构。

注解

在大多数情况下,分配 NET_BUFFER_LIST 结构的调用方将在该 NET_BUFFER_LIST 结构上分配并排队至少一个NET_BUFFER结构。 在分配NET_BUFFER_LIST结构池时预分配NET_BUFFER结构比单独分配NET_BUFFER_LIST结构和NET_BUFFER结构更高效。

创建NET_BUFFER_LIST结构池时,可以使用 fAllocateNetBuffer 值设置为 TRUE 调用 NdisAllocateNetBufferListPool 函数。 在这种情况下,NET_BUFFER结构预分配了调用方从池中分配的每个NET_BUFFER_LIST结构。 你可以调用 NdisAllocateNetBufferAndNetBufferList 函数或用于从此类池分配NET_BUFFER_LIST结构的 NdisAllocateNetBufferList 函数。 仅当 fAllocateNetBufferTRUEDataSize 为零时,才调用 NdisAllocateNetBufferAndNetBufferAndNetBufferList

在创建NET_BUFFER_LIST结构池时,还可以调用 NdisAllocateNetBufferListPool 并将 DataSize 成员设置为非零值。 在这种情况下,NET_BUFFER结构、MDL 和数据与调用方从池分配的每个NET_BUFFER_LIST结构预分配。

NET_BUFFER使用 分配的结构、MDL 和数据缓冲区不应将 NdisAllocateNetBufferAndNetBufferListNdisAllocateNetBufferList 与 NET_BUFFER_LIST 结构分开释放。 调用 NdisFreeNetBufferList 函数时,使用 NET_BUFFER_LIST 结构释放此类结构。

调用用于释放NET_BUFFER_LIST结构池的 NdisFreeNetBufferListPool 函数。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis/nblapi.h (包括 ndis.h)
Library Ndis.lib
DLL Ndis.sys
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_NetBuffer_Function (ndis) 、NdisAllocateNetBufferListPool (ndis) 、NdisAllocateNetBufferListPool_InitFail (ndis)

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_POOL_PARAMETERS

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisFreeNetBufferList

NdisFreeNetBufferListPool