NDIS プロトコル ドライバーは、その下端で ProtocolXxx 関数のセットをエクスポートします。 このようなプロトコル ドライバーは、ネットワーク データを送受信するために NDIS と通信します。 プロトコル ドライバーは、基になるミニポート ドライバーまたは上端に ミニポートXxx インターフェイスをエクスポートする中間ドライバーにバインドします。
手記 中間ドライバー (仮想ミニポート) のミニポート ドライバーの上端は、物理デバイスを管理しません。 基になるミニポート ドライバーは、物理デバイスを管理します。
プロトコル ドライバーは、ネットワーク データを送受信するために、基になる NDIS ドライバーと通信するために常に NDIS 提供の関数を使用します。 たとえば、コネクションレスの下端を持つプロトコル ドライバー (イーサネットなど、コネクションレス メディアの基になるドライバーと通信する) は、 NdisSendNetBufferLists を呼び出して、基になる NDIS ドライバーにネットワーク データを送信する必要があります。 プロトコル ドライバーは、 NdisOidRequest を呼び出して、基になるコネクションレス ドライバーがサポートする OID を照会または設定できます。 接続指向の下端 (ISDN など、接続指向メディアの基になるドライバーと通信する) を持つプロトコル ドライバーは、 NdisCoSendNetBufferLists を呼び出して、ネットワーク データを下位レベルの NDIS ドライバーに送信する必要があります。 また、NdisCoOidRequest を呼び出して、基になる接続指向ドライバーでサポートされている OID を照会または設定することもできます。
NDIS には、基になるオペレーティング システムの詳細を非表示にする NdisXxx 関数のセットも用意されています。 たとえば、プロトコル ドライバーは、 NdisInitializeEvent を呼び出して同期用のイベントを作成し、 NdisInitializeListHead を呼び出してリンク リストを作成できます。 このような関数の NDIS バージョンを使用するプロトコル ドライバーは、Microsoft オペレーティング システム全体で移植性が高くなります。 ただし、プロトコル ドライバーは、 IoCreateDevice などのカーネル モード サポート ルーチンを呼び出すこともできます。 詳細については、「 Kernel-Mode サポート ルーチンの概要」を参照してください。
プロトコル ドライバーの開発者は、他の NDIS ドライバーに適用されるのと同じ プログラミング上の考慮事項 を使用する必要があります。