次の方法で共有


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

パケット バッファーの合計長を格納します。

送信キューの場合、この値は読み取り専用です。

Offset

VirtualAddress の先頭からのオフセットと、有効なパケット ペイロードの先頭までの DmaLogicalAddress を格納します。 この値は、容量 の値以下です。

このフラグメントの仮想アドレスを取得するには、NetExtensionGetFragmentVirtualAddress呼び出します。

このフラグメントの DMA 論理アドレスを取得するには、NetExtensionGetFragmentLogicalAddressを呼び出します。

送信キューの場合、この値は読み取り専用です。

Scratch

クライアントが任意の目的で使用できるビット フィールド値。 このフラグメントが属する NET_PACKET が再利用されると、この値は 0 にリセットされます。

OsReserved_Bounced

引っ込み思案。 クライアント ドライバーでは、この値を読み取ったり書き込んだりすることはできません。

備考

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

各フラグメントはメモリの実質的に連続したバッファーですが、複数のフラグメントを含むパケットは実質的にあいまいです。

必要条件

要件 価値
最小 KMDF バージョン 1.29
ヘッダー fragment.h