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 |