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-excepttry-finally 語句中包裝對 CcSetFileSizesEx 的呼叫。

文件系統必須確定快取對應有效,而且會在此呼叫期間保持此狀態。

若要快取檔案,請使用 CcInitializeCacheMap

若要取得快取檔案的大小,請將 FileObject 傳遞至 CcGetFileSizePointer

規格需求

需求
標頭 ntifs.h

另請參閱

CcInitializeCacheMap

CcSetCacheFileSizes