I/O ターゲットの概要

このセクションのトピックでは、Windows Driver Frameworks (WDF) ドライバーが I/O リクエストを転送する方法、新しいリクエストを作成してI/O ターゲットと呼ばれる別のドライバーに送信する方法について説明します。

関数 ドライバー、フィルター ドライバー、またはミニポート ドライバーが I/Oリクエストを受信すると、ドライバーがこれらのリクエストを単独で処理できる場合や、他のドライバーの支援が必要な場合があります。 ドライバーに支援が必要な場合は、別のドライバーにリクエストを転送するか、1 つ以上の新しいリクエストを作成して別のドライバーに送信できます。

カーネル モード ドライバー フレームワークでは、 I/O ターゲット は、I/O リクエストのターゲットであるデバイス オブジェクトを表します。 関数、フィルター、またはミニポート ドライバーは、I/O ターゲットを使用して、別のドライバーに I/O リクエストを送信できます。 ドライバーは多くの場合、ドライバー スタック内の次の下位ドライバーに I/O リクエストを送信します。 そのため、各フレームワーク ベースの関数、フィルター、およびミニポート ドライバーには 、デバイスの次の下位ドライバーである各デバイスのローカル I/O ターゲット があります。

場合によっては、ドライバーは、別のターゲット(別のドライバー スタックの最上位、またはまれに、送信ドライバーのスタック内の他のドライバー)に I/O リクエストを送信する必要があります。 そのため、フレームワークは、ローカル I/O ターゲットを除くすべての I/O ターゲットで構成されるリモート I/O ターゲットも提供します。

各 I/O ターゲットは、I/O ターゲット オブジェクトによって表されます。 各 I/O ターゲット オブジェクトは主に、リクエストがターゲット デバイス オブジェクトに配信されるタイミングを制御するキューです。 ドライバーが I/O ターゲットにリクエストを送信すると、フレームワークは、ターゲット デバイス オブジェクトにリクエストを配信できるようになるまで、キューにリクエストを格納します。

フレームワークは、一般 I/O ターゲット特殊な I/O ターゲットの両方をサポートしています:

  • 一般 I/O ターゲット は、すべての関数、フィルター、およびミニポート ドライバーで使用できますが、特殊なデバイス固有のデータ形式をサポートしていません。

  • 特殊な I/O ターゲットにより、関数、フィルターおよびミニポート ドライバーは、特殊なターゲット固有のデータ形式を必要とする I/O リクエストを簡単に送信できます。 現在、フレームワークは、次の特殊な I/O ターゲットをサポートしています:

フレームワークがデバイスのデータ形式をサポートする特殊な I/O ターゲットを提供する場合、ドライバーは特殊な I/O ターゲットを使用する必要があります。 それ以外の場合、ドライバーは一般 I/O ターゲットを使用する必要があります。