任何具有ISR的驅動程式通常也至少有一個 DpcForIsr 或 CustomDpc 例程,以完成中斷驅動 I/O 作業的處理。 典型的最低層級驅動程式 DpcForIsr 或 CustomDpc 例程會執行下列動作:
完成處理ISR開始處理的I/O作業。
清除下一個 IRP 佇列,讓驅動程式可以開始處理它。
盡可能完成目前的 IRP。
有時候無法完成目前的 IRP,因為需要進行多次數據傳輸,或偵測到可以復原的錯誤。 在這些情況下, DpcForIsr 或 CustomDpc 例程通常會重新程式化裝置,以進行另一個傳輸或重試最後一個作業。
DpcForIsr 或 CustomDpc 例程會在 IRQL DISPATCH_LEVEL的任意 DPC 內容中呼叫。 在 DISPATCH_LEVEL執行會限制 DpcForIsr 或 CustomDpc 例程可以呼叫的支援例程集。 如需詳細資訊 ,請參閱管理硬體優先順序 。
DPC 物件和 DPC 例程也可以與定時器搭配使用。 如需詳細資訊,請參閱 定時器物件和 DPC。