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_OBJECT_POINTERS 结构的指针的指针。
[in, optional] FileOffset
指向一个变量的指针,该变量指定要刷新的起始字节偏移量,或用于刷新和清除。
[in] Length
要刷新或刷新和清除的数据的长度(以字节为单位)从 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_CACHE_PAGE_LOCKED指示页面无效。 请注意,即使 标志 参数中传递CC_FLUSH_AND_PURGE_NO_PURGE,页面失效也会失败。 请注意,STATUS_CACHE_PAGE_LOCKED是 成功 状态(也就是说,使用 NT_SUCCESS 宏对其进行测试将返回 TRUE)。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 7 |
目标平台 | 普遍 |
标头 | ntifs.h(包括 Ntifs.h、FltKernel.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |