共用方式為


NtFlushBuffersFileEx 函式 (ntifs.h)

NtFlushBuffersFileEx 例程會將指定檔案的排清要求傳送至文件系統。 您可以設定選擇性的排清作業旗標,以控制檔案數據寫入記憶體的方式。

語法

__kernel_entry NTSYSCALLAPI NTSTATUS NtFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
  [in]  ULONG            Flags,
  [in]  PVOID            Parameters,
  [in]  ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

參數

[in] FileHandle

NtCreateFileNtOpenFile 針對要排清其緩衝區的檔案所傳回的句柄。 這個參數是必要的,而且不能是 NULL。

[in] Flags

排清作業旗標。 旗標 可以是下列其中一個值:

意義
0 (一般) 將會寫入檔案快取中的檔案數據和元數據,並同步處理基礎記憶體以排清其快取。 支援的 Windows 檔案系統:NTFS、ReFS、FAT、exFAT。
FLUSH_FLAGS_FILE_DATA_ONLY 將會寫入檔案快取中的檔案數據。 不會寫入任何元數據,而且基礎記憶體不會同步處理以排清其快取。 此旗標對磁碟區句柄無效。 支援的 Windows 檔案系統:NTFS、FAT、exFAT。
FLUSH_FLAGS_NO_SYNC 將會寫入檔案快取中的檔案數據和元數據。 基礎記憶體不會同步處理以排清其快取。 此旗標對磁碟區句柄無效。 支援的 Windows 檔案系統:NTFS、FAT、exFAT。
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 來自指定檔案的數據將會從 Windows 記憶體內部快取寫入。 只有數據擷取所需的元數據將會排清, (時間戳更新將會盡可能略過) 。 基礎記憶體會同步處理以排清其快取。 此旗標對磁碟區或目錄句柄無效。 支援的 Windows 檔案系統:NTFS。

[in] Parameters

具有其他參數之區塊的指標。 此參數目前必須設定為 NULL。

[in] ParametersSize

Parameters 所指向區塊的大小,以位元組為單位。 此參數目前必須設定為 0。

[out] IoStatusBlock

呼叫端 I/O 狀態區塊的位址。 這個參數是必要的,而且不能是 NULL。

傳回值

NtFlushBuffersFileEx 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:

傳回碼 Description
STATUS_MEDIA_WRITE_PROTECTED 檔案位於受寫入保護的磁碟區上;這是錯誤碼。
STATUS_VOLUME_DISMOUNTED 檔案位於目前未掛接的磁碟區上;這是錯誤碼。
STATUS_ACCESS_DENIED 檔案沒有寫入或附加存取權。

備註

Minifilter 驅動程式應該呼叫 FltFlushBuffers2 ,而不是呼叫 NtFlushBuffersFileEx

舊版文件系統篩選驅動程式可以呼叫 NtFlushBuffersFileEx ,對指定檔案的文件系統發出 IRP_MJ_FLUSH_BUFFERS 要求。 排清作業是同步的。

NtFlushBuffersFileEx 的呼叫端必須在 IRQL = PASSIVE_LEVEL且啟用特殊核心 APC 時執行

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
最低支援的用戶端 Windows 8
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅一节。)

另請參閱

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

使用 Nt 和 Zw 版本的原生系統服務例程

NtCreateFile

NtOpenFile