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 (「解説」セクションを参照)。 |