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 和更高版本操作系统的更改,请参阅“备注”。
目标平台 通用
标头 ntifs.h (包括 Fltkernel.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL

另请参阅

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT