NET_BUFFER_LIST_POOL_PARAMETERS 结构 (ndis/nblapi.h)

NET_BUFFER_LIST_POOL_PARAMETERS 结构定义NET_BUFFER_LIST结构池的参数。

语法

typedef struct _NET_BUFFER_LIST_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  UCHAR              ProtocolId;
  BOOLEAN            fAllocateNetBuffer;
  USHORT             ContextSize;
  ULONG              PoolTag;
  ULONG              DataSize;
  ULONG              Flags;
} NET_BUFFER_LIST_POOL_PARAMETERS, *PNET_BUFFER_LIST_POOL_PARAMETERS;

成员

Header

NET_BUFFER_LIST_POOL_PARAMETERS 结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。

微型端口驱动程序必须将 HeaderType 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NET_BUFFER_LIST_POOL_PARAMETERS 结构的版本,驱动程序必须将 HeaderRevision 成员设置为以下值:

NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1

NDIS 6.0 的原始版本。

Size 成员设置为 NDIS_SIZEOF_NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1。

ProtocolId

调用方的类型。 微型端口、筛选器和中间驱动程序将此字段设置为零 (NDIS_PROTOCOL_ID_DEFAULT) 。 协议驱动程序使用以下值之一:

NDIS_PROTOCOL_ID_DEFAULT

指定默认协议驱动程序标识符。

NDIS_PROTOCOL_ID_TCP_IP

指定 TCP/IP 协议。

NDIS_PROTOCOL_ID_IPX

指定 IPX 协议。

NDIS_PROTOCOL_ID_NBF

指定 NetBEUI 协议。

fAllocateNetBuffer

如果此成员设置为 TRUE,则 NDIS 会分配 NET_BUFFER_LIST 结构的池。 每个分配 NET_BUFFER_LIST 结构都使用一个 NET_BUFFER 结构进行初始化。

如果此成员设置为 FALSE,则 NDIS 会分配 NET_BUFFER_LIST 结构的池。 每个分配 NET_BUFFER_LIST 结构未初始化为包含任何 NET_BUFFER 结构。

有关详细信息,请参见“备注”部分。

ContextSize

NDIS 应为此池中的NET_BUFFER_LIST结构提供预分配 NET_BUFFER_LIST_CONTEXT 结构数据的大小(以字节为单位)。 ContextSize 必须是MEMORY_ALLOCATION_ALIGNMENT定义的值的倍数。

PoolTag

调用方从此池分配NET_BUFFER_LIST结构时使用的内核池标记。 标记是一个字符串,由单引号分隔,最多包含四个字符,通常按反向顺序指定。 内核池标记可帮助 NDIS 识别从此池中分配 的NET_BUFFER_LIST 结构的所有者。

DataSize

与此 NET_BUFFER_LIST 池关联的数据缓冲区的默认数据大小(以字节为单位)。 NDIS 使用此值来设置它为任何关联的 NET_BUFFER 结构分配的任何数据缓冲区的大小。

有关详细信息,请参见“备注”部分。

Flags

定义了以下标志:

NET_BUFFER_LIST_POOL_FLAG_VERIFY 0x00000001

如果设置了此标志,NDIS 不会立即重复使用此池中的NET_BUFFER_LISTs。 相反,分配在释放时将标记为“无访问”,以便驱动程序可以检测释放后使用 bug。

注解

如果 fAllocateNetBuffer 设置为 FALSE,则 NDIS 不会分配 NET_BUFFER 结构, 并且 DataSize 应设置为零。

如果 DataSize 不为零,则必须将 fAllocateNetBuffer 设置为 TRUE。 这会导致 NDIS 使用指定大小的数据缓冲区分配 NET_BUFFER 结构。

如果 DataSize 为零且 fAllocateNetBufferTRUE,则 NDIS 将分配 NET_BUFFER 结构,但不会分配数据缓冲区。

NdisAllocateNetBufferListPool 函数的 Parameters 参数包含指向 NET_BUFFER_LIST_POOL_PARAMETERS 结构的指针。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
标头 ndis/nblapi.h (包括 ndis.h)

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_DATA

NdisAllocateNetBufferListPool