FltFlushBuffers2 函式 (fltkernel.h)
minifilter 驅動程式會呼叫 FltFlushBuffers2 ,將排清要求傳送至指定檔案的文件系統。
語法
NTSTATUS FLTAPI FltFlushBuffers2(
PFLT_INSTANCE Instance,
PFILE_OBJECT FileObject,
ULONG FlushType,
PFLT_CALLBACK_DATA CallbackData
);
參數
Instance
[in]呼叫迷你篩選驅動程序實例的不透明實例指標。 這個參數是必要的,而且不能是 NULL。
FileObject
[in]要排清之檔案或磁碟區的檔案對象指標。 這個參數是必要的,而且不能是 NULL。
FlushType
[in]指定檔案系統應該在檔案上執行的排清類型。 FlushType 可以是下列其中一項:
FlushType 作業值 | 描述 |
---|---|
0 | 如果 FileObject 適用於檔案,則會寫入檔案快取中的檔案數據和元數據,且基礎記憶體將會同步處理以排清其快取。 如果 FileObject 適用於磁碟區,文件系統將會同時寫入磁碟區上所有已修改檔案的檔案數據和元數據,並將基礎記憶體同步處理以排清其快取。 這項作業相當於 FltFlushBuffers。 |
FLT_FLUSH_TYPE_FLUSH_AND_PURGE | 與 0 (FltFlushBuffers) 相同,不同之處在於排清完成後也會清除快取。 |
FLT_FLUSH_TYPE_FILE_DATA_ONLY | 如果檔案位於NTFS檔案系統上,則只會寫入檔案快取中的檔案數據。 不會寫入任何元數據,而且基礎記憶體不會同步處理以排清其快取。 如果 FileObject 適用於磁碟區,則此旗標無效。 |
FLT_FLUSH_TYPE_NO_SYNC | 如果檔案位於NTFS檔系統上,則會寫入檔案快取中的檔案數據和元數據。 基礎記憶體不會同步處理以排清其快取。 如果 FileObject 適用於磁碟區,則此旗標無效。 |
FLT_FLUSH_TYPE_DATA_SYNC_ONLY | 如果檔案位於NTFS檔案系統上,則會寫入檔案快取中的檔案數據。 未寫入任何元數據。 基礎記憶體會同步處理以排清其快取。 如果 FileObject 是針對磁碟區或目錄,則此旗標無效。 |
CallbackData
[in/optional]用來傳播呼叫端 IRP 延伸模組 之選擇性FLT_CALLBACK_DATA 結構的指標。 請參閱 FltPropagateIrpExtension。
傳回值
FltFlushBuffers2 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:
傳回碼 | Description |
---|---|
STATUS_MEDIA_WRITE_PROTECTED | 檔案位於受寫入保護的磁碟區上。 這是錯誤碼。 |
STATUS_VOLUME_DISMOUNTED | 檔案位於目前未掛接的磁碟區上。 這是錯誤碼。 |
備註
迷你篩選驅動程式可以呼叫 FltFlushBuffers2 ,向指定檔案的文件系統發出 IRP_MJ_FLUSH_BUFFERS 要求。 排清作業是同步的,而且會發出至指定 實例下方的實例 (s) 。
如果檔案位於NTFS文件系統上,迷你篩選可以透過 FlushType 參數控制排清的類型。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1903) |
標頭 | fltkernel.h |