ccCanIWrite 函数 (ntifs.h)

CcCanIWrite 例程确定调用方是否可以写入缓存的文件。

语法

BOOLEAN CcCanIWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        BytesToWrite,
  [in] BOOLEAN      Wait,
  [in] UCHAR        Retrying
);

参数

[in] FileObject

指向缓存文件的文件对象的指针。

[in] BytesToWrite

要写入的字节数。

[in] Wait

如果调用方可以进入等待状态,直到它可以写入缓存的文件,则设置为 TRUE,否则设置为 FALSE。

[in] Retrying

如果这是首次为此写入请求调用 CcCanIWrite ,则设置为 FALSE,否则为 TRUE。

返回值

如果缓存管理器可以接受写入请求,CcCanIWrite 将返回 TRUE;否则返回 FALSE。

注解

在调用 CcCopyWrite 或 CcFastCopyWrite 之前,应调用 CcCanIWrite

如果 CcCanIWrite 返回 TRUE,则调用方可以立即调用 CcCopyWriteCcFastCopyWrite

如果 CcCanIWrite 返回 FALSE,则调用方必须改为调用 CcDeferWrite 以延迟写入请求。

一般来说,如果满足以下条件,缓存管理器可以接受写入请求:

  • 要写入的数据量不是太大。

  • 有足够的内存来执行写入操作。

  • 系统缓存中的脏页数不超过 ccDirtyPageThreshold) 脏 页阈值 (。

  • 如果此文件存在每个文件脏页阈值,则系统缓存中此文件的脏页数不会超过此阈值。

若要缓存文件,请使用 CcInitializeCacheMap

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

CcCopyWrite

CcDeferWrite

CcFastCopyWrite

CcInitializeCacheMap

CcSetDirtyPageThreshold