CcSetFileSizesEx 函式 (ntifs.h)
CcSetFileSizesEx 例程會更新快取檔案的快取對應和區段物件,其大小已變更。
語法
NTSTATUS CcSetFileSizesEx(
PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes
);
參數
FileObject
[in]快取檔案之檔案物件的指標。
FileSizes
[in]包含新檔案大小資訊的 CC_FILE_SIZES 結構的指標。
傳回值
CcSetFileSizesEx 傳回STATUS_SUCCESS如果檔案大小成功變更,而且如果需要清除,則清除成功。 否則,它會傳回非成功的 NSTATUS 程式代碼,例如STATUS_INSUFFICIENT_RESOURCES,而且可能會引發狀態例外狀況。
關於在錯誤時引發狀態例外狀況:
如果作業導致 CcSetFileSizesEx 排清和/或清除檔案,CcSetFileSizesEx 將不會引發錯誤:它只會傳回排清或清除作業的適當非成功NTSTATUS程式代碼。
如果作業導致 CcSetFileSizesEx 延伸區段,則 CcSetFileSizesEx 會在此延伸模組期間遇到的任何錯誤時引發。
言論
文件系統必須呼叫 CcSetFileSizesEx,以在對快取檔案進行下列其中一項變更時更新快取管理員數據結構:
其配置大小會增加。
其有效數據長度會減少。
其有效數據長度會由非快取的 I/O 作業增加。
其檔案大小會增加或減少。
如果作業導致 CcSetFileSizesEx 擴充區段併發生失敗,CcSetFileSizesEx 會引發該特定失敗的狀態例外狀況。 例如,如果發生集區配置失敗,CcSetFileSizesEx 引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 因此,若要控制是否發生失敗,驅動程式應該將呼叫包裝在 try-finally 語句
文件系統必須確定快取對應有效,而且會在此呼叫期間維持此狀態。
若要快取檔案,請使用 CcInitializeCacheMap。
若要取得快取檔案的大小,請將 fileObject 傳遞至 CcGetFileSizePointer。
要求
要求 | 價值 |
---|---|
標頭 | ntifs.h |