範例 I/O 要求 - 概觀
下圖顯示當子系統開啟代表應用程式之數據檔的檔案物件時,會發生什麼情況的概觀。
子系統會呼叫 I/O 系統服務來開啟具名檔案。
I/O 管理員會呼叫物件管理員來查閱具名檔案,並協助它解析檔案物件的任何符號連結。 它也會呼叫安全性參考監視器,以檢查子系統是否具有開啟該檔案對象的正確訪問許可權。
如果尚未掛接磁碟區,I/O 管理員會暫時暫停開啟要求,並呼叫一或多個文件系統,直到其中一個文件系統將檔案物件辨識為儲存在文件系統使用的其中一個大量儲存裝置上為止。 當文件系統掛接磁碟區時,I/O 管理員會繼續要求。
I/O 管理員會為 配置記憶體,並初始化開啟要求的 IRP。 對驅動程式,開啟相當於「建立」要求。
I/O 管理員會呼叫文件系統驅動程式,並將 IRP 傳遞給它。 文件系統驅動程式會存取 IRP 中的 I/O 堆疊位置,以判斷它必須執行的作業、檢查參數、判斷所要求的檔案是否位於快取中,如果不是,請在 IRP 中設定下一個較低驅動程式的 I/O 堆疊位置。
這兩個驅動程式都會處理 IRP 並完成要求的 I/O 作業,呼叫 I/O 管理員所提供的內核模式支援例程,以及其他系統元件 (上圖) 未顯示。
驅動程式會將 IRP 傳回 I/O 管理員,並在 IRP 中設定 I/O 狀態區塊,以指出要求的作業成功或失敗的原因。
I/O 管理員會從 IRP 取得 I/O 狀態,以便透過受保護的子系統將狀態資訊傳回原始呼叫端。
I/O 管理員會釋出已完成的 IRP。
如果開啟作業成功,I/O 管理員會將檔案物件的句柄傳回子系統。 如果發生錯誤,它會將適當的狀態傳回子系統。
在子系統成功開啟代表數據檔、裝置或磁碟區的檔案對象之後,子系統會使用傳回的句柄來識別後續裝置 I/O 作業要求中的檔案物件, (通常是讀取、寫入或裝置 I/O 控制要求) 。 為了提出這類要求,子系統會呼叫 I/O 系統服務。 I/O 管理員會將這些要求路由傳送為傳送至適當驅動程式的 IRP。