Функция 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
Указатель на структуру CC_FILE_SIZES, содержащую AllocationSize, FileSize и ValidDataLength для файла. Эта структура определяется следующим образом:
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
Задайте значение TRUE , если в файле будут использоваться подпрограммы CcPinXxx .
[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
Указатель на контекстную информацию, передаваемую подпрограммам обратного вызова, указанным в разделе Обратные вызовы.
Возвращаемое значение
None
Remarks
CcInitializeCacheMap создает структуры данных, необходимые для кэширования данных файлов.
При возникновении какого-либо сбоя CcInitializeCacheMap создает исключение состояния для этого конкретного сбоя. Например, при сбое выделения пула CcInitializeCacheMap вызывает исключение STATUS_INSUFFICIENT_RESOURCES. Поэтому, чтобы получить контроль в случае сбоя, драйвер должен заключить вызов CcInitializeCacheMap в оператор try-except или try-finally .
Файловые системы должны вызывать CcInitializeCacheMap для кэширования файла перед использованием любых других подпрограмм диспетчера кэша в файле, если файл не был создан с отключенным кэшированием данных. В большинстве файловой системы кэширование файлов включено по умолчанию, но его можно отключить, установив для флага FILE_NO_INTERMEDIATE_BUFFERING значение TRUE в параметрах создания файла.
После вызова CcInitializeCacheMap файловая система может вызвать CcSetAdditionalCacheAttributes , чтобы отключить упреждающее чтение или запись сзади, если это необходимо.
При закрытии файла каждая файловая система, поддерживающая кэширование файлов, должна вызывать ccUninitializeCacheMap для этого файла, независимо от того, кэширован файл или нет. Даже если файл был создан с отключенным кэшированием, файловая система по-прежнему должна вызывать CcUninitializeCacheMap.
Макрос CcIsFileCached определяет, кэшируется ли файл.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Параметры
FileObject[in] [in]
Указатель на объект файла для файла.
Возвращаемое значение
Возвращает значение TRUE , если файл кэширован, в противном случае — ЗНАЧЕНИЕ FALSE .
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по