次の方法で共有


UMDF DDI プログラミング モデル

Warnung

UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。

アーカイブされた UMDF 1 サンプルは「Windows 11, version 22H2 - May 2022 Driver Samples Update」にあります。

詳しくは、「UMDF の概要」をご覧ください。

フレームワークと UMDF ドライバーは、UMDF DDI を介して通信します。 UMDF DDI は KMDF DDI に似ていますが、UMDF DDI は COM に基づいている点が異なります。 そのため、KMDF に慣れているドライバー ライターは UMDF を理解します。

フレームワーク オブジェクトの種類ごとに、UMDF は、オブジェクトのインスタンスを操作するインターフェイスを定義します。 各インターフェイスでは、メソッドとプロパティがサポートされています。 メソッドは、オブジェクトに代わって実行できるアクションと、設定されたプロパティを定義し、オブジェクトの特性を取得します。 一部のインターフェイスはフレームワークによって実装され、他のインターフェイスはドライバーによって実装されます。 フレームワーク オブジェクトによって公開されるインターフェイスは IWDF<object> 形式ですが、ドライバーによって公開されるイベント コールバック インターフェイスはフォーム I<object><action> で、 <object> はキュー、要求などを表し、 <アクション> インターフェイスの動作を示します。 コールバック インターフェイスのメソッドは、"On" で始まります。

UMDF ドライバーは、メソッドとプロパティを使用してフレームワークのオブジェクトと通信します。 フレームワークは、イベント通知を介してドライバーと通信します。これは、フレームワークが特定のイベントについてドライバーに通知するために呼び出すことができるコールバック関数です。 コールバック関数を登録するために、ドライバーは次のフレームワーク オブジェクト メソッドなどを呼び出し、ドライバーがサポートするすべてのインターフェイスに関連付けられている IUnknown インターフェイスへのポインターを渡すことができます。

ドライバーからフレームワークへの通信の例として、デバイスの既定の I/O キュー オブジェクトを考えてみましょう。 ドライバーは、 IWDFIoQueue::GetState などのメソッドを呼び出して I/O キューに関する状態情報を取得したり、 IWDFIoQueue::RetrieveNextRequest を 呼び出して I/O キューから要求を取得したりできます。 ドライバーは、 IWDFDevice::CreateIoQueue メソッドを呼び出して、 IQueueCallbackRead や IQueueCallbackWrite などのコールバック インターフェイスを登録することで、 I/O キューに通知を要求することもできます。 これらのインターフェイスのメソッドは、アプリケーションが読み取り要求と書き込み要求を送信するときに、フレームワークによって呼び出されます。

フレームワークは、ドライバーコールバックメソッド間で必要な同期を提供します。 既定では、フレームワークはデバイス オブジェクト レベルで同期されます。つまり、フレームワークは、デバイス オブジェクト レベル以下でイベント コールバック メソッドを同時に呼び出しません。 ドライバーは、同期を要求しないことで、この既定値を無効にできます。 詳細については、「 コールバック同期モードの指定」を参照してください。