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。
備註
要零的檔案可以快取或未快取。 不過,如果檔案不是快取的, StartOffset 和 EndOffset 的值必須是磁碟區扇區大小的倍數。
如果集區設定失敗,且已將 Wait 指定為 TRUE,CcZeroData 會引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 如果集區配置失敗,且已將 Wait 指定為 FALSE,CcZeroData 會傳回 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 和更新版本的作業系統變更,請參閱。 |
目標平台 | Universal |
標頭 | ntifs.h (包括 Fltkernel.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=APC_LEVEL |