NET_BUFFER_LIST_CONTEXT 结构 (ndis/nbl.h)

NET_BUFFER_LIST_CONTEXT 结构存储 NET_BUFFER_LIST 结构的上下文信息。

语法

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

成员

Next

指向NET_BUFFER_LIST_CONTEXT结构链接列表中的下一个NET_BUFFER_LIST_CONTEXT结构的指针。

Size

NET_BUFFER_LIST_CONTEXT结构中整个上下文空间(包括已用和未使用的上下文空间)的大小(以字节为单位)。

Offset

从上下文数据缓冲区的开头到NET_BUFFER_LIST_CONTEXT结构中上下文数据开始的偏移量(以字节为单位)。 Offset 成员还指定NET_BUFFER_LIST_CONTEXT结构中未使用的上下文空间的大小(以字节为单位)。

ContextData

上下文数据缓冲区。 上下文数据可以包含驱动程序所需的任何信息。

注解

每个 NET_BUFFER_LIST 结构都可以包括预分配NET_BUFFER_LIST_CONTEXT结构。 当NET_BUFFER_LIST结构在驱动程序堆栈中移动时,可以扩展NET_BUFFER_LIST_CONTEXT结构的链接列表,以适应每个驱动程序的额外数据空间。

驱动程序应使用以下 NDIS 宏和函数来访问和操作NET_BUFFER_LIST_CONTEXT结构中的成员:

NET_BUFFER_LIST_CONTEXT 结构的 ContextData 成员指定NET_BUFFER_LIST_CONTEXT结构的数据部分。 若要提高系统性能,驱动程序应在驱动程序分配NET_BUFFER_LIST结构池时预先分配任何所需的上下文数据空间。 若要预先分配此数据空间,驱动程序会调用 NdisAllocateNetBufferListPool 函数,然后指定 ContextSize 参数中所需的数据空间量。 此数据空间的预分配可节省 NDIS 在接收和发送路径中分配内存。
注意 NDIS 估计所需的上下文数据空间,并在必要时调整分配的数据空间以满足整个驱动程序堆栈的要求。
 
Offset 成员指定NET_BUFFER_LIST_CONTEXT结构中未使用的上下文空间量。 Offset 成员还指示从 ContextData 成员的开头到已用上下文数据空间开始的偏移量。

NDIS 驱动程序调用 NdisAllocateNetBufferListContext 函数,用于在NET_BUFFER_LIST_CONTEXT结构中分配连续缓冲区空间。 如有必要,NDIS 会分配具有额外空间的新NET_BUFFER_LIST_CONTEXT结构以执行请求。 NDIS 驱动程序调用用于释放缓冲区空间的 NdisFreeNetBufferListContext 函数。

使用 NET_BUFFER_LIST_CONTEXT_DATA_SIZE 宏以获取已用上下文空间的大小。 使用 NET_BUFFER_LIST_CONTEXT_DATA_START 宏获取已用上下文空间的起始地址。

有关如何使用 net 缓冲区的详细信息,请参阅 NET_BUFFER 体系结构

要求

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

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext