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 函数。 仅当 fAllocateNetBuffer 为 TRUE 且 DataSize 为零时,才调用 NdisAllocateNetBufferAndNetBufferAndNetBufferList。
在创建NET_BUFFER_LIST结构池时,还可以调用 NdisAllocateNetBufferListPool 并将 DataSize 成员设置为非零值。 在这种情况下,NET_BUFFER结构、MDL 和数据与调用方从池分配的每个NET_BUFFER_LIST结构预分配。
NET_BUFFER使用 分配的结构、MDL 和数据缓冲区不应将 NdisAllocateNetBufferAndNetBufferList 或 NdisAllocateNetBufferList 与 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_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList