次の方法で共有


NET_FRAGMENT構造体 (fragment.h)

メモリ内の 1 つの連続するバッファーを表します。

構文

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 が再利用されると、この値は 0 にリセットされます。

OsReserved_Bounced

予約済み。 クライアント ドライバーは、この値の読み取りまたは書き込みを行う必要があります。

注釈

1 つの NET_PACKET 構造体には、1 つ以上の NET_FRAGMENT 構造体への参照が含まれます。

各フラグメントはメモリの事実上連続したバッファーですが、複数のフラグメントを含むパケットは事実上連続していません。

要件

要件
最小 KMDF バージョン 1.29
Header fragment.h