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 |