UMDF での一般 I/O ターゲットの初期化
ドライバーで一般 I/O ターゲットを初期化するための手順は、その I/O ターゲットがローカルかリモートかによって異なります。
ローカル I/O ターゲットの初期化
ローカル I/O ターゲットには、デバイスの既定の I/O ターゲットとファイル ハンドル ベースの I/O ターゲットが含まれます。
フレームワークは、ドライバーが IWDFDriver::CreateDevice メソッドを呼び出したときに、デバイスに対するドライバーの既定の I/O ターゲットを初期化します。ドライバーは、IWDFDevice::GetDefaultIoTarget メソッドを呼び出して IWDFIoTarget インターフェイスを取得します。このインターフェイスを使用してデバイスの既定の I/O ターゲットにアクセスできます。
ほとんどのドライバーは、自身の既定の 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 操作のターゲットを開きます。