情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

割り込みの有効化および無効化

ドライバーは、デバイス割り込みを処理する場合、割り込みを有効化および無効化する EvtInterruptEnableEvtInterruptDisable の各コールバック関数を提供する必要があります。これらのコールバック関数は、デバイスの DIRQL で実行され、デバイスの割り込み機構を有効化および無効化するために必要なすべての処理を実行する必要があります。

ドライバーが割り込みの有効化または無効化に関連する追加操作を実行する必要があり、これらの追加操作を IRQL = DIRQL で実行できない場合、ドライバーは EvtDeviceD0EntryPostInterruptsEnabledEvtDeviceD0ExitPreInterruptsDisabled の各コールバック関数を提供することもできます。この 2 つのコールバック関数は IRQL = PASSIVE_LEVEL で実行され、IRQL = DIRQL で使用できないフレームワーク オブジェクト メソッドを呼び出すことができます。

フレームワークは、ドライバーの EvtDeviceD0Entry コールバック関数を呼び出した後、デバイスが作業状態 (D0) に移行するたびに、ドライバーの EvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabled の各コールバック関数を呼び出します。フレームワークは、ドライバーの EvtDeviceD0Exit コールバック関数を呼び出す前に、デバイスの作業状態が移行するたびに、ドライバーの EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisable の各コールバック関数を呼び出します。フレームワークがドライバーのコールバック関数を呼び出すタイミングの詳細については、「PnP と電源管理のシナリオ」を参照してください。

フレームワークがドライバーの EvtInterruptEnable コールバック関数を呼び出すたびに、デバイスが同じ割り込みリソースを使用することを前提としないでください。PnP マネージャーがシステム リソースを再配布し、新しい割り込みリソースがデバイスに割り当てられる場合があります。

ドライバーは WdfInterruptGetInfo を呼び出して、デバイスの割り込みリソースを確認できます。ドライバーは WdfInterruptGetDevice を呼び出して、割り込みオブジェクトが属するデバイスを確認できます (一部のドライバーは WdfInterruptWdmGetInterrupt を呼び出す場合があります)。

ドライバーは、割り込みオブジェクトの WdfInterruptEnableWdfInterruptDisable の各メソッドを呼び出すことにより、割り込みを直接有効化および無効化することができます。これらのメソッドは、ドライバーの EvtInterruptEnableEvtInterruptDisable の各イベント コールバック関数を呼び出します。ただし、ほとんどのドライバーでは、フレームワークが適切なタイミングで EvtInterruptEnableEvtInterruptDisable の各コールバック関数を呼び出すことのみを許可する必要があります。

 

 

コミュニティの追加

表示:
© 2015 Microsoft