NET_PACKET構造体 (packet.h)

1 つのネットワーク パケットを表します。

構文

typedef struct _NET_PACKET {
  UINT32            FragmentIndex;
  UINT16            FragmentCount;
  NET_PACKET_LAYOUT Layout;
  UINT8             Ignore : 1;
  UINT8             Scratch : 1;
  UINT8             Reserved1 : 6;
} NET_PACKET;

メンバー

FragmentIndex

このパケットのペイロード内の最初の NET_FRAGMENT 構造体のフラグメント リング内のインデックス。

FragmentCount

このパケット に属するNET_FRAGMENT 構造体の数。

Layout

NET_PACKET_LAYOUT構造体。

送信キューの場合、ホスト スタックでプロトコル ヘッダーを使用するタスク オフロードが有効になっている場合は、各プロトコル フィールドへの読み取り専用オフセットを指定します。 たとえば、TCP チェックサム オフロードが有効になっている場合、このメンバーは TCP ヘッダーへのオフセットを指定します。 それ以外の場合、このメンバーは空です。

受信キューの場合、ホスト スタックでプロトコル ヘッダーを使用するタスク オフロードが有効になっている場合は、 Layer2TypeLayer3TypeLayer4Type フラグを設定します。 タスク オフロードがない場合、このメンバーは空です。

Ignore

受信キューの場合、クライアントはこのフィールドを設定して、パケットがホストに示されないようにします。 たとえば、このパケットのフラグメントのデータ バッファーにバイトを書き込んでいるときにハードウェアで DMA エラーが発生した場合、クライアントはこのフィールドを設定して部分パケットをドロップできます。

送信キューの場合、このフィールドは読み取り専用です。 設定されている場合は、クライアントがパケットを送信しないことを示します。

Scratch

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

Reserved1

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

注釈

NET_PACKET 構造体は 1 つのネットワーク フレームを表し、フレーミング レイアウトなど、すべてのパケットに適用できる基本的なメタデータが含まれています。 NET_PACKETには、パケット データが存在するシステム メモリ内の場所を記述する少なくとも 1 つのNET_FRAGMENTが含まれています。

NET_PACKET構造体には、NET_RING構造体内の要素を指定できます。

要件

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