共用方式為


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 開始清除和清除的長度。 如果 NULL 指標傳遞至 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 之前,必須先獨佔取得檔案。

您可以使用 FileOffsetLength 參數,來排清或清除檔案中的任何位元組範圍。 或者,如果您將 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

另請參閱

CcFlushCache

CcPurgeCacheSection