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结构。 将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT,将 Revision 成员设置为 NET_BUFFER_POOL_PARAMETERS_REVISION_1,将 Size 成员设置为 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不应从 NET_BUFFER 结构中释放使用 NdisAllocateNetBufferMdlAndData 分配的 MDL 和数据缓冲区。 调用 NdisFreeNetBuffer 函数时,使用 NET_BUFFER 结构释放此类结构。
调用 NdisFreeNetBufferPool 函数以释放使用 NdisAllocateNetBufferPool 创建的NET_BUFFER结构池。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis/nblapi.h (包括 ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_NetBuffer_Function (ndis) 、NdisAllocateNetBufferPool (ndis) 、NdisAllocateNetBufferPool_InitFail (ndis) |