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 | Flush,但不清除快取。 這對於讀取一致性排清很有用。 |
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表示頁面失效失敗。 請注意,即使您在 Flags 參數中傳遞CC_FLUSH_AND_PURGE_NO_PURGE,頁面失效仍可能會失敗。 請注意,STATUS_CACHE_PAGE_LOCKED是 成功 狀態(也就是說,使用 NT_SUCCESS 巨集進行測試會傳回 TRUE)。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 7 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h, FltKernel.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |