次の方法で共有


WdfInterruptSynchronize 関数 (wdfinterrupt.h)

[KMDF と UMDF に適用]

WdfInterruptSynchronize メソッドは、割り込みオブジェクトのスピン ロックを保持しながら、デバイスの DIRQL で指定されたコールバック関数を実行します。

パッシブ レベルの割り込みオブジェクトの場合、このメソッドは、割り込みオブジェクトのパッシブ レベルの割り込みロックを保持しながら、指定されたコールバック関数をパッシブ レベルで実行します。

構文

BOOLEAN WdfInterruptSynchronize(
  [in] WDFINTERRUPT                  Interrupt,
  [in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
  [in] WDFCONTEXT                    Context
);

パラメーター

[in] Interrupt

フレームワーク割り込みオブジェクトへのハンドル。

[in] Callback

EvtInterruptSynchronize コールバック関数へのポインター。

[in] Context

フレームワークが EvtInterruptSynchronize コールバック関数に渡すドライバー指定の情報への型指定されていないポインター。

戻り値

WdfInterruptSynchronize、EvtInterruptSynchronize コールバック関数が返すブール状態値を返します。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ドライバーで、割り込まずに実行する必要があるコードを実行し、デバイス割り込みのサービスを効果的に無効にする場合は、そのコードを EvtInterruptSynchronize コールバック関数に配置する必要があります。 コールバック関数の実行をスケジュールするには、ドライバーで WdfInterruptSynchronize を呼び出す必要があります。

WdfInterruptSynchronize メソッドは、EvtInterruptSynchronize コールバック関数の実行が完了した後に を返します。

WdfInterruptSynchronize を呼び出す代わりに、ドライバーは WdfInterruptAcquireLockWdfInterruptReleaseLock を呼び出すことができます。

WdfInterruptSynchronize メソッドの詳細については、「割り込みコードの同期」を参照してください。

フレームワーク ベースのドライバーでの割り込みの処理の詳細については、「 ハードウェア割り込みの処理」を参照してください。

パッシブ レベルの割り込みの場合、ドライバーは IRQL = PASSIVE_LEVEL で WdfInterruptSynchronize を呼び出す必要があります。

要求ハンドラーなどの任意のスレッド コンテキストから WdfInterruptSynchronize を呼び出さないでください。

次のコード例は、 WdfInterruptSynchronize を呼び出して EvtInterruptSynchronize コールバック関数の実行をスケジュールする方法を示しています。

BOOLEAN synchronizeReturnValue;

synchronizeReturnValue = WdfInterruptSynchronize(
                                         WdfInterrupt,
                                         MyEvtInterruptSynchronize,
                                         CallbackContext
                                         );

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfinterrupt.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock