次の方法で共有


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

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

ロック モードを指定するには、IWDFDeviceInitialize::SetLockingConstraintLockType パラメーターに以下の WDF_CALLBACK_CONSTRAINT 列挙型の値を指定します。指定する制約 (ロック) の種類は、ハードウェア デバイスで利用できる並列処理のレベルと、ドライバーで処理できる並列処理のレベルによって決まります。

意味

なし (0)

ドライバーへのコールバック関数は同期されません。

WdfDeviceLevel (1)

ドライバーへのキューのコールバック関数がすべて同期されます。

 

   ドライバーで IWDFDeviceInitialize::SetLockingConstraint を呼び出して値を指定しない場合、このプロパティの既定値は WdfDeviceLevel に設定されます。

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

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