ネットワーク データ構造

ネットワーク データは、ネットワーク上で送受信されるデータのパケットで構成されます。 NDIS は、このようなデータを記述および整理するためのデータ構造を提供します。 NDIS 6.0 以降のプライマリ ネットワーク データ構造は以下のとおりです。

以下の図は、これらの構造間の関係を示しています。

Diagram illustrating NDIS 6.0 network data structures, including NET_BUFFER, NET_BUFFER_LIST, and NET_BUFFER_LIST_CONTEXT.

NDIS 6.0 以降では、 NET_BUFFER はネットワーク データをパッケージ化するための基本的な構成要素です。 各 NET_BUFFER 構造には MDL チェーンがあります。 MDL は、データ バッファーのアドレスを、NET_BUFFER 構造が指定するデータ領域にマップします。 このデータ マッピングは、NDIS 5.x 以前のドライバーが NDIS_PACKET 構造で使用している MDL チェーンと同じです。 NDIS は、MDL チェーンを操作する関数を提供します。

NET_BUFFER_LIST 構造には、複数の NET_BUFFER 構造をアタッチできます。 NET_BUFFER 構造は、NULL で終わる 1 つのリンク リストとして編成されます。 NET_BUFFER_LIST 構造を生成したドライバ、または NDIS のみが、リンク リストを直接変更して NET_BUFFER 構造の挿入と削除を行う必要があります。

NET_BUFFER LIST 構造には、リストにアタッチされているすべての NET_BUFFER 構造を説明する情報が含まれています。 ドライバーがコンテキスト情報のために追加の領域を必要とする場合、ドライバーは、このような情報を NET_BUFFER_LIST_CONTEXT 構造に格納することができます。 NDIS は、NET_BUFFER_LIST_CONTEXT 構造のデータの割り当て、解放、アクセスを行う関数を提供します。

複数の NET_BUFFER_LIST 構造をアタッチして、NET_BUFFER_LIST 構造のリストを形成することができます。 NET_BUFFER_LIST 構造は、NULL で終わる 1 つのリンク リストとして編成されます。 ドライバーは、リンク リストを直接変更して、NET_BUFFER_LIST 構造を挿入および削除できます。

NET_BUFFER

NET_BUFFER 構造

NET_BUFFER LIST

NET_BUFFER_LIST 構造

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_CONTEXT 構造