コールバック同期モードの指定

警告

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

ドライバーは、フレームワークによってコールバック関数を呼び出す方法を指定することができます。 ドライバーは、IWDFDriver::CreateDevice メソッドを呼び出してデバイスのデバイス オブジェクトを作成する前に、デバイスの同期 (またはロック) モードを指定します。 同期モードを指定するには、ドライバーは IWDFDeviceInitialize::SetLockingConstraint メソッドを呼び出す必要があります。 デバイスをシステムに追加するために IDriverEntry::OnDeviceAdd メソッドが呼び出されると、ドライバーは IWDFDeviceInitialize インターフェイスへのポインターを受け取ります。

ドライバーは、IWDFDeviceInitialize::SetLockingConstraintLockType パラメーターで WDF_CALLBACK_CONSTRAINT 列挙型から次のいずれかの値を指定して、ロック モードを識別できます。 指定された制約 (またはロック) の種類は、ハードウェア デバイスが悪用できる並列処理の量と、ドライバーが処理できる量によって異なります。

Value 意味

なし (0)

ドライバーへのコールバック関数が同期されていないことを示します。

WdfDeviceLevel (1)

ドライバー内のすべてのキュー コールバック関数が同期されることを示します。

注: ドライバーが IWDFDeviceInitialize::SetLockingConstraint を呼び出して値を指定しない場合、フレームワークは、このプロパティの既定値を WdfDeviceLevel に設定します。

制約はキュー コールバック関数にのみ適用され、プラグ アンド プレイ (PnP) および電源管理コールバック関数には適用されません。 キュー コールバック関数には、次のものが含まれます。

要求完了コールバック関数 (IRequestCallbackRequestCompletion::OnCompletion) はキュー コールバック関数ではありません。 そのため同期はされません。