UMDF の一般 I/O ターゲット
一般 I/O ターゲット (ローカルとリモートがあります) は、USB 要求ブロックなど、特殊なデバイス固有のデータ形式をサポートしない I/O ターゲットです。ドライバーは、データを一般 I/O ターゲットに送信する前に、I/O ターゲットおよびデバイスが解釈できる形式で、書き込みバッファー内にデータを配置する必要があります。同様に、ドライバーは、一般 I/O ターゲットからのデータを読み取るとき、ターゲットから受信するデータ バッファーの内容を解釈できる必要があります。
Local I/O Targets
多くの場合、ドライバーは I/O 要求をドライバー スタック内の次の下位ドライバーに送信します。したがって、UMDF ベースのドライバーには、各デバイス用の "既定の I/O ターゲット" があります。これは、デバイスの次の下位ドライバーです。最下位レベルの UMDF ベースのドライバーの既定の I/O ターゲットは、カーネル モードのリフレクターです。UMDF ベースのドライバーでは、I/O 要求をファイル ハンドル ベースの I/O ターゲット (ファイルやネットワーク ソケットなど) に送信しなければならない場合もあります。そのため、フレームワークには、ファイル ハンドル ベースの I/O ターゲット オブジェクトも用意されています。
既定の I/O ターゲットとファイル ハンドル ベースの I/O ターゲットはどちらも、ドライバー スタックでサポートされるデバイスへの I/O 要求の送信に使用されることから、"ローカル I/O ターゲット" と呼ばれます。
Remote I/O Targets
ドライバーでは、I/O 要求を別のドライバー スタックに送信しなければならない場合もあります。したがって、フレームワークは "リモート I/O ターゲット" も提供します。リモート I/O ターゲットは、ローカル I/O ターゲットを除くすべての I/O ターゲットで構成されます。つまり、ドライバー スタックでサポートされないデバイス、そのデバイス上のファイル、そのデバイスのデバイス インターフェイスなどが含まれます。
以下のセクションでは、一般 I/O ターゲットを初期化する方法や作成する方法について説明します。