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
如果在檔案上使用 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 TRUE,否則 傳回 FALSE。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |