CcDeferWrite 函数 (ntifs.h)

CcDeferWrite 例程延迟写入缓存文件。 提供后例程时,缓存管理器在可以容纳写入操作时调用。

语法

void CcDeferWrite(
  [in] PFILE_OBJECT            FileObject,
  [in] PCC_POST_DEFERRED_WRITE PostRoutine,
  [in] PVOID                   Context1,
  [in] PVOID                   Context2,
  [in] ULONG                   BytesToWrite,
  [in] BOOLEAN                 Retrying
);

参数

[in] FileObject

指向要向其写入数据的缓存文件的文件对象的指针。

[in] PostRoutine

缓存管理器调用以写入缓存文件的例程的地址。 请注意,即使 CcCanIWrite 刚刚返回 FALSE,也有可能立即调用此例程。

post 例程在 ntifs.h 中定义为:

typedef
VOID (*PCC_POST_DEFERRED_WRITE) (
    _In_ PVOID Context1,
    _In_ PVOID Context2
    );

可以使用当前 IRP 设置为FSRTL_MOD_WRITE_TOP_LEVEL_IRP的 TopLevelIrp 字段调用此函数。

[in] Context1

post 例程在 PostRoutine的第一个参数。

[in] Context2

post 例程在 PostRoutine的第二个参数。

[in] BytesToWrite

要写入的数据字节数。

[in] Retrying

如果请求首次发布,则设置为 FALSE,否则 TRUE

返回值

没有

言论

文件系统在收到 来自 ccCanIWrite的返回值 FALSE 后,通常调用 CcDeferWrite

若要缓存文件,请使用 CcInitializeCacheMap

传递给 PostRoutine 的上下文参数通常是 I/O 请求和相关上下文数据。

要求

要求 价值
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

CcCanIWrite

CcInitializeCacheMap

CcSetDirtyPageThreshold