フレームワーク オブジェクトの概要

Windows Driver Frameworks (WDF) がドライバーに提供するインターフェイスはオブジェクト ベースです。 このフレームワークは、いくつかのプロバイダーを定義します。 これらのオブジェクトは、ドライバーがアクセスできるメソッド(関数) とプロパティ (データ) をエクスポートします。 フレームワーク オブジェクトは、ドライバーがイベント コールバック関数を提供することによってサポートできるイベントも開始します。

フレームワーク ベースのドライバーは、フレームワーク オブジェクトに直接アクセスすることはありません。 代わりに、ドライバーは、ドライバーがオブジェクト メソッドへの入力として渡すハンドルによってオブジェクトを参照します。

すべてのフレームワーク オブジェクトには、次の特性があります:

Reference count
フレームワークは、各オブジェクトへの参照数のカウントを保持します。 フレームワークは、オブジェクトを作成するときに、オブジェクトの参照カウントを 1 に設定します。 フレームワークはオブジェクトの使用を完了すると、参照カウントをデクリメントします。 フレームワークは、参照カウントが 0 にデクリメントされるまでオブジェクトを削除できないため、ドライバーは参照カウントをインクリメントすることでオブジェクトの削除を防ぐことができます。

Context space
フレームワーク ベースのドライバーは、ドライバーが受信または作成するすべてのフレームワーク オブジェクトのオブジェクト固有のコンテキスト領域を作成できます。 ドライバーは、すべてのオブジェクト固有のデータをオブジェクトのコンテキスト領域に格納する必要があります。 コンテキスト領域の詳細については、Framework Object Context Spaceをご参照ください。

Deletion callback functions
ドライバーは、フレームワークがオブジェクトを削除するときに呼び出すコールバック関数を登録できます。 コールバック関数は、オブジェクト固有のメモリ割り当てなど、ドライバーによって割り当てられたリソースを取り外すことができます。 これらのコールバック関数の詳細については、Framework Object Life Cycleをご参照ください。

親オブジェクト
すべてのフレームワーク オブジェクトは、親オブジェクトを持つことができます。 フレームワークは、ほとんどのオブジェクトに対してデフォルトの親オブジェクトを指定します。 ドライバーは、オブジェクトを作成するときに、オブジェクトのデフォルトの親オブジェクトをオーバーライドする親オブジェクトを指定できます。 オブジェクトの親オブジェクトを指定するには、ドライバーは、オブジェクトの WDF_OBJECT_ATTRIBUTES構造の ParentObjectメンバーを設定します。 (一部のオブジェクトタイプでは、ドライバーはデフォルトの親オブジェクトをオーバーライドできません。)フレームワークまたはドライバーが親オブジェクトを削除するとき、フレームワークは親オブジェクトの子も削除します。

WDF で定義されているすべてのオブジェクトの概要については、Summary of Framework Objectsをご参照ください。