ネットワーク データ構造
ネットワーク データは、ネットワーク上で送受信されるデータのパケットで構成されます。 NDIS は、このようなデータを記述および整理するためのデータ構造を提供します。 NDIS 6.0 以降のプライマリ ネットワーク データ構造は以下のとおりです。
以下の図は、これらの構造間の関係を示しています。
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 構造を挿入および削除できます。