次の方法で共有


EVT_WDF_INTERRUPT_WORKITEMコールバック関数 (wdfinterrupt.h)

[KMDF と UMDF に適用]

ドライバーの EvtInterruptWorkItem イベント コールバック関数は、ドライバーの EvtInterruptIsr コールバック関数が格納した割り込み情報を処理します。

構文

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

パラメーター

[in] Interrupt

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

[in] AssociatedObject

ドライバーが WdfInterruptCreate に渡したフレームワーク デバイス オブジェクトハンドル。

戻り値

なし

注釈

EvtInterruptWorkItem コールバック関数は IRQL = PASSIVE_LEVEL で実行されます。

EvtInterruptWorkItem コールバック関数を登録するには、ドライバーは、WdfInterruptCreateを呼び出す前に、コールバック関数のアドレスを WDF_INTERRUPT_CONFIG 構造体に配置する必要があります。

ほとんどのドライバーは、割り込みの種類ごとに 1 つの EvtInterruptWorkItem コールバック関数を使用します。

EvtInterruptWorkItem コールバック関数の実行をスケジュールするには、ドライバーは、EvtInterruptIsr コールバック関数内から WdfInterruptQueueWorkItemForIsr を呼び出す必要があります。

ドライバーがデバイスごとに複数のフレームワーク割り込みオブジェクトを作成する場合は、割り込みごとに個別の EvtInterruptWorkItem コールバックを使用することを検討してください。

DIRQL 割り込み処理またはパッシブ レベルの割り込み処理を実装するドライバーは、EvtInterruptWorkItem コールバックをキューに登録できます。

ドライバーは、EvtInterruptDpcEvtInterruptWorkItem コールバックの両方をキューに入れることはできません。

ドライバーが割り込みの WDF_INTERRUPT_CONFIG 構造で AutomaticSerialization メンバーを TRUE に設定している場合、フレームワークは割り込みオブジェクトの EvtInterruptWorkItem コールバック関数の実行を、割り込みの親オブジェクトの下にある他のオブジェクトからのコールバック関数と同期します。 コールバック同期ロックの詳細については、「フレームワーク ロック の使用」を参照してください。

一般に、ドライバーが EvtInterruptWorkItem 内から割り込みオブジェクトのパッシブ ロック取得する必要がある場合、ドライバーは、WDF_INTERRUPT_CONFIGAutomaticSerialization メンバーを FALSE に設定し、EvtInterruptWorkItem 内から WdfInterruptAcquireLock呼び出す必要があります。

AutomaticSerialization が TRUE に設定されている場合、ドライバーの EvtInterruptWorkItem コールバック関数は、次のメソッドを呼び出さないでください。

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

必要条件

要件 価値
ターゲット プラットフォーム 普遍
最小 KMDF バージョン 1.11
UMDF の最小バージョン する 2.0
ヘッダー wdfinterrupt.h (Wdf.h を含む)
IRQL PASSIVE_LEVEL