KMDF ミニポート ドライバーの作成

一部のミニポート ドライバーは、ポート/ミニポート アーキテクチャにより、ミニポート ドライバーが WDM またはフレームワーク インターフェイスを使用して他のドライバーと通信できる場合、カーネルモード ドライバー フレームワークを使用できます。 たとえば、WDM 下端を持つ NDIS ミニポート ドライバーは、フレームワークを使用して下端を実装できます。

ミニポート ドライバーでフレームワークを使用する場合、ドライバーは次の条件を満たす必要があります。

  • WdfDriverCreate を呼び出す前に、ドライバーの WDF_DRIVER_CONFIG 構造体の DriverInitFlags メンバーで WdfDriverInitNoDispatchOverride フラグを設定します。 このフラグを設定すると、フレームワークではなくポート ドライバーが、I/O マネージャーがドライバーに送信した I/O 要求パケット (IRP) をインターセプトできます。

  • WdfDeviceCreate の代わりに WdfDeviceMiniportCreate を呼び出して、ミニポート ドライバーのデバイスのフレームワーク デバイス オブジェクトを作成します。 ミニポート ドライバーは、そのポート ドライバーがデバイスが使用可能であることを通知するときに WdfDeviceMiniportCreate を呼び出す必要があります。

  • WdfObjectDelete を呼び出して、ドライバーがデバイスが削除されたと判断したときに、WdfDeviceMiniportCreate によって作成されるデバイス オブジェクトを削除します。 (ドライバーが WdfDriverInitNoDispatchOverride フラグを設定しているため、フレームワークは、デバイスが削除されるタイミングを判断できず、デバイス オブジェクトを削除できません)

  • ポート ドライバーがミニポート ドライバーにアンロードしようとしていることを通知するときに、WdfDriverMiniportUnload を呼び出します。

ミニポート ドライバーは、基になるデバイスがプラグ アンド プレイ (PnP) をサポートしている場合にのみ、フレームワークを使用できます。 ミニポート ドライバーは、フレームワークのコントロール デバイス オブジェクトを使用できません。

制限は、WdfDeviceMiniportCreate メソッドが作成するデバイス オブジェクトに適用されます。 これらの制限の一覧については、「WdfDeviceMiniportCreate」を参照してください。