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 (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

CcCopyWrite

CcDeferWrite

CcFastCopyWrite

CcInitializeCacheMap

CcSetDirtyPageThreshold