為什么許多設備驅動程式IoCompleteRequest(irp,IO_NO_INCREMENT);
在調度例程的末尾都有一個?我閱讀了該功能的相應 Microsoft 檔案IoCompleteRequest
,但我不太了解這些概念。
uj5u.com熱心網友回復:
首先,您需要了解 IRP 的生命周期。作業完成后如何創建 (IoAllocateIrp)、交付 (IoCallDriver) 和釋放 (IoFreeIrp) IRP。其次,如果需要,當在操作結束時需要進行后處理時,I/O完成例程的處理也以驅動分層的方式進行處理。IoCompleteRequest 完成了確保這兩件事的作業。
- 應用程式執行 I/O 請求。
- I/O 管理器(創建 IRP,傳遞給驅動程式)
- 驅動程式(處理作業后完成的 IRP (IoCompleteRequest))
- I/O 管理器(釋放 IRP,將結果傳遞給上層應用程式)
- 應用程式接收 I/O 結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470853.html