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
NtCreateFile 或 NtOpenFile 所傳回的句柄,用於清除其緩衝區的檔案。 這個參數是必要的,而且不能是 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
參數 指向之區塊的大小,以位元組為單位。 此參數目前必須設定為 0。
[out] IoStatusBlock
呼叫端 I/O 狀態區塊的位址。 這個參數是必要的,而且不能是 NULL。
傳回值
NtFlushBuffersFileEx 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:
傳回碼 | 描述 |
---|---|
STATUS_MEDIA_WRITE_PROTECTED | 檔案位於寫入保護的磁碟區上;這是錯誤碼。 |
STATUS_VOLUME_DISMOUNTED | 檔案位於目前未掛接的磁碟區上;這是錯誤碼。 |
STATUS_ACCESS_DENIED | 檔案沒有寫入或附加存取權。 |
言論
小型篩選驅動程式應該呼叫 FltFlushBuffers2,而不是呼叫 NtFlushBuffersFileEx。
舊版文件系統篩選驅動程式可以呼叫 NtFlushBuffersFileEx,針對指定的檔案向文件系統發出 IRP_MJ_FLUSH_BUFFERS 要求。 排清作業是同步的。
NtFlushBuffersFileEx 的呼叫端必須在 IRQL = PASSIVE_LEVEL,且 啟用特殊核心 APC。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (請參閱一節。 |