[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 コールバックをキューに登録できます。
ドライバーは、EvtInterruptDpc と EvtInterruptWorkItem コールバックの両方をキューに入れることはできません。
ドライバーが割り込みの WDF_INTERRUPT_CONFIG 構造で AutomaticSerialization メンバーを TRUE に設定している場合、フレームワークは割り込みオブジェクトの EvtInterruptWorkItem コールバック関数の実行を、割り込みの親オブジェクトの下にある他のオブジェクトからのコールバック関数と同期します。 コールバック同期ロックの詳細については、「フレームワーク ロック の使用」を参照してください。
一般に、ドライバーが EvtInterruptWorkItem 内から割り込みオブジェクトのパッシブ ロック取得する必要がある場合、ドライバーは、WDF_INTERRUPT_CONFIG の AutomaticSerialization メンバーを FALSE に設定し、EvtInterruptWorkItem 内から WdfInterruptAcquireLock呼び出す必要があります。
AutomaticSerialization が TRUE に設定されている場合、ドライバーの EvtInterruptWorkItem コールバック関数は、次のメソッドを呼び出さないでください。
WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable フレームワーク ベースのドライバーでの割り込みの処理の詳細については、「ハードウェア割り込みの処理」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 普遍 |
最小 KMDF バージョン | 1.11 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfinterrupt.h (Wdf.h を含む) |
IRQL | PASSIVE_LEVEL |