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。 如果缓存文件所需的页已驻留在内存中,则数据将立即为零,并且不会发生阻塞。 如果任何所需页面不驻留,则调用方将处于等待状态,直到所有必需的页面都已驻留,并且数据可以为零。
如果 等待FALSE 并且缓存文件所需的页面尚未驻留在内存中,CcZeroData 将拒绝阻止,并将返回 FALSE。
如果池分配失败,CcZeroData 引发STATUS_INSUFFICIENT_RESOURCES异常。 如果 CcZeroData 遇到任何其他错误(包括 IO 错误),则会将错误引发给调用方。
对于 Windows Vista 和更高版本的 Windows 操作系统,CcZeroData 的行为如下所示:
- 如果流缓存并write_through,则 StartOffset 不必对齐扇区。
- 如果 EndOffset 未对齐,它将向上舍入到下一个扇区大小。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000。 有关 Vista 和更高版本的操作系统的更改,请参阅“备注”。 |
目标平台 | 普遍 |
标头 | ntifs.h (包括 Fltkernel.h、 Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=APC_LEVEL |