フレームワーク オブジェクトの階層

警告

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の概要をご覧ください。

次の図は、親子フレームワークオブジェクト階層を示しています。

umdf parent-child object hierarchy.

フレームワークオブジェクトのライフタイムスコープは、階層内の位置とオブジェクトの作成方法によって決まります。 フレームワークオブジェクトのライフタイムスコープは、次のカテゴリのいずれかに分類されます。

  • フレームワークは、オブジェクトの作成と破棄を制御します。

    フレームワークは、システムイベントに応答して、driver objectdevice objectなどのオブジェクトを作成し、破棄します。 ユーザーモードドライバーがIWDFDriver::CreateDeviceメソッドを呼び出してデバイスオブジェクトを作成するとき、ドライバーはデバイスオブジェクトが破棄される前に、フレームワークによって通知されるようにオプションで登録できます。

  • フレームワークはオブジェクトを作成します; ただし、ドライバーは、オブジェクトがいつリリースされるかを制御します。

    I/O request objectは、ドライバーに I/O が表示されるときに、このパターンに従います。 フレームワークはリクエストオブジェクトを作成します。リクエストオブジェクトのライフタイムは、ドライバーがIWDFIoRequest::Completeメソッドを呼び出すまで有効です。

  • ドライバーは、オブジェクトを作成し、また、このオブジェクトを別のフレームワークオブジェクトに関連付けます。

    一部のフレームワークオブジェクトは、ライフタイム管理のためにオブジェクトを関連付ける親フレームワークオブジェクトインスタンスによって公開されるメソッドによって作成されます。 IWDFDevice::CreateIoQueueメソッドは、このパターンの例です。 IWDFDevice::CreateIoQueueへの呼び出しが成功した場合、新しく作成された I/O キューは、IWDFDeviceインターフェイスが表すデバイスインスタンスに関連付けられます。 親オブジェクトが破棄されると、フレームワークは自動的に子インスタンスをクリーンアップします。 ドライバーがフレームワークに適切なコールバック関数を登録する場合、ドライバーにこれらのイベントが通知されます。