ccCoherencyFlushAndPurgeCache 函数 (ntifs.h)
CcCoherencyFlushAndPurgeCache 例程会刷新或刷新和清除缓存,以确保缓存一致性。
语法
void CcCoherencyFlushAndPurgeCache(
[in] PSECTION_OBJECT_POINTERS SectionObjectPointer,
[in, optional] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[out] PIO_STATUS_BLOCK IoStatus,
[in, optional] ULONG Flags
);
参数
[in] SectionObjectPointer
指向包含文件对象的 section 对象指针 的 SECTION_OBJECT_POINTERS 结构的指针。
[in, optional] FileOffset
指向变量的指针,该变量指定要刷新或刷新和清除的起始字节偏移量。
[in] Length
要刷新或刷新和清除的数据的长度(以字节为单位),从 FileOffset 开始。 如果将 NULL 指针传递给 FileOffset,则忽略此参数。
[out] IoStatus
指向调用方分配 的IO_STATUS_BLOCK 结构的指针,该结构接收最终完成状态和有关操作的信息。
[in, optional] Flags
指定如何执行操作的以下标志的位掩码:
值 | 含义 |
---|---|
CC_FLUSH_AND_PURGE_NO_PURGE | 刷新,但不清除缓存。 这对于读取一致性刷新很有用。 |
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS | 保留供系统使用;请勿使用。 |
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN | 当缓存管理器外部没有文件映射时,调用方可以设置此标志,以便跳过剪裁 进程工作集的昂贵操作。 |
返回值
无
备注
尽可能使用 CcCoherencyFlushAndPurgeCache ,而不是显式刷新和清除调用序列,因为它会使用户映射视图失效,以防止数据损坏。 CcCoherencyFlushAndPurgeCache 确保缓存一致性;因此,没有仅通过此函数执行清除的选项。
在调用 CcCoherencyFlushAndPurgeCache 之前,必须以独占方式获取该文件。
可以使用 FileOffset 和 Length 参数刷新、刷新和清除文件中的任何字节范围。 或者,如果将 NULL 指针传递给 FileOffset 参数,则可以刷新或刷新和清除整个文件。
对 CcCoherencyFlushAndPurgeCache 的调用是同步 (阻止) 操作,而不是异步 (非阻塞) 操作。
IoStatus-Status> 值为 STATUS_CACHE_PAGE_LOCKED 表示页面无效失败。 请注意,即使在 Flags 参数中传递CC_FLUSH_AND_PURGE_NO_PURGE,页面无效也可能会失败。 请注意,STATUS_CACHE_PAGE_LOCKED是 成功 状态 (即,使用 NT_SUCCESS 宏对其进行测试将返回 TRUE) 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h、FltKernel.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |