WDF のアーキテクチャ

WDF は、ドライバーにオブジェクトベースのインターフェイスを提供します。 フレームワーク定義のオブジェクト インターフェイスは、次のもので構成されます:

オブジェクト メソッド
メソッドとは、ドライバーがオブジェクトに対して操作を実行したり、オブジェクト プロパティを取得または設定したりするために呼び出すことができる関数です。 メソッドの名はWdfObjectActionで、Objectはオブジェクトを表し、Actionは関数の動作を示します。 たとえば、 WdfDeviceCreateはデバイス オブジェクトを作成します。

オブジェクト イベント コールバック関数
イベント コールバック関数は、ドライバーが提供する関数です。 各イベント コールバック関数は、オブジェクトで発生する可能性のある特定のイベントに関連付けられます。 フレームワークは、関連付けられたイベントが発生したときにイベント コールバック関数を呼び出します。 慣例により、イベント コールバック関数のプレースホルダーは EvtObjectEvent と呼ばれますが、これらのコールバックにドライバーで選択した任意の名を付けることができます。 たとえば、ドライバーは、デバイスが動作状態になったときに通知されるようにEvtDeviceD0Entryイベント コールバックを登録します。

オブジェクトのプロパティ
プロパティは、オブジェクト内に格納され、ドライバーがget (つまり取得) およびset (つまり変更) できる値です。 多くの場合、プロパティは対応する WDM オブジェクトのフィールドに直接マップされます。 失敗できないプロパティは WdfObjectGetValueWdfObjectSetValueという名で、失敗する可能性があるプロパティは WdfObjectRetrieveValueWdfObjectAssignValueという名です。 Objectはオブジェクトを表し、 Valueは関数が設定または返すデータを識別します。 たとえば、 WdfDeviceGetDriver は、デバイス オブジェクトに関連付けられたドライバー オブジェクトへのハンドルを返します。

オブジェクト ハンドル
フレームワーク ベースのドライバーは、フレームワーク オブジェクトに直接アクセスすることはありません。 代わりに、ドライバーは、オブジェクトのメソッドに渡すことができるオブジェクト ハンドルを受け取ります。

フレームワークでは、フレームワーク ベースのドライバーが使用するいくつかのオブジェクトタイプを定義します:

  • framework driver objectは各ドライバーを表します。

  • framework device objectは、ドライバーがサポートする各デバイスを表します。

  • Framework queue objectsは、デバイスの I/O リクエストを受信する I/O キューを表します。

  • Framework request objects は各 I/O キューが受信する I/O リクエストを表します。

フレームワークが定義するすべてのオブジェクトのリストについては、フレームワーク オブジェクトの概要をご参照ください。