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
包含 File 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-except 或 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 。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應