fragment.h) (NET_FRAGMENT 结构

表示内存中的一个连续缓冲区。

语法

typedef struct _NET_FRAGMENT {
  UINT64 ValidLength : 26;
  UINT64 Capacity : 26;
  UINT64 Offset : 10;
  UINT64 Scratch : 1;
  UINT64 OsReserved_Bounced : 1;
} NET_FRAGMENT;

成员

ValidLength

包含数据包有效负载的长度。 此值小于或等于 Capacity 的值。

对于传输队列,此值为只读。

Capacity

包含数据包缓冲区的总长度。

对于传输队列,此值为只读。

Offset

包含从 VirtualAddressDmaLogicalAddress 开始到有效数据包有效负载开始的偏移量。 此值小于或等于 Capacity 的值。

若要获取此片段的虚拟地址,请调用 NetExtensionGetFragmentVirtualAddress

若要获取此片段的 DMA 逻辑地址,请调用 NetExtensionGetFragmentLogicalAddress

对于传输队列,此值为只读。

Scratch

客户端可用于任何目的的位字段值。 当重用此片段所属 NET_PACKET 时,此值将重置为零。

OsReserved_Bounced

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

注解

单个 NET_PACKET 结构包含对一个或多个 NET_FRAGMENT 结构的引用。

虽然每个片段几乎都是连续的内存缓冲区,但包含多个片段的数据包几乎不连续。

要求

要求
最低 KMDF 版本 1.29
标头 fragment.h