この記事では、ドライバースタックにおけるドライバーに適用される用語としての上端 と下端 について説明します。
手記
このトピックを読む前に、デバイス ノードとデバイス スタック および ドライバー スタックに示されているアイデアを理解しておく必要があります。
ドライバー スタック
I/O 要求に参加するドライバーのシーケンスは、要求の ドライバー スタック と呼ばれます。 I/O 要求は、最初にドライバー スタック内の最上位ドライバー、次の下位ドライバーによって処理され、要求が完全に処理されるまで処理されます。
上位のドライバーが呼び出すことができる一連の関数をドライバーが実装する場合、その一連の関数は、ドライバーの の上端 またはドライバーの の上端インターフェイス と呼ばれます。
ドライバーが下位ドライバーが呼び出すことができる一連の関数を実装する場合、その一連の関数は、ドライバーの 下端 またはドライバーの 下端インターフェイス と呼ばれます。
ドライバーは、スタック内の下位ドライバーの上端を呼び出すことができます。 ドライバーは、スタック内の上位のドライバーの下端を呼び出すこともできます。
上端および下端の音声例
オーディオ ミニポート ドライバーは、ドライバー スタック内のオーディオ ポート ドライバーの下に位置しています。 ポート ドライバーは、ミニポート ドライバーの上端への呼び出しを行います。 ミニポート ドライバーは、ポート ドライバーの下端への呼び出しを行います。
ミニポート ドライバーの上にあるオーディオ ポート ドライバーの
前述の図は、ドライバースタック内でミニポートドライバーの上にポートドライバーが配置されていると考えることが有益な場合があることを示しています。 I/O 要求は最初にポート ドライバーによって処理され、次にミニポート ドライバーによって処理されるため、ポート ドライバーはミニポート ドライバーの上にあると考えるのが妥当です。 ただし、次に示すように、(ミニポート、ポート) ドライバー ペアは通常、デバイス スタック内の 1 つのレベルに配置されます。
(ミニポート/ポート) ペアを持つデバイス スタックの
手記
デバイス スタック は、ドライバー スタックと同じではありません。 これらの用語の定義、およびドライバーのペアがデバイス スタック内の 1 つのレベルを占有する単一の WDM ドライバーを形成する方法については、「ミニドライバーとドライバーのペアを参照してください。
同じデバイス ノードとデバイス スタックの図を描画する別の方法を次に示します。
ポート ドライバーがミニポートの上にあるデバイス スタックの
上の図では、(ミニポート、ポート) ペアが、デバイス スタック内の単一のデバイス オブジェクト (FDO) に関連付けられた単一の WDM ドライバーを形成していることがわかります。つまり、(ミニポート、ポート) ペアは、デバイス スタック内の 1 つのレベルのみを占有します。 ただし、ミニポート ドライバーとポート ドライバーの間の垂直方向の関係もわかります。 ポート ドライバーはミニポート ドライバーの上に表示され、ポート ドライバーが最初に I/O 要求を処理し、次にミニポート ドライバーに呼び出して追加処理を行っていることを示します。
重要なポイントは、ポート ドライバーがミニポート ドライバーの上端インターフェイスを呼び出すときに、デバイス スタックに I/O 要求を渡すのと同じではないということです。 ドライバー スタック (デバイス スタックではない) では、ミニポート ドライバーの上にポート ドライバーを描画することを選択できますが、ポート ドライバーがデバイス スタックのミニポート ドライバーの上にあることを意味するものではありません。
NDIS の上端および下端の例
ときには、ドライバーが下位ドライバーの上端を間接的に呼び出します。 たとえば、TCP/IP プロトコル ドライバー、ドライバー スタック内の NDIS ミニポート ドライバーの上にあるとします。 ミニポート ドライバーは、ミニポート ドライバーの上端を形成 ミニポートXxx 関数のセットを実装します。 TCP/IP プロトコル ドライバー は、NDIS ミニポート ドライバーの上端に をバインドすると言います。 ただし、TCP/IP ドライバーは、ミニポートXxx 関数を直接呼び出しません。 代わりに、NDIS ライブラリ内の関数を呼び出し、ミニポートXxx 関数を呼び出します。
tcp/ip と ndis ミニポート スタックの
上の図は、ドライバー スタックを示しています。 同じドライバーの別のビューを次に示します。
上の図は、ネットワーク インターフェイス カード (NIC) のデバイス ノードを示しています。 デバイス ノードには、プラグ アンド プレイ (PnP) デバイス ツリー内の位置があります。 NIC のデバイス ノードには、3 つのデバイス オブジェクトを含むデバイス スタックがあります。 NDIS ミニポート ドライバーと NDIS ライブラリがペアとして動作します。 ペア (MyMiniport.sys、Ndis.sys) は、機能デバイス オブジェクト (FDO) で表される単一の WDM ドライバーを形成します。
また、プロトコル ドライバーの Tcpip.sys が NIC のデバイス スタックに含まれていないことにも注意してください。 実際、Tcpip.sys は PnP デバイス ツリーの一部ではありません。
概要
上端 と下端 という用語は、スタック内のドライバーが相互に通信するために使用するインターフェイスを記述するために使用されます。
関連トピック
- すべてのドライバー開発者向けの の概念
- デバイス ノードとデバイス スタック
- ドライバー スタック
- オーディオデバイス
- Windows Vista 以降のネットワークドライバー