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 清除,但不會清除快取。 這適用于讀取一致性排清。
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS 保留供系統使用;請勿使用 。
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN 當快取管理員外部沒有檔案的對應時,呼叫端可以設定此旗標,以略過修剪 進程工作集的昂貴作業。

傳回值

備註

盡可能使用 CcCoherencyFlushAndPurgeCache ,而不是明確的清除和清除呼叫順序,因為它會使使用者對應的檢視失效,以防止資料損毀。 CcCoherencyFlushAndPurgeCache 可確保快取一致性;因此,沒有選項只能透過此函式執行清除。

您必須先獨佔取得檔案,才能呼叫 CcCoherencyFlushAndPurgeCache

您可以使用 FileOffsetLength 參數,排清或清除檔案內的任何位元組範圍。 或者,如果您將 Null 指標傳遞至 FileOffset 參數,則可以排清或清除或清除整個檔案。

對 CcCoherencyFlushAndPurgeCache的呼叫是同步 (封鎖) 作業,而不是非同步 (非封鎖) 作業。

STATUS_CACHE_PAGE_LOCKED的 IoStatus-Status >值表示頁面失效失敗。 請注意,即使您在 Flags 參數中傳遞CC_FLUSH_AND_PURGE_NO_PURGE,頁面失效仍可能會失敗。 請注意,STATUS_CACHE_PAGE_LOCKED是 成功 狀態 (,也就是使用 NT_SUCCESS 宏進行測試會傳回 TRUE) 。

必要條件

   
最低支援的用戶端 可在 Windows 7 和更新版本中使用
目標平臺 環球
標頭 ntifs.h (包括 Ntifs.h、FltKernel.h)
程式庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另請參閱

CcFlushCache

CcPurgeCacheSection