共用方式為


CcZeroData 函式 (ntifs.h)

CcZeroData 例程會將快取或非快取檔案中的指定位元組範圍零。

注意

這個例程只應該呼叫為檔案有效數據長度以外的檔案零部分。 CcZeroData 不會修改任何先前寫入的檔案數據。 若要將先前寫入的數據零到檔案的有效數據長度,請呼叫 CcCopyWrite,或其中一個其他快取寫入介面。

語法

BOOLEAN CcZeroData(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER StartOffset,
  [in] PLARGE_INTEGER EndOffset,
  [in] BOOLEAN        Wait
);

參數

[in] FileObject

檔案 FILE_OBJECT 指標,其中位元組範圍要為零。

[in] StartOffset

變數的指標,指定檔案內的位元組位移至要為零的第一個字節。

[in] EndOffset

變數的指標,指定檔案內的位元組位移至要為零的最後一個字節。

[in] Wait

設定為 TRUE 如果呼叫端應該進入等候狀態,直到整個位元組範圍已零為止。 否則,此參數會設定為 FALSE

傳回值

CcZeroData 如果成功將數據歸零,則會傳回 true;否則,會傳回 FALSE

言論

要為零的檔案可以快取或未快取。 不過,如果檔案未快取,StartOffsetEndOffset 的值都必須是磁碟區扇區大小的倍數。

如果發生集區配置失敗,且 Wait指定為 TRUECcZeroData 會引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 如果集區配置失敗且 Wait 指定為 FALSECcZeroData 會傳回 FALSE,但不會引發例外狀況。

如果提供的 FileObject 未啟用快取,但快取存在於數據流中(也就是相同檔案的另一個檔案對象已啟用快取),則會將零視為已啟用寫入快取。

如果 Wait 設定為 true CcZeroData 保證會完成零數據要求,並傳回 TRUE。 如果快取檔案的必要頁面已存在於記憶體中,則數據會立即為零,而且不會發生封鎖。 如果任何需要的頁面都不是常駐頁面,則呼叫端會進入等候狀態,直到所有必要頁面都已設為常駐,且數據可以零。

如果 Wait FALSE,而且快取檔案的必要頁面尚未存在於記憶體中,CcZeroData 會拒絕封鎖,並且會傳回 FALSE

如果集區配置失敗,CcZeroData 引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 如果 CcZeroData 遇到任何其他錯誤,包括 IO 錯誤,則會將錯誤引發給呼叫端。

針對 Windows Vista 和更新版本的 Windows 操作系統,CcZeroData 的行為如下所示:

  • 如果快取數據流並write_through,StartOffset 不必對齊扇區。
  • 如果 EndOffset 不對齊,則會四捨五入為下一個扇區大小。

要求

要求 價值
最低支援的用戶端 Windows 2000。 如需 Vista 和更新版本的作業系統變更,請參閱。
目標平臺 普遍
標頭 ntifs.h (include Fltkernel.h, Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL

另請參閱

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT