ccSetFileSizesEx 函数 (ntifs.h)

CcSetFileSizesEx 例程更新大小已更改的缓存文件的缓存映射和节对象。

语法

NTSTATUS CcSetFileSizesEx(
  PFILE_OBJECT   FileObject,
  PCC_FILE_SIZES FileSizes
);

参数

FileObject

[in]指向缓存文件的文件对象的指针。

FileSizes

[in]指向包含新文件大小信息的 CC_FILE_SIZES 结构的指针。

返回值

CcSetFileSizesEx 返回STATUS_SUCCESS,如果文件大小已成功更改,并且需要清除成功,则返回 。 否则,它将返回不成功的 NSTATUS 代码(如 STATUS_INSUFFICIENT_RESOURCES),并可能会引发状态异常。

有关在错误时引发状态异常:

  • 如果操作导致 CcSetFileSizesEx 刷新和/或清除文件, 则 CcSetFileSizesEx 不会在出错时引发;它只返回刷新或清除操作的相应非成功 NTSTATUS 代码。

  • 如果操作导致 CcSetFileSizesEx 扩展节,则 CcSetFileSizesEx 将在此扩展期间遇到任何错误时引发。

注解

每当对缓存文件进行以下更改之一时,文件系统必须调用 CcSetFileSizesEx 来更新缓存管理器数据结构:

  • 其分配大小增加。

  • 其有效数据长度减小。

  • 其有效数据长度通过非缓存 I/O 操作增加。

  • 其文件大小增加或减少。

如果操作导致 CcSetFileSizesEx 扩展节并发生故障, 则 CcSetFileSizesEx 将引发该特定失败的状态异常。 例如,如果发生池分配失败, CcSetFileSizesEx 将引发STATUS_INSUFFICIENT_RESOURCES异常。 因此,若要在发生故障时获得控制,驱动程序应在 try-excepttry-finally 语句中包装对 CcSetFileSizesEx 的调用。

文件系统必须确保缓存映射有效,并在调用期间保持有效。

若要缓存文件,请使用 CcInitializeCacheMap

若要获取缓存文件的大小,请将 FileObject 传递给 CcGetFileSizePointer

要求

要求
Header ntifs.h

另请参阅

CcInitializeCacheMap

CcSetCacheFileSizes