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 コールバックをキューに登録できます。
ドライバーは、 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 |
Header | wdfinterrupt.h (Wdf.h を含む) |
IRQL | PASSIVE_LEVEL |