共用方式為


取消 IRP

IRP 可能會保留無限間隔的驅動程式 (,讓使用者可以取消先前提交的 I/O 要求) 必須有一或多個 Cancel 常式,才能完成使用者取消的 I/O 要求。 例如,鍵盤、滑鼠、平行、序列和音效設備磁碟機 (或驅動程式分層,) 和檔案系統驅動程式應該有 Cancel 常式。

適用于 Microsoft Windows XP 和更新版本的作業系統驅動程式可以使用 取消安全的 IRP 佇列, 而不是實作自己的 Cancel 常式。

若要「取消 IRP」表示儘快完成 IRP,同時仍維持系統完整性。 如需 IRP 完成的一般討論,請參閱 完成 IRP

取消程式會在系統或驅動程式呼叫 IoCancelIrp時開始。 此常式會針對尚未完全完成之執行緒相關聯的每個 IRP 呼叫。 如果起始 I/O 要求的執行緒結束時,系統會取消未處理的 IRP。 驅動程式只能取消他們建立的 IRP (請參閱建立 Lower-Level Drivers 的 IRP.)

如果在 5 分鐘內未完成取消的 IRP,I/O 管理員會考慮 IRP 逾時。這類 IRP 會與執行緒解除關聯,而且會針對目前擁有 IRP 的裝置記錄錯誤。 您應該確定驅動程式中可能需要很長的時間才能完成的任何要求都可取消。 若要確保可能會取消長時間的要求,您可以使用 取消安全 IRP 佇列核心模式驅動程式架構,以抽象化驅動程式開發人員的取消作業。

本節提供下列主題:

取消常式簡介

註冊取消常式

同步處理 IRP 取消

實作取消常式

取消 IRP 時要考慮的點