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

Parameters が指すブロックのサイズ (バイト単位)。 このパラメーターは、現在 0 に設定する必要があります。

[out] IoStatusBlock

呼び出し元の I/O 状態ブロックのアドレス。 このパラメーターは必須であり、NULL にすることはできません。

戻り値

NtFlushBuffersFileEx は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_MEDIA_WRITE_PROTECTED ファイルは書き込み保護ボリュームに存在します。これはエラー コードです。
STATUS_VOLUME_DISMOUNTED ファイルは、現在マウントされていないボリュームに存在します。これはエラー コードです。
STATUS_ACCESS_DENIED ファイルには書き込みアクセス権も追加アクセス権もありません。

注釈

ミニフィルター ドライバーでは、 NtFlushBuffersFileEx を呼び出す代わりに FltFlushBuffers2 を呼び出す必要があります。

従来のファイル システム フィルター ドライバーは 、NtFlushBuffersFileEx を呼び出して、特定のファイルのファイル システムに IRP_MJ_FLUSH_BUFFERS 要求を発行できます。 フラッシュ操作は同期です。

NtFlushBuffersFileEx の呼び出し元は、IRQL = PASSIVE_LEVELで実行され、特殊なカーネル APC が有効になっている必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)。

こちらもご覧ください

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

NtCreateFile

NtOpenFile