完成 IRP 的時機
當符合下列任一條件時,驅動程式應該起始 IRP 完成:
驅動程式會判斷 IRP 處理因為參數或其他條件無效而無法進行。
驅動程式能夠處理要求的 I/O 作業,而不需要將 IRP 傳遞至驅動程式堆疊,而且作業已完成。
正在取消 IRP。 (請參閱 取消 IRP.)
如果不符合這些條件,驅動程式的分派常式必須將 IRP 向下傳遞至下一個較低的驅動程式,或者必須處理 I/O 要求的處理。 如果符合其中一個條件,驅動程式必須呼叫 IoCompleteRequest。
如果驅動程式因為處理無法進行而完成要求,或藉由處理要求的作業來完成要求,而不需要實際存取裝置,它通常會從其中一個分派常式呼叫 IoCompleteRequest 。 如需詳細資訊,請參閱 在分派常式中完成 IRP。
如果驅動程式必須存取裝置以滿足要求,它通常會從DpcForIsr常式呼叫IoCompleteRequest。 這些常式會在 服務中斷中廣泛討論。