FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
篩選管理員會使用 FSCTL_SET_PURGE_FAILURE_MODE 控制程式代碼,在針對 數據掃描建立之區段的存留期間同步處理作業。 篩選不應該發出此控制件程式代碼。
主要程序代碼
輸入緩衝區
SET_PURGE_FAILURE_MODE_INPUT 結構。
輸入緩衝區長度
大小,以位元組為單位,SET_PURGE_FAILURE_MODE_INPUT。
輸出緩衝區
沒有
輸出緩衝區長度
n/a
輸入/輸出緩衝區
沒有
輸入/輸出緩衝區長度
n/a
狀態區塊
保留供系統使用。
言論
篩選管理員會使用此控件程式代碼搭配IRP_MJ_FILE_SYSTEM_CONTROL呼叫,以括弧括住區段的生命。 如果無法清除快取管理員快取,這些呼叫會指示文件系統(且很少很少會是小型篩選)以下列方式運作。
針對每個發行SET_PURGE_FAILURE_MODE_ENABLED集的FSCTL_SET_PURGE_FAILURE_MODE,FSCTL_SET_PURGE_FAILURE_MODE將會發出SET_PURGE_FAILURE_MODE_DISABLED集。 雖然有未完成的SET_PURGE_FAILURE_MODE_ENABLED,但篩選管理員會回應特定類型的作業的特定失敗狀態(請參閱下表):
- 將作業畫上筆,以加快區段的關閉(可能的話)。
- 將作業重新排入發出失敗的迷你篩選或文件系統。
若要觸發篩選管理員據此回應,檔系統 (或篩選) 會以下列方式回應無法清除區段:
操作 | 必要的傳回狀態 |
---|---|
IRP_MJ_CREATE(破壞性行動) | STATUS_USER_MAPPED_FILE |
IRP_MJ_WRITE (僅限未緩衝區的作業) | STATUS_PURGE_FAILED |
IRP_MJ_SET_INFORMATION | STATUS_PURGE_FAILED |
只有在有未完成SET_PURGE_FAILURE_MODE_ENABLED時才會傳回這些狀態(未收到任何平衡SET_PURGE_FAILURE_MODE_DISABLED)。 在其他所有情況下,錯誤狀態都會傳回給應用程式。
對於任何其他作業(例如,快取寫入),如果文件系統(或篩選條件)在FSCTL_SET_PURGE_FAILURE_MODE未完成時無法清除區段,則會負責暫止作業,並在未完成FSCTL_SET_PURGE_FAILURE_MODE計數降至零時重新發出。 如果檔案系統(或篩選條件)只傳回失敗狀態(包括上面所列的狀態),該狀態將會傳回給應用程式。
錯誤狀態會在篩選管理員內完全處理,因為重新排入失敗的作業佇列。 這表示篩選兩者都看不見,這具有下列重要影響:
- 行程監視器等文件系統監視工具 不會回報這些作業。
- 如果需要上層篩選,重新發行的作業才會成功,則重新排入佇列的作業將會失敗。 在此情況下,需要篩選寫入器,以確保此第二個篩選條件會傳回失敗狀態。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 |
標頭 | ntifs.h |