EVT_WDF_INTERRUPT_ENABLE コールバック関数 (wdfinterrupt.h)
[KMDF と UMDF に適用]
ドライバーの EvtInterruptEnable イベント コールバック関数は、指定されたハードウェア割り込みを有効にします。
構文
EVT_WDF_INTERRUPT_ENABLE EvtWdfInterruptEnable;
NTSTATUS EvtWdfInterruptEnable(
[in] WDFINTERRUPT Interrupt,
[in] WDFDEVICE AssociatedDevice
)
{...}
パラメーター
[in] Interrupt
フレームワーク割り込みオブジェクトへのハンドル。
[in] AssociatedDevice
ドライバーが WdfInterruptCreate に渡したフレームワーク デバイス オブジェクトへのハンドル。
戻り値
EvtInterruptEnable コールバック関数は、STATUS_SUCCESSまたはNT_SUCCESS(status) が TRUE に等しい別の状態値を返す必要があります(関数でエラーが発生しない場合)。 それ以外の場合、この関数は、NT_SUCCESS(status) が FALSE の状態値を返す必要があります。
注釈
EvtInterruptEnable コールバック関数を登録するには、ドライバーが WdfInterruptCreate を呼び出す前に、コールバック関数のアドレスを WDF_INTERRUPT_CONFIG 構造体に配置する必要があります。
フレームワークは、デバイスが動作 (D0) 状態に入るたびに、ドライバーの EvtInterruptEnable コールバック関数を呼び出します。 さらに、ドライバーは、 WdfInterruptEnable を呼び出すことによって、フレームワークが EvtInterruptEnable コールバック関数を呼び出す可能性 があります。 ほとんどのフレームワーク ベースのドライバーは WdfInterruptEnable を呼び出さないでください。これは、デバイスが動作 (D0) 状態に入るたびに、フレームワークによってドライバーの EvtInterruptEnable コールバック関数が呼び出されるためです。
EvtInterruptEnable コールバック関数を呼び出す前に、フレームワークはプロセッサの IRQL をデバイスの DIRQL に発生させ、割り込みオブジェクトのWDF_INTERRUPT_CONFIG構造体でドライバーが指定したスピン ロックを取得します。
バージョン 1.11 の KMDF 以降では、ドライバーは パッシブ レベルの割り込み処理を提供できます。 ドライバーがパッシブ レベルの割り込み処理を要求した場合、IRQL = PASSIVE_LEVEL で EvtInterruptEnable 関数を呼び出す前に、フレームワークは、ドライバーが割り込みオブジェクトの WDF_INTERRUPT_CONFIG 構造で構成したパッシブ レベルの割り込みロックを取得します。
EvtInterruptEnable コールバック関数が返された後、フレームワークは IRQL = PASSIVE_LEVEL でドライバーの EvtDeviceD0EntryPostInterruptsEnabled イベント コールバック関数を呼び出します。
フレームワークがドライバーの EvtInterruptEnable コールバック関数を呼び出すたびに、デバイスが同じ割り込みリソースを使用すると想定しないでください。 PnP マネージャーが システム リソースを再配布し、デバイスに新しい割り込みリソースを割り当てる場合があります。 ドライバーは WdfInterruptGetInfo を呼び出して、デバイスの割り込みリソースを決定できます。
フレームワーク ベースのドライバーでの割り込みの処理の詳細については、「 ハードウェア割り込みの処理」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfinterrupt.h (Wdf.h を含む) |
IRQL | 「解説」を参照してください。 |