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 结构。

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

NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1

NDIS 6.0 的原始版本。

大小 成员设置为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 (include ndis.h)

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_DATA

NdisAllocateNetBufferListPool