NdisAllocateNetBufferPool 函数 (ndis/nblapi.h)
调用 NdisAllocateNetBufferPool 函数来分配 NET_BUFFER 结构的池。
语法
NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
[in, optional] NDIS_HANDLE NdisHandle,
[in] NET_BUFFER_POOL_PARAMETERS const *Parameters
);
参数
[in, optional] NdisHandle
调用方初始化期间获取的 NDIS 句柄。
[in] Parameters
指向定义池参数的NET_BUFFER_POOL_PARAMETERS结构的指针。 该结构的定义如下:
typedef struct _NET_BUFFER_POOL_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG PoolTag;
ULONG DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;
此结构包括以下成员:
页眉
NET_BUFFER_POOL_PARAMETERS结构的 NDIS_OBJECT_HEADER 结构。 将 标头 指定为NDIS_OBJECT_TYPE_DEFAULT、修订 成员NET_BUFFER_POOL_PARAMETERS_REVISION_1以及 大小 成员NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1的结构 类型 成员。
PoolTag
调用方在此池中分配 NET_BUFFER 结构时使用的内核池标记。 该标记是一个字符串,用单引号分隔,最多四个字符,通常按相反顺序指定。 内核池标记可帮助 NDIS 识别从此池分配的NET_BUFFER结构的所有者。
DataSize
与此池关联的数据缓冲区的默认数据大小。 如果调用方调用此值,则调用方必须设置此值 NdisAllocateNetBufferMdlAndData 函数。 NDIS 使用此值设置为NET_BUFFER结构分配的数据缓冲区的大小。 如果调用方不使用此功能,则此值应设置为零。
返回值
NdisAllocateNetBufferPool 将句柄返回到 NDIS 分配的NET_BUFFER结构池。 如果分配失败,则此句柄 NULL。 此句柄是后续调用 NDIS 函数所需的参数,用于从此池中分配和释放NET_BUFFER结构。
言论
调用以下函数,从NET_BUFFER结构池中分配 NET_BUFFER 结构。
NdisAllocateNetBufferMdlAndData使用 NdisAllocateNetBufferMdlAndData 分配的 MDL 和数据缓冲区不应与NET_BUFFER结构分开释放。 调用 NdisFreeNetBuffer 函数时,可以使用NET_BUFFER结构释放此类结构。
调用 NdisFreeNetBufferPool 函数,以释放使用 NdisAllocateNetBufferPool创建的NET_BUFFER结构池。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.0 及更高版本中受支持。 |
目标平台 | 普遍 |
标头 | ndis/nblapi.h (include ndis.h) |
库 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_NetBuffer_Function(ndis),NdisAllocateNetBufferPool(ndis),NdisAllocateNetBufferPool_InitFail(ndis) |