NET_PACKET 结构 (packet.h)
表示单个网络数据包。
语法
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
对于传输队列,如果主机堆栈启用了使用协议标头的任务卸载,则指定每个协议字段的只读偏移量。 例如,如果启用了 TCP 校验和卸载,则此成员将指定到 TCP 标头的偏移量。 否则,此成员为空。
对于接收队列,如果主机堆栈启用了使用协议标头的任务卸载,请设置 Layer2Type、 Layer3Type 和 Layer4Type 标志。 如果没有任务卸载,则此成员为空。
Ignore
对于接收队列,客户端设置此字段以防止将数据包指示给主机。 例如,如果硬件在将此数据包片段的字节写入此数据缓冲区时遇到 DMA 错误,则客户端可以将此字段设置为删除部分数据包。
对于传输队列,此字段是只读的。 如果设置,则表示客户端不应传输数据包。
Scratch
客户端可用于任何目的的位字段值。 重复使用 NET_PACKET 时,此值将重置为零。
Reserved1
保留。 客户端驱动程序不得读取或写入此值。
注解
每个 NET_PACKET 结构表示单个网络帧,并包含适用于所有数据包的基本元数据,例如帧布局。 NET_PACKET包含至少一个NET_FRAGMENT,用于描述数据包数据所在的系统内存中的位置。
NET_PACKET结构可以是NET_RING结构中的元素。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.29 |
最低 UMDF 版本 | 2.33 |
标头 | packet.h |