NET_BUFFER データのパッケージ化
NDIS 6.0 でデータのパッケージ化が再設計されました。 NDIS_PACKET 構造に基づく送受信アーキテクチャは、NET_BUFFER および NET_BUFFER_LIST 構造に基づくアーキテクチャに置き換えられました。 NET_BUFFER 構造は、NDIS_PACKET 構造と同等の機能を持つものです。 NET_BUFFER 構造は、ネットワークデータのバッファー (MDL チェーン) と NDIS、プロトコルドライバー、およびミニポート ドライバーの予約領域を指定します。 NET_BUFFER 構造は、NET_BUFFER_LIST 構造によって記述されたリスト内でリンクすることができます。 NET_BUFFER_LIST 構造は、リスト内のすべての NET_BUFFER 構造に適用される帯域外 (OOB) データのストレージも提供します。
TCP/IP トランスポートや Winsock を含む、Microsoft 次世代ネットワークドライバー スタックのすべてのコンポーネントは、NET_BUFFERデータパッケージを使用します。 ドライバースタック全体で統一されたデータパッケージ化を行うと、データを再パッケージ化する必要がなくなり、データ処理がシンプルになり、関数呼び出しの数が減ります。
NDIS_PACKET 構造を使用する古いドライバーに対応するために、NDIS 6.0 は NDIS_PACKET 構造を NET_BUFFER 構造に変換します。その逆も同様です。 この変換は NDIS ドライバーに対して透過的です。
NDIS は、ドライバーのデータバックフィル要件を上位レベルのドライバーに伝達します。 送信データに NET_BUFFER および NET_BUFFER_LIST 構造を割り当てる場合、上位レベルのドライバーは、スタック内のすべての下位レベルのドライバーを収容するのに十分なデータ領域を割り当てます。 その結果、下位レベルのドライバーは、レイヤー固有のヘッダーを収容するために追加のバッファー領域を割り当てる必要がなくなります。 その代わりに、あらかじめ割り当てられたバックフィル領域をこの目的のために使用することができます。
NET_BUFFER アーキテクチャの詳細については、「NET_BUFFER アーキテクチャ」を参照してください。