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) |