共用方式為


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 指定為 TRUE,CcZeroData 會引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 如果集區配置失敗,且已將 Wait 指定為 FALSE,CcZeroData 會傳回 FALSE,但不會引發例外狀況。

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

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

如果 WaitFALSE ,且快取檔案的必要頁面尚未駐留在記憶體中, CcZeroData 將會拒絕封鎖,並傳回 FALSE

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

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

  • 如果數據流已快取並 write_through,StartOffset 就不需要對齊扇區對齊。
  • 如果 EndOffset 未對齊,則會四捨五入到下一個扇區大小。

規格需求

需求
最低支援的用戶端 Windows 2000。 如需 Vista 和更新版本的作業系統變更,請參閱。
目標平台 Universal
標頭 ntifs.h (包括 Fltkernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <=APC_LEVEL

另請參閱

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT