共用方式為


ZwFlushBuffersFileEx 函式 (ntifs.h)

ZwFlushBuffersFileEx 例程是由文件系統篩選驅動程式呼叫,以將指定檔案的排清要求傳送至文件系統。 選擇性的排清作業旗標可以設定為控制檔案數據寫入記憶體的方式。

語法

NTSYSAPI NTSTATUS ZwFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
        ULONG            FLags,
        PVOID            Parameters,
        ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

參數

[in] FileHandle

ZwCreateFileZwOpenFile 所傳回的句柄, 要清除其緩衝區的檔案。 這是必要參數,而且無法 NULL

FLags

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

價值 意義
FLUSH_FLAGS_FILE_DATA_ONLY

如果檔案位於NTFS檔案系統上,則會寫入檔案快取中的檔案數據。 不會寫入任何元數據,而且基礎記憶體不會同步處理以排清其快取。 此旗標對磁碟區句柄無效。

FLUSH_FLAGS_NO_SYNC

如果檔案位於NTFS檔系統上,則會寫入檔案快取中的檔案數據和元數據。 基礎記憶體不會同步處理以排清其快取。 此旗標對磁碟區句柄無效。

 

Parameters

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

ParametersSize

參數區塊的大小,以位元組為單位。

[out] IoStatusBlock

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

傳回值

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

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

言論

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

小型篩選驅動程式應該呼叫 FltFlushBuffers,而不是呼叫 ZwFlushBuffersFileEx

ZwFlushBuffersFileEx 的呼叫端必須在 IRQL = PASSIVE_LEVEL,且 啟用特殊核心 APC

注意 如果呼叫 ZwFlushBuffersFileEx 函式是在使用者模式中發生,您應該使用名稱 “NtFlushBuffersFileEx”,而不是 “ZwFlushBuffersFileEx”。
 
對於來自內核模式驅動程式的呼叫,Windows Native System Services 例程的 **Nt*Xxx*** 和 **Zw*Xxx*** 版本的行為可能會因處理和解譯輸入參數的方式而不同。 如需有關例程之 **Nt*Xxx*** 和 **Zw*Xxx*** 版本之間的關聯性詳細資訊,請參閱[使用 Nt 和 Zw 版本的原生系統服務例程](/windows-hardware/drivers/kernel/using-nt-and-zw-versions-of-the-native-system-services-routines)。

要求

要求 價值
最低支援的用戶端 Windows 8。
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (請參閱一節。

另請參閱

FltFlushBuffers

IRP_MJ_FLUSH_BUFFERS

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

ZwCreateFile

ZwOpenFile