NDIS 中間ドライバーの概要
NDIS ドライバー スタックには、ミニポート ドライバーとプロトコル ドライバーを含める必要があり、中間ドライバーを含めることもできます。 中間ドライバーは省略可能であるため、中間ドライバーに対処する前に、ミニポート ドライバー、プロトコル ドライバー、NDIS 間の関係を理解する必要があります。
ミニポート ドライバーは、NIC デバイスを制御し、プロトコル ドライバーの下端と通信します。 プロトコル ドライバーは、TCP/IP などのプロトコルを実装し、ドライバー スタック内のミニポート ドライバーの上にあります。 NDIS は、ミニポート ドライバーとプロトコル ドライバーの開発と保守を簡略化するサービスを提供します。
ミニポート ドライバー、プロトコル ドライバー、NDIS 間の関係を次の図に示します。
NDIS ミニポート ドライバーとプロトコル ドライバーは、標準の NDIS インターフェイスを介してバインドされます。
NDIS 中間ドライバーには、上端にプロトコル ドライバー インターフェイスが含まれ、下端にミニポート ドライバー インターフェイスが含まれます。 中間ドライバーのプロトコル インターフェイスを使用すると、ミニポート ドライバー インターフェイスを使用して、ドライバーの上に読み込むことができます。 したがって、中間ドライバーは、ミニポート ドライバーまたはその他の中間ドライバーの上に読み込むことができます。 中間ドライバーのミニポート インターフェイスを使用すると、プロトコルの下端インターフェイスを使用して、ドライバーの下に読み込むことができます。 したがって、中間ドライバーは、プロトコル ドライバーの下または他の中間ドライバーの下に読み込むことができます。
次の図に、ミニポート ドライバー、プロトコル ドライバー、中間ドライバー、NDIS 間の関係を示します。
中間ドライバー ミニポート インターフェイスは、「仮想ミニポート」と呼ばれます。 これは、物理デバイスを直接制御しないという点で仮想的です。 代わりに、基になるミニポート ドライバーに依存して、物理デバイスと通信します。
中間ドライバーと他のドライバーの間のバインドは、「外部バインド」と呼ばれます。 NDIS は外部バインディングを制御します。 仮想ミニポートの上端は、プロトコル ドライバーまたは別の中間ドライバーである可能性がある、次に高いドライバーとバインドされます。 中間ドライバー プロトコルの下端は、別の中間ドライバーまたは基になるミニポート ドライバーである可能性がある次の下位ドライバーにバインドされます。
仮想ミニポートの下端と、中間ドライバー プロトコルの上端に、外部バインドは必要ありません。 代わりに、中間ドライバーは、仮想ミニポートとそのプロトコルを、内部的にバインドします。 これらの内部バインディングは実装固有であり、NDIS によって制御されません。
次の図は、仮想ミニポートと中間ドライバー プロトコル間の内部バインディングを示しています。
NDIS 中間ドライバーには、フィルター中間ドライバーと MUX 中間ドライバーの 2 種類があります。 次のトピックでは、これらのドライバーの種類について説明します。