packet.h (NET_PACKET 结构)

表示单个网络数据包。

语法

typedef struct _NET_PACKET {
  UINT32            FragmentIndex;
  UINT16            FragmentCount;
  NET_PACKET_LAYOUT Layout;
  UINT8             Ignore : 1;
  UINT8             Scratch : 1;
  UINT8             Reserved1 : 6;
} NET_PACKET;

成员

FragmentIndex

此数据包有效负载中第一 个NET_FRAGMENT 结构的片段环中的索引。

FragmentCount

属于此数据包 的NET_FRAGMENT 结构数。

Layout

NET_PACKET_LAYOUT结构。

对于传输队列,如果主机堆栈启用了使用协议标头的任务卸载,则指定每个协议字段的只读偏移量。 例如,如果启用了 TCP 校验和卸载,则此成员指定 TCP 标头的偏移量。 否则,此成员为空。

对于接收队列,如果主机堆栈已启用使用协议标头的任务卸载,请设置 Layer2TypeLayer3Type 和 Layer4Type 标志。 如果没有任务卸载,此成员为空。

Ignore

对于接收队列,客户端设置此字段以防止向主机指示数据包。 例如,如果硬件在将此数据包片段的字节写入此数据缓冲区时遇到 DMA 错误,则客户端可以将此字段设置为删除部分数据包。

对于传输队列,此字段为只读。 如果设置,则指示客户端不应传输数据包。

Scratch

客户端可用于任何用途的位字段值。 重复使用 NET_PACKET 时,此值将重置为零。

Reserved1

保留。 客户端驱动程序不得读取或写入此值。

注解

每个 NET_PACKET 结构表示单个网络帧,并包含适用于所有数据包的基本元数据,例如框架布局。 NET_PACKET包含至少一个NET_FRAGMENT,用于描述数据包数据所在的系统内存中的位置。

NET_PACKET结构可以是NET_RING结构中的元素。

要求

   
最低 KMDF 版本 1.29
Header packet.h