通常、ISR を持つドライバーには、割り込み駆動型 I/O 操作の処理を完了するための DpcForIsr または CustomDpc ルーチンが少なくとも 1 つあります。 一般的な最下位レベルのドライバーの DpcForIsr または CustomDpc ルーチンは、以下の処理を行います。
ISR が処理を開始した I/O 操作の処理を終了します。
ドライバーが処理を開始できるよう、次の IRP をデキューします。
可能であれば現在の IRP を完了します。
複数のデータ転送が必要であるか、回復可能なエラーが検出されたため、現在の IRP を完了できないことがあります。 このような場合、DpcForIsr または CustomDpc ルーチンは通常、別の転送または直前の操作の再試行が行われるようデバイスを再プログラミングします。
DpcForIsr または CustomDpc ルーチンは、IRQL DISPATCH_LEVEL の任意の DPC コンテキストで呼び出されます。 DISPATCH_LEVEL で実行すると、DpcForIsr ルーチンまたは CustomDpc ルーチンが呼び出すことができるサポート ルーチンのセットが制限されます。 詳細については「ハードウェアの優先度の管理」を参照してください。
DPC オブジェクトと DPC は、タイマーと共に使用することもできます。 詳細については、「タイマー オブジェクトと DPC」を参照してください。