在其裝置上進行重疊操作的驅動程式的 DpcForIsr 或 CustomDpc 例程不能依賴輸入到 StartIo 例程的請求與 ISR 對 IoRequestDpc 或 KeInsertQueueDpc 呼叫之間的一對一對應。 這類驅動程式的DpcForIsr或CustomDpc不一定會使用指向IRP和ISR提供的內容的輸入指標,或目標裝置物件中的CurrentIrp指標,來僅完成該IRP。
在任何指定的時刻,相同的 DPC 對象無法排入佇列兩次。 如果ISR在對應的 DpcForIsr 或 CustomDpc 執行之前多次呼叫 IoRequestDpc 或 KeInsertQueueDpc,則只有在處理器上的 IRQL 低於DISPATCH_LEVEL時,DPC 例程才會執行一次。 另一方面,如果ISR呼叫 IoRequestDpc 或 KeInsertQueueDpc ,而對應的 DpcForIsr 或 CustomDpc 在另一個處理器上執行,則 DPC 例程可以同時在兩個處理器上執行。
因此,在其裝置上重疊中斷驅動的輸入/輸出作業的任何驅動程式都必須具有下列專案:
DpcForIsr 或 CustomDpc 例程,可在每次呼叫時完成一些由驅動程序維護的未完成要求計數
ISR 不會覆寫其傳遞給 DpcForIsr 或 CustomDpc 例程的上下文資訊,直到該例程使用了這些上下文資訊並完成其所屬的 IRP。
代表 DpcForIsr 或 CustomDpc 例程存取 ISR 內容區域的 SynchCritSection 例程