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 ターゲット オブジェクトを作成するには、ドライバーは次の操作を行う必要があります:
デバイスのIWDFDeviceインターフェイスの QueryInterface メソッドを呼び出して、IWDFFileHandleTargetFactory インターフェイスへのポインターを取得します。
Win32 CreateFile、CreateNamedPipe、またはsocket 関数を呼び出すことによって、ファイル、名前付きパイプ、またはソケットに対する Win32 ハンドルを取得します。
IWDFFileHandleTargetFactory::CreateFileHandleTargetメソッドを呼び出して、ファイル、パイプ、またはソケットのファイル ハンドル ベースの I/O ターゲット オブジェクトを作成します。
IWDFFileHandleTargetFactoryインターフェイスを取得し、Win32 ハンドルを取得し、ファイル ハンドルベースの I/O ターゲット オブジェクトを作成する方法を示すコード例については、IWDFFileHandleTargetFactory::CreateFileHandleTarget のコード例をご参照ください。
ドライバーがファイル ハンドル ベースの I/O ターゲットを作成した後、ドライバーは I/O ターゲットに I/O リクエストを送信できます。
リモートI/Oターゲットの初期化
ドライバーはリモート I/O ターゲットを使用できる前に、次のようにリモート ターゲット オブジェクトを作成し、ターゲットを開く必要があります:
IWDFDevice2::CreateRemoteTargetを呼び出して、リモート ターゲット オブジェクトを作成します。
IWDFRemoteTarget::OpenFileByName(ファイルの場合) またはIWDFRemoteTarget::OpenRemoteInterface (デバイス インターフェイスの場合) を呼び出して、I/O 操作のターゲットを開きます。