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
包含从 VirtualAddress 和 DmaLogicalAddress 开始到有效数据包有效负载开始的偏移量。 此值小于或等于 Capacity 的值。
若要获取此片段的虚拟地址,请调用 NetExtensionGetFragmentVirtualAddress。
若要获取此片段的 DMA 逻辑地址,请调用 NetExtensionGetFragmentLogicalAddress。
对于传输队列,此值为只读。
Scratch
客户端可用于任何目的的位字段值。 当重用此片段所属 NET_PACKET 时,此值将重置为零。
OsReserved_Bounced
保留。 客户端驱动程序不得读取或写入此值。
注解
单个 NET_PACKET 结构包含对一个或多个 NET_FRAGMENT 结构的引用。
虽然每个片段几乎都是连续的内存缓冲区,但包含多个片段的数据包几乎不连续。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.29 |
标头 | fragment.h |