UMDF での一般 I/O ターゲットの初期化

警告

UMDF 2 は UMDF の最新バージョンであり、UMDF 1 に取って代わるものです。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。

アーカイブされた UMDF 1 サンプルは、Windows 11, バージョン 22H2 - 2022 年 5 月 ドライバー サンプル アップデートでご確認いただけます。

詳しくは、UMDFの概要をご覧ください。

ドライバーが一般 I/O ターゲットを初期化するために使用するステップは、I/O ターゲットが ローカル かリモートかによって異なります。

ローカルI/Oターゲットの初期化

ローカル I/O ターゲットには、デバイスの デフォルトのI/Oターゲット とファイル ハンドル ベースの I/O ターゲットが含まれます。

フレームワークは、ドライバーが IWDFDriver::CreateDevice メソッドを呼び出すときに、デバイスのドライバーのデフォルトの I/O ターゲットを初期化します。 ドライバーがデバイスのデフォルトの I/O ターゲットにアクセスできるようにする IWDFIoTargetインターフェイスを取得するには、ドライバーは IWDFDevice::GetDefaultIoTarget メソッドを呼び出します。

ほとんどのドライバーは、ローカル I/O ターゲットにのみリクエストを送信します。

UMDF ドライバーは、ネットワーク ソケット インターフェイスなどのハンドル ベースのインターフェイスに I/O リクエストを送信する必要がある場合、ドライバーは、ファイル ハンドル ベースの I/O ターゲット オブジェクトを作成する必要があります。 ファイル ハンドル ベースの I/O ターゲット オブジェクトを作成するには、ドライバーは次の操作を行う必要があります:

  1. デバイスのIWDFDeviceインターフェイスの QueryInterface メソッドを呼び出して、IWDFFileHandleTargetFactory インターフェイスへのポインターを取得します。

  2. Win32 CreateFileCreateNamedPipe、またはsocket 関数を呼び出すことによって、ファイル、名前付きパイプ、またはソケットに対する Win32 ハンドルを取得します。

  3. IWDFFileHandleTargetFactory::CreateFileHandleTargetメソッドを呼び出して、ファイル、パイプ、またはソケットのファイル ハンドル ベースの I/O ターゲット オブジェクトを作成します。

IWDFFileHandleTargetFactoryインターフェイスを取得し、Win32 ハンドルを取得し、ファイル ハンドルベースの I/O ターゲット オブジェクトを作成する方法を示すコード例については、IWDFFileHandleTargetFactory::CreateFileHandleTarget のコード例をご参照ください。

ドライバーがファイル ハンドル ベースの I/O ターゲットを作成した後、ドライバーは I/O ターゲットに I/O リクエストを送信できます。

リモートI/Oターゲットの初期化

ドライバーはリモート I/O ターゲットを使用できる前に、次のようにリモート ターゲット オブジェクトを作成し、ターゲットを開く必要があります:

  1. IWDFDevice2::CreateRemoteTargetを呼び出して、リモート ターゲット オブジェクトを作成します。

  2. IWDFRemoteTarget::OpenFileByName(ファイルの場合) またはIWDFRemoteTarget::OpenRemoteInterface (デバイス インターフェイスの場合) を呼び出して、I/O 操作のターゲットを開きます。