共用方式為


NET_FRAGMENT結構 (fragment.h)

表示記憶體中的一個連續緩衝區。

語法

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