本文說明文件系統控制程式代碼 (FSCTLs) 以及它們在 Windows 核心層級的使用方式。 如需使用者模式中 FSCTL 的相關信息,請參閱 裝置輸入和輸出控件。
文件系統控制代碼 (FSCTLs) 可視為特殊 I/O 控制代碼 (IOCTLs)。 雖然 IOCTL 可用來執行 裝置控制 作業,但 FSCTL 則用來執行 文件系統 作業。 FSCTL 可用來:
- 改變或查詢文件系統的行為。
- 設定或查詢與特定檔案或文件系統本身相關聯的元數據。
文件系統堆疊中的內核模式模組,例如文件系統和文件系統迷你篩選驅動程式,可以看到併發出 FSCTL。 因此,它們能夠檢查、修改或重新導向作業。
進程會在句柄上叫用 FSCTL,針對與句柄相關聯的檔案或目錄執行動作。 當伺服器收到 FSCTL 要求時,它會使用要求中的資訊來執行要求的動作。 伺服器如何執行 FSCTL 所要求的動作與實作相關。
允許跨網路叫用某些系統定義的泛型 FSCTL。 本地檔案系統或系統內的多個元件會使用通用 FSCTL。 任何應用程式、服務或驅動程式都可以定義私人 FSCTL。 大部分的私有 FSCTL 都會在內部驅動程式堆疊中使用,而且不會透過網路傳輸。 不過,如果元件允許其私有 FSCTL 通過網路傳輸,該元件有責任確保 FSCTL 和相關資料結構被記錄。
在核心模式中發送一個 FSCTL 命令
一般而言,FSCTL 會透過下列其中一個內核模式函式發出:
FltFsControlFile,這是 FltMgr 所實作的系統提供函式。 迷你篩選驅動程式是篩選管理員架構的一部分,因此應該使用此函式向文件系統或其他堆疊中的迷你篩選器發出 FSCTL。
ZwFsControlFile,這是 Windows 核心所實作的系統提供函式。 檔案系統迷你篩選器以外的其他核心模式元件可以使用此函式來發出 FSCTL。
FSCTL 特定資訊
如需特定 FSCTL 的相關信息,請參閱本文後面的FSCTL_XXX 文章。