CcInitializeCacheMap 函数 (ntifs.h)
文件系统调用 CcInitializeCacheMap 例程来缓存文件。
语法
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
参数
[in] FileObject
指向该文件的文件对象的指针。
[in] FileSizes
指向包含 AllocationSize、FileSize以及文件 ValidDataLength 的CC_FILE_SIZES结构的指针。 此结构的定义如下:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
成员 | 意义 |
---|---|
AllocationSize | 文件的新节对象大小。 如果小于或等于当前节大小,则忽略。 |
FileSize | 文件的新文件大小。 |
ValidDataLength | 文件的新有效数据长度。 |
[in] PinAccess
如果将 CcPinXxx 例程用于文件,则设置为 TRUE。
[in] Callbacks
指向从非分页池分配的结构的指针,其中包含调用方提供的预读和写隐藏回调例程的入口点。此结构及其成员的定义如下:
typedef struct _CACHE_MANAGER_CALLBACKS {
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
IN PVOID Context
);
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
IN PVOID Context
);
[in] LazyWriteContext
指向要传递给 回调中指定的回调例程的上下文信息的指针。
返回值
没有
言论
CcInitializeCacheMap 创建文件数据缓存所需的数据结构。
如果发生任何故障,CcInitializeCacheMap 将引发该特定失败的状态异常。 例如,如果发生池分配失败,CcInitializeCacheMap 引发STATUS_INSUFFICIENT_RESOURCES异常。 因此,若要控制是否发生故障,驱动程序应在 try-try-finally 语句中包装对 CcInitializeCacheMap 的调用。
文件系统必须在使用文件的任何其他缓存管理器例程之前调用 CcInitializeCacheMap 来缓存文件,除非文件已禁用数据缓存。 在大多数文件系统中,文件缓存默认处于启用状态,但可以通过在文件创建选项中将FILE_NO_INTERMEDIATE_BUFFERING标志设置为 TRUE 来禁用。
调用 CcInitializeCacheMap后,文件系统可以根据需要调用 CcSetAdditionalCacheAttributes 以禁用预读或写隐藏。
关闭文件时,支持文件缓存的每个文件系统都必须在该文件上调用 CcUninitializeCacheMap,无论该文件是否缓存。 即使文件已禁用缓存,文件系统仍必须调用 CcUninitializeCacheMap。
CcIsFileCached 宏确定是否缓存文件。
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
参数
FileObject[in] [in]
指向该文件的文件对象的指针。
返回值
如果缓存了文件,则返回 TRUE;否则,FALSE。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |